]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: at91-sama5d2_adc: check return status for pressure and touch
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Wed, 3 Aug 2022 10:28:38 +0000 (13:28 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 15 Aug 2022 21:29:57 +0000 (22:29 +0100)
Check return status of at91_adc_read_position() and
at91_adc_read_pressure() in at91_adc_read_info_raw().

Fixes: 6794e23fa3fe ("iio: adc: at91-sama5d2_adc: add support for oversampling resolution")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Link: https://lore.kernel.org/r/20220803102855.2191070-3-claudiu.beznea@microchip.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/at91-sama5d2_adc.c

index ac9ef89fba17835fc8d5ec4aedf36135e9af4849..08d1f806c839861c18681759af0181fc49529bc3 100644 (file)
@@ -1544,8 +1544,10 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
                *val = tmp_val;
                mutex_unlock(&st->lock);
                iio_device_release_direct_mode(indio_dev);
+               if (ret > 0)
+                       ret = at91_adc_adjust_val_osr(st, val);
 
-               return at91_adc_adjust_val_osr(st, val);
+               return ret;
        }
        if (chan->type == IIO_PRESSURE) {
                ret = iio_device_claim_direct_mode(indio_dev);
@@ -1558,8 +1560,10 @@ static int at91_adc_read_info_raw(struct iio_dev *indio_dev,
                *val = tmp_val;
                mutex_unlock(&st->lock);
                iio_device_release_direct_mode(indio_dev);
+               if (ret > 0)
+                       ret = at91_adc_adjust_val_osr(st, val);
 
-               return at91_adc_adjust_val_osr(st, val);
+               return ret;
        }
 
        /* in this case we have a voltage channel */