mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
IIO: bmp280-core.c: fix error in humidity calculation
commit ed3730c435 upstream.
While calculating the compensation of the humidity there are negative values
interpreted as unsigned because of unsigned variables used. These values as
well as the constants need to be casted to signed as indicated by the
documentation of the sensor.
Signed-off-by: Andreas Klinger <ak@it-klinger.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Matt Ranostay <matt.ranostay@konsulko.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a03176f92a
commit
dfb450b2b6
@@ -175,11 +175,12 @@ static u32 bmp280_compensate_humidity(struct bmp280_data *data,
|
||||
}
|
||||
H6 = sign_extend32(tmp, 7);
|
||||
|
||||
var = ((s32)data->t_fine) - 76800;
|
||||
var = ((((adc_humidity << 14) - (H4 << 20) - (H5 * var)) + 16384) >> 15)
|
||||
* (((((((var * H6) >> 10) * (((var * H3) >> 11) + 32768)) >> 10)
|
||||
+ 2097152) * H2 + 8192) >> 14);
|
||||
var -= ((((var >> 15) * (var >> 15)) >> 7) * H1) >> 4;
|
||||
var = ((s32)data->t_fine) - (s32)76800;
|
||||
var = ((((adc_humidity << 14) - (H4 << 20) - (H5 * var))
|
||||
+ (s32)16384) >> 15) * (((((((var * H6) >> 10)
|
||||
* (((var * (s32)H3) >> 11) + (s32)32768)) >> 10)
|
||||
+ (s32)2097152) * H2 + 8192) >> 14);
|
||||
var -= ((((var >> 15) * (var >> 15)) >> 7) * (s32)H1) >> 4;
|
||||
|
||||
return var >> 12;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user