mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 22:24:11 +08:00
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 bce26c58df86599c9570cee83eac58bdaae760e4.) Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Guenter Roeck <guenter.roeck@ericsson.com> Cc: stable@kernel.org # 2.6.39+ Signed-off-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
899e3ee404
commit
133d324d82
@ -390,7 +390,7 @@ temp_from_reg(u16 reg, s16 regval)
|
||||
{
|
||||
if (is_word_sized(reg))
|
||||
return LM75_TEMP_FROM_REG(regval);
|
||||
return regval * 1000;
|
||||
return ((s8)regval) * 1000;
|
||||
}
|
||||
|
||||
static inline u16
|
||||
@ -398,7 +398,8 @@ temp_to_reg(u16 reg, long temp)
|
||||
{
|
||||
if (is_word_sized(reg))
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user