From: Henrique de Moraes Holschuh Date: Thu, 19 Jul 2007 02:45:45 +0000 (-0300) Subject: ACPI: thinkpad-acpi: make sure DSDT TMPx readings don't return +128 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a8fba3da3d11d808137be7ebeb3b6938a42f011f;p=openwrt%2Fstaging%2Fblogic.git 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 Cc: Michael Olbrich Signed-off-by: Len Brown --- 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) snprintf(tmpi, sizeof(tmpi), "TMP%c", '0' + idx); if (!acpi_evalf(ec_handle, &t, tmpi, "d")) return -EIO; + if (t > 127 || t < -127) + t = TP_EC_THERMAL_TMP_NA; *value = t * 1000; return 0; }