Difference between revisions of "Code/ibm acpi-extra-thermal.patch"
(copies from http://pastebin.ca/91872) |
(Put patch in <pre> block) |
||
Line 1: | Line 1: | ||
+ | <pre> | ||
--- a/drivers/acpi/ibm_acpi.c 2006-03-20 06:53:29.000000000 +0100 | --- a/drivers/acpi/ibm_acpi.c 2006-03-20 06:53:29.000000000 +0100 | ||
+++ b/drivers/acpi/ibm_acpi.c 2006-07-19 01:55:52.000000000 +0200 | +++ b/drivers/acpi/ibm_acpi.c 2006-07-19 01:55:52.000000000 +0200 | ||
Line 59: | Line 60: | ||
return len; | return len; | ||
+ | </pre> |
Latest revision as of 09:27, 11 April 2025
--- a/drivers/acpi/ibm_acpi.c 2006-03-20 06:53:29.000000000 +0100 +++ b/drivers/acpi/ibm_acpi.c 2006-07-19 01:55:52.000000000 +0200 @@ -1229,28 +1229,46 @@ static int thermal_read(char *p) if (!thermal_tmp_supported) len += sprintf(p + len, "temperatures:\tnot supported\n"); else { - int i, t; + int i; char tmpi[] = "TMPi"; - s8 tmp[8]; + /* + * A few ThinkPads (e.g. R52, T43) have 3 unnamed sensors. We + * want their values as well. + */ + static const size_t named_count = 8; + static const size_t unnamed_count = 3; + static const size_t unnamed_addresses[] = { 0xC0, 0xC1, 0xC2 }; + static const size_t total_count = named_count + unnamed_count; + s8 tmp[total_count]; if (thermal_updt_supported) if (!acpi_evalf(ec_handle, NULL, "UPDT", "v")) return -EIO; - for (i = 0; i < 8; i++) { + for (i = 0; i < named_count; i++) { + int t; tmpi[3] = '0' + i; if (!acpi_evalf(ec_handle, &t, tmpi, "d")) return -EIO; - if (thermal_updt_supported) - tmp[i] = (t - 2732 + 5) / 10; - else - tmp[i] = t; + tmp[i] = (s8)t; } - len += sprintf(p + len, - "temperatures:\t%d %d %d %d %d %d %d %d\n", - tmp[0], tmp[1], tmp[2], tmp[3], - tmp[4], tmp[5], tmp[6], tmp[7]); + for (i = 0; i < unnamed_count; ++i) { + size_t address = unnamed_addresses[i]; + u8 t; + if (!acpi_ec_read(address, &t)) + return -EIO; + tmp[i+named_count] = (s8)t; + } + + len += sprintf(p + len, "temperatures:\t" ); + for (i = 0; i < total_count; ++i) { + int value = thermal_updt_supported + ? (tmp[i] - 2732 + 5) / 10 + : tmp[i]; + len += sprintf(p + len, "%d%c", value, + i == total_count - 1 ? '\n' : ' '); + } } return len;