iio: ti-adc12138: Use scan_type when processing raw data
authorGwendal Grignou <gwendal@chromium.org>
Thu, 4 Nov 2021 08:24:09 +0000 (01:24 -0700)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 17 Nov 2021 17:51:42 +0000 (17:51 +0000)
Use channel definition as root of trust and replace constant
when reading elements directly using the raw sysfs attributes.

Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Link: https://lore.kernel.org/r/20211104082413.3681212-10-gwendal@chromium.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ti-adc12138.c

index fcd5d39..5b5d452 100644 (file)
@@ -239,7 +239,8 @@ static int adc12138_read_raw(struct iio_dev *iio,
                if (ret)
                        return ret;
 
-               *value = sign_extend32(be16_to_cpu(data) >> 3, 12);
+               *value = sign_extend32(be16_to_cpu(data) >> channel->scan_type.shift,
+                                      channel->scan_type.realbits - 1);
 
                return IIO_VAL_INT;
        case IIO_CHAN_INFO_SCALE: