On Wed, 29 Apr 2020 20:48:54 +0200 Andreas Klinger <ak@xxxxxxxxxxxxx> wrote: > Output of humidity compensation is limited to the range between 0 and > 100 percent. Add this to the compensation formula as described in the > datasheet chapter 4.2.3. More details needed... 1. Fixes tag 2. What is the result of this not being clamped? What happens if I set a value outside that range? > > Change to v1: > Thanks to Tomasz for suggesting the easier to use function clamp_val() > which is now used. Change log belongs below the --- > > Signed-off-by: Andreas Klinger <ak@xxxxxxxxxxxxx> > --- Here for changelog. > drivers/iio/pressure/bmp280-core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/iio/pressure/bmp280-core.c b/drivers/iio/pressure/bmp280-core.c > index 29c209cc1108..297ee2205bf6 100644 > --- a/drivers/iio/pressure/bmp280-core.c > +++ b/drivers/iio/pressure/bmp280-core.c > @@ -271,6 +271,8 @@ static u32 bmp280_compensate_humidity(struct bmp280_data *data, > + (s32)2097152) * calib->H2 + 8192) >> 14); > var -= ((((var >> 15) * (var >> 15)) >> 7) * (s32)calib->H1) >> 4; > > + var = clamp_val(var, 0, 419430400); > + > return var >> 12; > }; >