Temperature reads on bmp280 device always return 0,
due to a missing step in the compensation formula
(data->tfine is never initialized).
Initialize data->tfine value so we get correct
temperature and pressure values.
Signed-off-by: Irina Tirdea <[email protected]>
---
drivers/iio/pressure/bmp280.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/iio/pressure/bmp280.c b/drivers/iio/pressure/bmp280.c
index 7c623e2..a2602d8 100644
--- a/drivers/iio/pressure/bmp280.c
+++ b/drivers/iio/pressure/bmp280.c
@@ -172,6 +172,7 @@ static s32 bmp280_compensate_temp(struct bmp280_data *data,
var2 = (((((adc_temp >> 4) - ((s32)le16_to_cpu(buf[T1]))) *
((adc_temp >> 4) - ((s32)le16_to_cpu(buf[T1])))) >> 12) *
((s32)(s16)le16_to_cpu(buf[T3]))) >> 14;
+ data->t_fine = var1 + var2;
return (data->t_fine * 5 + 128) >> 8;
}
--
1.9.1
On Wed, Apr 08, 2015 at 06:26:12PM +0300, Irina Tirdea wrote:
> Temperature reads on bmp280 device always return 0,
> due to a missing step in the compensation formula
> (data->tfine is never initialized).
>
> Initialize data->tfine value so we get correct
> temperature and pressure values.
>
> Signed-off-by: Irina Tirdea <[email protected]>
Reviewed-by: Vlad Dogaru <[email protected]>
Nice catch, this must have been lost during a refactoring.
Thanks,
Vlad
On 08/04/15 16:30, Vlad Dogaru wrote:
> On Wed, Apr 08, 2015 at 06:26:12PM +0300, Irina Tirdea wrote:
>> Temperature reads on bmp280 device always return 0,
>> due to a missing step in the compensation formula
>> (data->tfine is never initialized).
>>
>> Initialize data->tfine value so we get correct
>> temperature and pressure values.
>>
>> Signed-off-by: Irina Tirdea <[email protected]>
>
> Reviewed-by: Vlad Dogaru <[email protected]>
>
> Nice catch, this must have been lost during a refactoring.
>
> Thanks,
> Vlad
>
Thanks,
Applied to fixes-togreg which is now based on staging-next
which gives you an idea of when this will go to Greg now!