hwmon:(f71882fg) Fix minus temperature
PATCH v2 1/1 hwmon:(f71882fg) Fix minus temperature
All temperature of Fintek superio hwmonitor that using 1-byte reg will use 2's complement.
In show_temp()
temp = data->temp[nr] * 1000;
When data->temp[nr] read as 255, it indicate -1C, but this code will report 255C to userspace. It'll be ok when change to:
temp = ((s8)data->temp[nr]) * 1000;
Signed-off-by Ji-Ze Hong (Peter Hong) <[email protected]>
--- drivers/hwmon/f71882fg.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/hwmon/f71882fg.c +3 -2
@@ -1578,8 +1578,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr, temp *=125 ;if (sign) temp -=128000 ; - }else - temp = data->temp[nr] *1000 ; + }else { + temp = ((s8 )data->temp[nr]) *1000 ; + }return sprintf (buf,"%d\n" , temp); }
Signature · 1 line
2.17.1
Quoted 11 lines · Ji-Ze Hong (Peter Hong)
All temperature of Fintek superio hwmonitor that using 1-byte reg will use 2's complement.
In
show_temp()temp = data->temp[nr] * 1000;When data->temp[nr] read as 255, it indicate -1C, but this code will report 255C to userspace. It'll be ok when change to:
temp = ((s8)data->temp[nr]) * 1000;Signed-off-by Ji-Ze Hong (Peter Hong) <[email protected]>
Applied.
Thanks,
Guenter
Quoted 20 lines
--- drivers/hwmon/f71882fg.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)drivers/hwmon/f71882fg.c +3
-2@@ -1578,8 +1578,9 @@ static ssize_t show_temp(struct device *dev, struct device_attribute *devattr, temp *=125 ;if (sign) temp -=128000 ; - }else - temp = data->temp[nr] *1000 ; + }else { + temp = ((s8 )data->temp[nr]) *1000 ; + }return sprintf (buf,"%d\n" , temp); }