Commit 5fdfc48b authored by Leo Yan's avatar Leo Yan Committed by Eduardo Valentin

thermal: hisilicon: increase temperature resolution

When calculate temperature, old code firstly do division and then
convert to "millicelsius" unit. This will lose resolution and only can
read back temperature with "Celsius" unit.

So firstly scale step value to "millicelsius" and then do division, so
finally we can increase resolution for temperature value. Also refine
the calculation from temperature value to step value.
Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
parent 913f2010
...@@ -68,12 +68,12 @@ static inline int _step_to_temp(int step) ...@@ -68,12 +68,12 @@ static inline int _step_to_temp(int step)
* Every step equals (1 * 200) / 255 celsius, and finally * Every step equals (1 * 200) / 255 celsius, and finally
* need convert to millicelsius. * need convert to millicelsius.
*/ */
return (HISI_TEMP_BASE + (step * 200 / 255)) * 1000; return (HISI_TEMP_BASE * 1000 + (step * 200000 / 255));
} }
static inline long _temp_to_step(long temp) static inline long _temp_to_step(long temp)
{ {
return ((temp / 1000 - HISI_TEMP_BASE) * 255 / 200); return ((temp - HISI_TEMP_BASE * 1000) * 255) / 200000;
} }
static long hisi_thermal_get_sensor_temp(struct hisi_thermal_data *data, static long hisi_thermal_get_sensor_temp(struct hisi_thermal_data *data,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment