[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250508123107.3797042-3-pop.ioan-daniel@analog.com>
Date: Thu, 8 May 2025 15:30:55 +0300
From: Pop Ioan Daniel <pop.ioan-daniel@...log.com>
To: Lars-Peter Clausen <lars@...afoo.de>,
Michael Hennerich
<Michael.Hennerich@...log.com>,
Jonathan Cameron <jic23@...nel.org>,
"David
Lechner" <dlechner@...libre.com>,
Nuno Sá
<nuno.sa@...log.com>,
Andy Shevchenko <andy@...nel.org>, Rob Herring
<robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley
<conor+dt@...nel.org>,
Sergiu Cuciurean <sergiu.cuciurean@...log.com>,
"Dragos Bogdan" <dragos.bogdan@...log.com>,
Antoniu Miclaus
<antoniu.miclaus@...log.com>,
Olivier Moysan <olivier.moysan@...s.st.com>,
Javier Carrasco <javier.carrasco.cruz@...il.com>,
Matti Vaittinen
<mazziesaccount@...il.com>,
Tobias Sperling <tobias.sperling@...ting.com>,
Marcelo Schmitt <marcelo.schmitt@...log.com>,
Alisa-Dariana Roman
<alisadariana@...il.com>,
Esteban Blanc <eblanc@...libre.com>,
Ioan Daniel
<pop.ioan-daniel@...log.com>, <linux-iio@...r.kernel.org>,
<devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: [PATCH v2 2/4] iio: adc: adi-axi-adc: add set decimation rate
Add support for setting decimation rate.
Signed-off-by: Pop Ioan Daniel <pop.ioan-daniel@...log.com>
---
changes in v2:
- update ADI_AXI_ADC_REG_CHAN_USR_CTRL_2 register in a per-channel register
- rename ADI_AXI_ADC_DEC_RATE_MASK in
ADI_AXI_ADC_CHAN_USR_CTRL_2_DEC_RATE_N_MASK
- add channel index parameter to keep axi_adc_set_dec_rate generic
- remove ad7405 chip-specific struct
drivers/iio/adc/adi-axi-adc.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/iio/adc/adi-axi-adc.c b/drivers/iio/adc/adi-axi-adc.c
index 9e8c30230791..33eb8f337e0b 100644
--- a/drivers/iio/adc/adi-axi-adc.c
+++ b/drivers/iio/adc/adi-axi-adc.c
@@ -80,6 +80,9 @@
#define ADI_AXI_ADC_REG_CHAN_CTRL_3(c) (0x0418 + (c) * 0x40)
#define ADI_AXI_ADC_CHAN_PN_SEL_MASK GENMASK(19, 16)
+#define ADI_AXI_ADC_REG_CHAN_USR_CTRL_2(c) (0x0424 + (c) * 0x40)
+#define ADI_AXI_ADC_CHAN_USR_CTRL_2_DEC_RATE_N_MASK GENMASK(15, 0)
+
/* IO Delays */
#define ADI_AXI_ADC_REG_DELAY(l) (0x0800 + (l) * 0x4)
#define AXI_ADC_DELAY_CTRL_MASK GENMASK(4, 0)
@@ -242,6 +245,17 @@ static int axi_adc_test_pattern_set(struct iio_backend *back,
}
}
+static int axi_adc_set_dec_rate(struct iio_backend *back, unsigned int chan,
+ unsigned int rate)
+{
+ struct adi_axi_adc_state *st = iio_backend_get_priv(back);
+
+ return regmap_update_bits(st->regmap,
+ ADI_AXI_ADC_REG_CHAN_USR_CTRL_2(chan),
+ ADI_AXI_ADC_CHAN_USR_CTRL_2_DEC_RATE_N_MASK,
+ FIELD_PREP(ADI_AXI_ADC_CHAN_USR_CTRL_2_DEC_RATE_N_MASK, rate));
+}
+
static int axi_adc_read_chan_status(struct adi_axi_adc_state *st, unsigned int chan,
unsigned int *status)
{
@@ -550,6 +564,7 @@ static const struct iio_backend_ops adi_axi_adc_ops = {
.test_pattern_set = axi_adc_test_pattern_set,
.chan_status = axi_adc_chan_status,
.interface_type_get = axi_adc_interface_type_get,
+ .oversampling_ratio_set = axi_adc_set_dec_rate,
.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),
};
--
2.34.1
Powered by blists - more mailing lists