Paul Menzel (paulepanter@users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6001
-gerrit
commit 75877d6402fbc0668cb3a4cab1532fef2b477ac5 Author: Stefan Reinauer reinauer@chromium.org Date: Fri Jan 10 16:06:03 2014 -0800
google/panther: Re-read temperature if current reading would cause power-off
Sometimes the SuperIO seems to provide wrong readings, especially early on after a resume from suspend. This will cause the system to power off. If that happens, wait for 1s and read again, to make sure the high temperature value was not just a flaky read.
BUG=chrome-os-partner:24918 BRANCH=panther TEST=Boot tested on Panther.
Change-Id: Ib3768528d90e34448e96ad587b2503d8d8b1a775 Signed-off-by: Stefan Reinauer reinauer@google.com Signed-off-by: Stefan Reinauer reinauer@chromium.org Reviewed-on: https://chromium-review.googlesource.com/182188 Reviewed-by: Aaron Durbin adurbin@chromium.org Reviewed-by: Duncan Laurie dlaurie@chromium.org Tested-by: Stefan Reinauer reinauer@chromium.org Commit-Queue: Stefan Reinauer reinauer@chromium.org --- src/mainboard/google/panther/acpi/thermal.asl | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/src/mainboard/google/panther/acpi/thermal.asl b/src/mainboard/google/panther/acpi/thermal.asl index d5b1290..a6ea851 100644 --- a/src/mainboard/google/panther/acpi/thermal.asl +++ b/src/mainboard/google/panther/acpi/thermal.asl @@ -61,7 +61,7 @@ Scope (_TZ) Return (\PPKG ()) }
- Method (_TMP, 0, Serialized) + Method (TCHK, 0, Serialized) { // Get CPU Temperature from PECI via SuperIO TMPIN3 Store (_SB.PCI0.LPCB.SIO.ENVC.TIN3, Local0) @@ -84,6 +84,31 @@ Scope (_TZ) Return (CTOK (Local0)) }
+ Method (_TMP, 0, Serialized) + { + // Get temperature from SuperIO in deci-kelvin + Store (TCHK (), Local0) + + // Critical temperature in deci-kelvin + Store (CTOK (\TMAX), Local1) + + If (LGreaterEqual (Local0, Local1)) { + Store ("CRITICAL TEMPERATURE", Debug) + Store (Local0, Debug) + + // Wait 1 second for SuperIO to re-poll + Sleep (1000) + + // Re-read temperature from SuperIO + Store (TCHK (), Local0) + + Store ("RE-READ TEMPERATURE", Debug) + Store (Local0, Debug) + } + + Return (Local0) + } + Method (_AC0) { If (LLessEqual (\FLVL, 0)) { Return (CTOK (\F0OF))