Commit 133d324d authored by Jean Delvare's avatar Jean Delvare Committed by Guenter Roeck

hwmon: (w83627ehf) Fix negative 8-bit temperature values

Since 8-bit temperature values are now handled in 16-bit struct
members, values have to be cast to s8 for negative temperatures to be
properly handled. This is broken since kernel version 2.6.39
(commit bce26c58.)
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Cc: Guenter Roeck <guenter.roeck@ericsson.com>
Cc: stable@kernel.org	# 2.6.39+
Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent 899e3ee4
...@@ -390,7 +390,7 @@ temp_from_reg(u16 reg, s16 regval) ...@@ -390,7 +390,7 @@ temp_from_reg(u16 reg, s16 regval)
{ {
if (is_word_sized(reg)) if (is_word_sized(reg))
return LM75_TEMP_FROM_REG(regval); return LM75_TEMP_FROM_REG(regval);
return regval * 1000; return ((s8)regval) * 1000;
} }
static inline u16 static inline u16
...@@ -398,7 +398,8 @@ temp_to_reg(u16 reg, long temp) ...@@ -398,7 +398,8 @@ temp_to_reg(u16 reg, long temp)
{ {
if (is_word_sized(reg)) if (is_word_sized(reg))
return LM75_TEMP_TO_REG(temp); return LM75_TEMP_TO_REG(temp);
return DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000), 1000); return (s8)DIV_ROUND_CLOSEST(SENSORS_LIMIT(temp, -127000, 128000),
1000);
} }
/* Some of analog inputs have internal scaling (2x), 8mV is ADC LSB */ /* Some of analog inputs have internal scaling (2x), 8mV is ADC LSB */
......
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