iio: adc: adi-axi-adc: add num lanes support

Add support for setting the number of lanes enabled.

Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Signed-off-by: Antoniu Miclaus <antoniu.miclaus@analog.com>
Link: https://patch.msgid.link/20250516082630.8236-8-antoniu.miclaus@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
Antoniu Miclaus 2025-05-16 11:26:27 +03:00 committed by Jonathan Cameron
parent d2ca659c3d
commit 569ddc4116

View File

@ -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_NUM_LANES_MSK GENMASK(12, 8)
#define ADI_AXI_ADC_CTRL_SYNC_MSK BIT(3)
#define ADI_AXI_ADC_CTRL_DDR_EDGESEL_MASK BIT(1)
@ -438,6 +439,19 @@ static int axi_adc_ad408x_interface_data_align(struct iio_backend *back,
1, timeout_us);
}
static int axi_adc_num_lanes_set(struct iio_backend *back,
unsigned int num_lanes)
{
struct adi_axi_adc_state *st = iio_backend_get_priv(back);
if (!num_lanes)
return -EINVAL;
return regmap_update_bits(st->regmap, ADI_AXI_ADC_REG_CTRL,
ADI_AXI_ADC_CTRL_NUM_LANES_MSK,
FIELD_PREP(ADI_AXI_ADC_CTRL_NUM_LANES_MSK, num_lanes));
}
static struct iio_buffer *axi_adc_request_buffer(struct iio_backend *back,
struct iio_dev *indio_dev)
{
@ -628,6 +642,7 @@ static const struct iio_backend_ops adi_ad408x_ops = {
.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,
.num_lanes_set = axi_adc_num_lanes_set,
.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),
};