iio: chemical: scd4x: Add a scale for the co2 concentration reading
authorRoan van Dijk <roan@protonic.nl>
Thu, 21 Oct 2021 14:00:18 +0000 (16:00 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Thu, 21 Oct 2021 19:53:11 +0000 (20:53 +0100)
This patch adds a scale for the co2 concentration reading. The reading is
expressed in percent after applying the scale to the raw value.

Signed-off-by: Roan van Dijk <roan@protonic.nl>
Link: https://lore.kernel.org/r/20211021140018.3051213-1-roan@protonic.nl
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/chemical/scd4x.c

index ebebcb117ba2f3b29372a5f36b22964ac7ee5cd4..267bc3c053380b30375a53cc2c9680726e278fc4 100644 (file)
@@ -353,7 +353,11 @@ static int scd4x_read_raw(struct iio_dev *indio_dev,
                *val = ret;
                return IIO_VAL_INT;
        case IIO_CHAN_INFO_SCALE:
-               if (chan->type == IIO_TEMP) {
+               if (chan->type == IIO_CONCENTRATION) {
+                       *val = 0;
+                       *val2 = 100;
+                       return IIO_VAL_INT_PLUS_MICRO;
+               } else if (chan->type == IIO_TEMP) {
                        *val = 175000;
                        *val2 = 65536;
                        return IIO_VAL_FRACTIONAL;
@@ -503,7 +507,8 @@ static const struct iio_chan_spec scd4x_channels[] = {
                .type = IIO_CONCENTRATION,
                .channel2 = IIO_MOD_CO2,
                .modified = 1,
-               .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
+               .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
+                                       BIT(IIO_CHAN_INFO_SCALE),
                .address = SCD4X_CO2,
                .scan_index = SCD4X_CO2,
                .scan_type = {