]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: adc: ad7173: fix setting ODR in probe
authorDavid Lechner <dlechner@baylibre.com>
Thu, 10 Jul 2025 20:43:40 +0000 (15:43 -0500)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 16 Jul 2025 07:47:50 +0000 (08:47 +0100)
Fix the setting of the ODR register value in the probe function for
AD7177. The AD7177 chip has a different ODR value after reset than the
other chips (0x7 vs. 0x0) and 0 is a reserved value on that chip.

The driver already has this information available in odr_start_value
and uses it when checking valid values when writing to the
sampling_frequency attribute, but failed to set the correct initial
value in the probe function.

Fixes: 37ae8381ccda ("iio: adc: ad7173: add support for additional models")
Signed-off-by: David Lechner <dlechner@baylibre.com>
Link: https://patch.msgid.link/20250710-iio-adc-ad7173-fix-setting-odr-in-probe-v1-1-78a100fec998@baylibre.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7173.c

index 2173455c016962bc8f2e67cdc693da86bcaaf55d..4413207be28f60a4d9529e3522f5d2fd6276bcc2 100644 (file)
@@ -1589,6 +1589,7 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev)
                chan_st_priv->cfg.bipolar = false;
                chan_st_priv->cfg.input_buf = st->info->has_input_buf;
                chan_st_priv->cfg.ref_sel = AD7173_SETUP_REF_SEL_INT_REF;
+               chan_st_priv->cfg.odr = st->info->odr_start_value;
                chan_st_priv->cfg.openwire_comp_chan = -1;
                st->adc_mode |= AD7173_ADC_MODE_REF_EN;
                if (st->info->data_reg_only_16bit)
@@ -1655,7 +1656,7 @@ static int ad7173_fw_parse_channel_config(struct iio_dev *indio_dev)
                chan->scan_index = chan_index;
                chan->channel = ain[0];
                chan_st_priv->cfg.input_buf = st->info->has_input_buf;
-               chan_st_priv->cfg.odr = 0;
+               chan_st_priv->cfg.odr = st->info->odr_start_value;
                chan_st_priv->cfg.openwire_comp_chan = -1;
 
                chan_st_priv->cfg.bipolar = fwnode_property_read_bool(child, "bipolar");