diff options
author | Henrique de Moraes Holschuh <hmh@hmh.eng.br> | 2007-07-18 22:45:45 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-07-21 23:49:55 -0400 |
commit | a8fba3da3d11d808137be7ebeb3b6938a42f011f (patch) | |
tree | caf34342b50fcd152625655e785d78c982151ad1 /drivers/misc | |
parent | edf0e0e56904f794c97ca6c4562d8256e3d8d8e3 (diff) |
ACPI: thinkpad-acpi: make sure DSDT TMPx readings don't return +128
We get +128 instead of -128 from the DSDT TMPx methods, due to errors when
converting a EC byte return that is a s8 to an ACPI handler return that is
an int.
Fix it once and for all, by clamping acceptable temperature readings from
DSDT TMPx so that anything outside the [-127,+127] range is converted to
TP_EC_THERMAL_TMP_NA (-128).
Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Michael Olbrich <michael.olbrich@gmx.net>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/thinkpad_acpi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c index 623d36fd8dbe..f74d7d600d83 100644 --- a/drivers/misc/thinkpad_acpi.c +++ b/drivers/misc/thinkpad_acpi.c | |||
@@ -2853,6 +2853,8 @@ static int thermal_get_sensor(int idx, s32 *value) | |||
2853 | snprintf(tmpi, sizeof(tmpi), "TMP%c", '0' + idx); | 2853 | snprintf(tmpi, sizeof(tmpi), "TMP%c", '0' + idx); |
2854 | if (!acpi_evalf(ec_handle, &t, tmpi, "d")) | 2854 | if (!acpi_evalf(ec_handle, &t, tmpi, "d")) |
2855 | return -EIO; | 2855 | return -EIO; |
2856 | if (t > 127 || t < -127) | ||
2857 | t = TP_EC_THERMAL_TMP_NA; | ||
2856 | *value = t * 1000; | 2858 | *value = t * 1000; |
2857 | return 0; | 2859 | return 0; |
2858 | } | 2860 | } |