hwmon: (sht15) Fix sht15_calc_temp
PATCH 1/1 hwmon: (sht15) Fix sht15_calc_temp
From: Jerome Oufella <[email protected]>
I discovered two issues.
First the previous sht15_calc_temp() loop did not iterate through the temppoints array since the (data->supply_uV > temppoints[i - 1].vdd) test is always true in this direction.
Also the two-points linear interpolation function was returning biased values due to a stray division by 1000 which shouldn't be there.
[JD: Also change the default value for d1 from 0 to something saner.]
Signed-off-by Jerome Oufella <[email protected]>
Acked-by Jonathan Cameron <[email protected]>
Signed-off-by Jean Delvare <[email protected]>
--- drivers/hwmon/sht15.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/hwmon/sht15.c +3 -3
@@ -302,13 +302,13 @@ error_ret:**/ static inline int sht15_calc_temp (struct sht15_data *data) { -int d1 =0 ; +int d1 = temppoints[0 ].d1;int i; -for (i =1 ; i <ARRAY_SIZE (temppoints); i++) +for (i =ARRAY_SIZE (temppoints) -1 ; i >0 ; i--)/* Find pointer to interpolate */ if (data->supply_uV > temppoints[i -1 ].vdd) { - d1 = (data->supply_uV/1000 - temppoints[i -1 ].vdd) + d1 = (data->supply_uV - temppoints[i -1 ].vdd) * (temppoints[i].d1 - temppoints[i -1 ].d1) / (temppoints[i].vdd - temppoints[i -1 ].vdd) + temppoints[i -1 ].d1;
Signature · 6 lines
Jean Delvare _______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors