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: Nicola Corna <nicola@corna.info>
Reviewed-by: Hartmut Knaack <knaack.h@gmx.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
                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)