Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>

authored by

Leo Yan and committed by
Eduardo Valentin
5fdfc48b 913f2010

+2 -2
+2 -2
drivers/thermal/hisi_thermal.c
··· 68 68 * Every step equals (1 * 200) / 255 celsius, and finally 69 69 * need convert to millicelsius. 70 70 */ 71 - return (HISI_TEMP_BASE + (step * 200 / 255)) * 1000; 71 + return (HISI_TEMP_BASE * 1000 + (step * 200000 / 255)); 72 72 } 73 73 74 74 static inline long _temp_to_step(long temp) 75 75 { 76 - return ((temp / 1000 - HISI_TEMP_BASE) * 255 / 200); 76 + return ((temp - HISI_TEMP_BASE * 1000) * 255) / 200000; 77 77 } 78 78 79 79 static long hisi_thermal_get_sensor_temp(struct hisi_thermal_data *data,