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>
This commit is contained in:
parent
edf0e0e569
commit
a8fba3da3d
1 changed files with 2 additions and 0 deletions
|
@ -2853,6 +2853,8 @@ static int thermal_get_sensor(int idx, s32 *value)
|
||||||
snprintf(tmpi, sizeof(tmpi), "TMP%c", '0' + idx);
|
snprintf(tmpi, sizeof(tmpi), "TMP%c", '0' + idx);
|
||||||
if (!acpi_evalf(ec_handle, &t, tmpi, "d"))
|
if (!acpi_evalf(ec_handle, &t, tmpi, "d"))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
if (t > 127 || t < -127)
|
||||||
|
t = TP_EC_THERMAL_TMP_NA;
|
||||||
*value = t * 1000;
|
*value = t * 1000;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue