]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: adc: ad4030: Fix _scale value for common-mode channels
authorMarcelo Schmitt <marcelo.schmitt@analog.com>
Thu, 18 Sep 2025 17:37:27 +0000 (14:37 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 6 Dec 2025 21:27:35 +0000 (06:27 +0900)
commit ffc74ad539136ae9e16f7b5f2e4582e88018cd49 upstream.

Previously, the driver always used the amount of precision bits of
differential input channels to provide the scale to mV. Though,
differential and common-mode voltage channels have different amount of
precision bits and the correct number of precision bits must be considered
to get to a proper mV scale factor for each one. Use channel specific
number of precision bits to provide the correct scale value for each
channel.

Fixes: de67f28abe58 ("iio: adc: ad4030: check scan_type for error")
Fixes: 949abd1ca5a4 ("iio: adc: ad4030: add averaging support")
Signed-off-by: Marcelo Schmitt <marcelo.schmitt@analog.com>
Reviewed-by: David Lechner <dlechner@baylibre.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/adc/ad4030.c

index 1bc2f9a2247081e166680232aa6d4aebc5f41b89..d8bee6a4215a35a18a8d15d33ec2287d08edf962 100644 (file)
@@ -385,7 +385,7 @@ static int ad4030_get_chan_scale(struct iio_dev *indio_dev,
        struct ad4030_state *st = iio_priv(indio_dev);
        const struct iio_scan_type *scan_type;
 
-       scan_type = iio_get_current_scan_type(indio_dev, st->chip->channels);
+       scan_type = iio_get_current_scan_type(indio_dev, chan);
        if (IS_ERR(scan_type))
                return PTR_ERR(scan_type);