mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 09:33:31 +02:00
iio: adc: adi-axi-adc: add data align process
Add support for starting the sync process used for data capture alignment. Reviewed-by: Nuno Sá <nuno.sa@analog.com> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com> Link: https://patch.msgid.link/20250516082630.8236-7-antoniu.miclaus@analog.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
8ee8009420
commit
d2ca659c3d
|
|
@ -44,6 +44,7 @@
|
|||
#define ADI_AXI_ADC_REG_CONFIG_CMOS_OR_LVDS_N BIT(7)
|
||||
|
||||
#define ADI_AXI_ADC_REG_CTRL 0x0044
|
||||
#define ADI_AXI_ADC_CTRL_SYNC_MSK BIT(3)
|
||||
#define ADI_AXI_ADC_CTRL_DDR_EDGESEL_MASK BIT(1)
|
||||
|
||||
#define ADI_AXI_ADC_REG_CNTRL_3 0x004c
|
||||
|
|
@ -54,6 +55,9 @@
|
|||
#define AXI_AD485X_PACKET_FORMAT_32BIT 0x2
|
||||
#define AXI_AD408X_CNTRL_3_FILTER_EN_MSK BIT(0)
|
||||
|
||||
#define ADI_AXI_ADC_REG_SYNC_STATUS 0x0068
|
||||
#define ADI_AXI_ADC_SYNC_STATUS_ADC_SYNC_MSK BIT(0)
|
||||
|
||||
#define ADI_AXI_ADC_REG_DRP_STATUS 0x0074
|
||||
#define ADI_AXI_ADC_DRP_LOCKED BIT(17)
|
||||
|
||||
|
|
@ -416,6 +420,24 @@ static int axi_adc_ad408x_filter_type_set(struct iio_backend *back,
|
|||
AXI_AD408X_CNTRL_3_FILTER_EN_MSK);
|
||||
}
|
||||
|
||||
static int axi_adc_ad408x_interface_data_align(struct iio_backend *back,
|
||||
u32 timeout_us)
|
||||
{
|
||||
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
ret = regmap_set_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
|
||||
ADI_AXI_ADC_CTRL_SYNC_MSK);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return regmap_read_poll_timeout(st->regmap, ADI_AXI_ADC_REG_SYNC_STATUS,
|
||||
val,
|
||||
FIELD_GET(ADI_AXI_ADC_SYNC_STATUS_ADC_SYNC_MSK, val),
|
||||
1, timeout_us);
|
||||
}
|
||||
|
||||
static struct iio_buffer *axi_adc_request_buffer(struct iio_backend *back,
|
||||
struct iio_dev *indio_dev)
|
||||
{
|
||||
|
|
@ -605,6 +627,7 @@ static const struct iio_backend_ops adi_ad408x_ops = {
|
|||
.free_buffer = axi_adc_free_buffer,
|
||||
.data_sample_trigger = axi_adc_data_sample_trigger,
|
||||
.filter_type_set = axi_adc_ad408x_filter_type_set,
|
||||
.interface_data_align = axi_adc_ad408x_interface_data_align,
|
||||
.debugfs_reg_access = iio_backend_debugfs_ptr(axi_adc_reg_access),
|
||||
.debugfs_print_chan_status = iio_backend_debugfs_ptr(axi_adc_debugfs_print_chan_status),
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user