Commit ecf7e207 authored by Nicola Corna's avatar Nicola Corna Committed by Jonathan Cameron

iio: humidity: si7020: replaced bitmask on humidity values with range check

The maximum possible value for the relative humidity is 55575 (100%RH).
This value, if shifted right by 2 bits, uses 14 bits and masking it with
a 12 bit mask removes 2 meaningful bits.
The masking has been replaced with a range check that sets the minimum
value at 786 (0%RH) and the maximum at 13893 (99.998%RH).
Signed-off-by: default avatarNicola Corna <nicola@corna.info>
Reviewed-by: default avatarHartmut Knaack <knaack.h@gmx.de>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent ab6ff6c6
...@@ -57,8 +57,12 @@ static int si7020_read_raw(struct iio_dev *indio_dev, ...@@ -57,8 +57,12 @@ static int si7020_read_raw(struct iio_dev *indio_dev,
if (ret < 0) if (ret < 0)
return ret; return ret;
*val = ret >> 2; *val = ret >> 2;
/*
* Humidity values can slightly exceed the 0-100%RH
* range and should be corrected by software
*/
if (chan->type == IIO_HUMIDITYRELATIVE) if (chan->type == IIO_HUMIDITYRELATIVE)
*val &= GENMASK(11, 0); *val = clamp_val(*val, 786, 13893);
return IIO_VAL_INT; return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
if (chan->type == IIO_TEMP) if (chan->type == IIO_TEMP)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment