iio: humidity: si7020: replaced bitmask on humidity values with range check
[linux-2.6-block.git] / drivers / iio / humidity / si7020.c
index fa3b809aff5efd425ce96031aec1c066b644feb2..12128d1ca570fc4dd93461219628b6ab6461d95d 100644 (file)
@@ -57,8 +57,12 @@ static int si7020_read_raw(struct iio_dev *indio_dev,
                if (ret < 0)
                        return ret;
                *val = ret >> 2;
+               /*
+                * Humidity values can slightly exceed the 0-100%RH
+                * range and should be corrected by software
+                */
                if (chan->type == IIO_HUMIDITYRELATIVE)
-                       *val &= GENMASK(11, 0);
+                       *val = clamp_val(*val, 786, 13893);
                return IIO_VAL_INT;
        case IIO_CHAN_INFO_SCALE:
                if (chan->type == IIO_TEMP)