[coreboot-gerrit] Patch set updated for coreboot: 47f4b50 google/panther: Re-read temperature if current reading would cause power-off

Paul Menzel (paulepanter@users.sourceforge.net) gerrit at coreboot.org
Sun Jul 6 00:31:38 CEST 2014


Paul Menzel (paulepanter at users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6001

-gerrit

commit 47f4b50a55a86137c8b98a5834de98f41d31ab04
Author: Stefan Reinauer <reinauer at 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 at google.com>
    Signed-off-by: Stefan Reinauer <reinauer at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/182188
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    Reviewed-by: Duncan Laurie <dlaurie at chromium.org>
    Tested-by: Stefan Reinauer <reinauer at chromium.org>
    Commit-Queue: Stefan Reinauer <reinauer at 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))



More information about the coreboot-gerrit mailing list