summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2009-03-13 12:45:34 +0000
committerkhali <khali@7894878c-1315-0410-8ee3-d5d059ff63e0>2009-03-13 12:45:34 +0000
commit94a61c5445b0e4614947c77dcc443ce89e99895e (patch)
tree511097bfd5570dd20af720ef59a2c7d1db21e0ee
parent0b5668574e04977b0ca4db5476f2a28a5af3208c (diff)
downloadlm-sensors-94a61c5445b0e4614947c77dcc443ce89e99895e.tar.gz
Properly encode and decode -128 degrees C. Fix ported from Linux 2.6.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/branches/lm-sensors-2.10@5686 7894878c-1315-0410-8ee3-d5d059ff63e0
-rw-r--r--CHANGES1
-rw-r--r--kernel/chips/it87.c12
2 files changed, 7 insertions, 6 deletions
diff --git a/CHANGES b/CHANGES
index 003e6708..b9e183af 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@ lm_sensors CHANGES file
SVN-HEAD
File lm_sensors.lsm: Delete, don't advertise a legacy branch
File doc/developers/release_checklist: Skip mail to lsm
+ Module it87: Properly decode -128 degrees C (2.6 backport)
Program sensors-detect: Fix detection of older DS1621
2.10.8 (20081216)
diff --git a/kernel/chips/it87.c b/kernel/chips/it87.c
index c3874665..9442c702 100644
--- a/kernel/chips/it87.c
+++ b/kernel/chips/it87.c
@@ -196,8 +196,8 @@ static inline u8 FAN_TO_REG(long rpm, int div)
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
#define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-5)/10):\
- ((val)+5)/10),-127,127))
-#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10)
+ ((val)+5)/10), -128, 127))
+#define TEMP_FROM_REG(val) ((val) * 10)
#define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\
205-(val)*5)
@@ -233,15 +233,15 @@ struct it87_data {
u8 in_min[9]; /* Register value */
u8 fan[3]; /* Register value */
u8 fan_min[3]; /* Register value */
- 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 fan_div[3]; /* Register encoding, shifted right */
u8 vid; /* Register encoding, combined */
u32 alarms; /* Register encoding, combined */
u8 pwm[3]; /* Register value */
u8 fan_ctl[2]; /* Register encoding */
- u8 sg_tl[3][5]; /* Register value */
+ s8 sg_tl[3][5]; /* Register value */
u8 sg_pwm[3][3]; /* Register value */
u8 sens[3]; /* 2 = Thermistor,
3 = PII/Celeron diode */