Message ID | 20200429184852.GA17547@arbad (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] iio: bmp280: fix compensation of humidity | expand |
On Wed, 29 Apr 2020 20:48:54 +0200 Andreas Klinger <ak@it-klinger.de> 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@it-klinger.de> > --- 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; > }; >
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; };
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. Change to v1: Thanks to Tomasz for suggesting the easier to use function clamp_val() which is now used. Signed-off-by: Andreas Klinger <ak@it-klinger.de> --- drivers/iio/pressure/bmp280-core.c | 2 ++ 1 file changed, 2 insertions(+)