--- /dev/null
+From khali@linux-fr.org Fri Mar 13 15:11:51 2009
+From: Jean Delvare <khali@linux-fr.org>
+Date: Fri, 13 Mar 2009 13:34:04 +0100
+Subject: hwmon: (it87) Properly decode -128 degrees C temperature
+To: stable@kernel.org
+Message-ID: <20090313133404.79642fc4@hyperion.delvare>
+
+commit e267d25005c861fe6afda343f044536342c9f8b4 upstream
+
+The it87 driver is reporting -128 degrees C as +128 degrees C.
+That's not a terribly likely temperature value but let's still
+get it right, especially when it simplifies the code.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+
+---
+ drivers/hwmon/it87.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/hwmon/it87.c
++++ b/drivers/hwmon/it87.c
+@@ -207,7 +207,7 @@ static inline u16 FAN16_TO_REG(long rpm)
+
+ #define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-500)/1000):\
+ ((val)+500)/1000),-128,127))
+-#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*1000)
++#define TEMP_FROM_REG(val) ((val) * 1000)
+
+ #define PWM_TO_REG(val) ((val) >> 1)
+ #define PWM_FROM_REG(val) (((val)&0x7f) << 1)
+@@ -261,9 +261,9 @@ struct it87_data {
+ u8 has_fan; /* Bitfield, fans enabled */
+ u16 fan[5]; /* Register values, possibly combined */
+ u16 fan_min[5]; /* Register values, possibly combined */
+- u8 temp[3]; /* Register value */
+- u8 temp_high[3]; /* Register value */
+- u8 temp_low[3]; /* Register value */
++ s8 temp[3]; /* Register value */
++ s8 temp_high[3]; /* Register value */
++ s8 temp_low[3]; /* Register value */
+ u8 sensor; /* Register value */
+ u8 fan_div[3]; /* Register encoding, shifted right */
+ u8 vid; /* Register encoding, combined */