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>
 
 {
        if (is_word_sized(reg))
                return LM75_TEMP_FROM_REG(regval);
-       return regval * 1000;
+       return ((s8)regval) * 1000;
 }
 
 static inline u16
 {
        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 */