[coreboot-gerrit] New patch to review for coreboot: 43342b2 samus: Change thermal behavior to match other haswell platforms

Isaac Christensen (isaac.christensen@se-eng.com) gerrit at coreboot.org
Wed Sep 3 22:30:44 CEST 2014


Isaac Christensen (isaac.christensen at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/6825

-gerrit

commit 43342b2226fb26a05cd151b6afa0a5345253aece
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Sat Oct 12 11:50:05 2013 +0800

    samus: Change thermal behavior to match other haswell platforms
    
    Change-Id: Ia835f16b156949f1841210c4a469223d5df28a54
    Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/174087
    Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    (cherry picked from commit 8e51d1d74cdcadde9cbf10e8321d601b099c46bc)
    Signed-off-by: Isaac Christensen <isaac.christensen at se-eng.com>
---
 src/mainboard/google/samus/acpi/thermal.asl | 100 +++++++++-------------------
 src/mainboard/google/samus/acpi_tables.c    |  10 +--
 src/mainboard/google/samus/thermal.h        |  18 ++---
 3 files changed, 40 insertions(+), 88 deletions(-)

diff --git a/src/mainboard/google/samus/acpi/thermal.asl b/src/mainboard/google/samus/acpi/thermal.asl
index b61baeb..a622d6c 100644
--- a/src/mainboard/google/samus/acpi/thermal.asl
+++ b/src/mainboard/google/samus/acpi/thermal.asl
@@ -21,6 +21,20 @@
 
 Scope (\_TZ)
 {
+	// Handler for throttle requests on this platform
+	//  0 = Stop throttling
+	//  1 = Start throttling
+	Method (THRT, 1, Serialized)
+	{
+		If (LEqual (Arg0, 0)) {
+			/* Disable Power Limit */
+			\_SB.PCI0.MCHC.CTLD ()
+		} Else {
+			/* Enable Power Limit */
+			\_SB.PCI0.MCHC.CTLE (\F0PW)
+		}
+	}
+
 	ThermalZone (THRM)
 	{
 		Name (_TC1, 0x02)
@@ -61,7 +75,7 @@ Scope (\_TZ)
 			Return (\PPKG ())
 		}
 
-		Method (_TMP, 0, Serialized)
+		Method (TCHK, 0, Serialized)
 		{
 			// Get Temperature from TIN# set in NVS
 			Store (\_SB.PCI0.LPCB.EC0.TINS (TMPS), Local0)
@@ -94,79 +108,29 @@ Scope (\_TZ)
 			Return (Local0)
 		}
 
-		/* CTDP Down */
-		Method (_AC0) {
-			If (LLessEqual (\FLVL, 0)) {
-				Return (CTOK (\F0OF))
-			} Else {
-				Return (CTOK (\F0ON))
-			}
-		}
+		Method (_TMP, 0, Serialized)
+		{
+			// Get temperature from EC in deci-kelvin
+			Store (TCHK (), Local0)
 
-		/* CTDP Nominal */
-		Method (_AC1) {
-			If (LLessEqual (\FLVL, 1)) {
-				Return (CTOK (\F1OF))
-			} Else {
-				Return (CTOK (\F1ON))
-			}
-		}
+			// Critical temperature in deci-kelvin
+			Store (CTOK (\TCRT), Local1)
 
-		Name (_AL0, Package () { TDP0 })
-		Name (_AL1, Package () { TDP1 })
+			If (LGreaterEqual (Local0, Local1)) {
+				Store ("CRITICAL TEMPERATURE", Debug)
+				Store (Local0, Debug)
 
-		PowerResource (TNP0, 0, 0)
-		{
-			Method (_STA) {
-				If (LLessEqual (\FLVL, 0)) {
-					Return (One)
-				} Else {
-					Return (Zero)
-				}
-			}
-			Method (_ON)  {
-				Store (0, \FLVL)
-				\_SB.PCI0.MCHC.STND ()
-				Notify (\_TZ.THRM, 0x81)
-			}
-			Method (_OFF) {
-				Store (1, \FLVL)
-				\_SB.PCI0.MCHC.STDN ()
-				Notify (\_TZ.THRM, 0x81)
-			}
-		}
+				// Wait 1 second for EC to re-poll
+				Sleep (1000)
 
-		PowerResource (TNP1, 0, 0)
-		{
-			Method (_STA) {
-				If (LLessEqual (\FLVL, 1)) {
-					Return (One)
-				} Else {
-					Return (Zero)
-				}
-			}
-			Method (_ON)  {
-				Store (1, \FLVL)
-				Notify (\_TZ.THRM, 0x81)
-			}
-			Method (_OFF) {
-				Store (1, \FLVL)
-				Notify (\_TZ.THRM, 0x81)
-			}
-		}
+				// Re-read temperature from EC
+				Store (TCHK (), Local0)
 
-		Device (TDP0)
-		{
-			Name (_HID, EISAID ("PNP0C0B"))
-			Name (_UID, 0)
-			Name (_PR0, Package () { TNP0 })
-		}
+				Store ("RE-READ TEMPERATURE", Debug)
+				Store (Local0, Debug)
+			}
 
-		Device (TDP1)
-		{
-			Name (_HID, EISAID ("PNP0C0B"))
-			Name (_UID, 1)
-			Name (_PR0, Package () { TNP1 })
+			Return (Local0)
 		}
 	}
 }
diff --git a/src/mainboard/google/samus/acpi_tables.c b/src/mainboard/google/samus/acpi_tables.c
index a96cb24..dd73d29 100644
--- a/src/mainboard/google/samus/acpi_tables.c
+++ b/src/mainboard/google/samus/acpi_tables.c
@@ -44,17 +44,11 @@ unsigned long acpi_create_slic(unsigned long current);
 
 static void acpi_update_thermal_table(global_nvs_t *gnvs)
 {
-	gnvs->tmps = CTDP_SENSOR_ID;
-
-	gnvs->f1of = CTDP_NOMINAL_THRESHOLD_OFF;
-	gnvs->f1on = CTDP_NOMINAL_THRESHOLD_ON;
-
-	gnvs->f0of = CTDP_DOWN_THRESHOLD_OFF;
-	gnvs->f0on = CTDP_DOWN_THRESHOLD_ON;
-
+	gnvs->tmps = TEMPERATURE_SENSOR_ID;
 	gnvs->tcrt = CRITICAL_TEMPERATURE;
 	gnvs->tpsv = PASSIVE_TEMPERATURE;
 	gnvs->tmax = MAX_TEMPERATURE;
+	gnvs->f0pw = EC_THROTTLE_POWER_LIMIT;
 	gnvs->flvl = 1;
 }
 
diff --git a/src/mainboard/google/samus/thermal.h b/src/mainboard/google/samus/thermal.h
index 75f247c..89069a6 100644
--- a/src/mainboard/google/samus/thermal.h
+++ b/src/mainboard/google/samus/thermal.h
@@ -20,24 +20,18 @@
 #ifndef THERMAL_H
 #define THERMAL_H
 
-/* Config TDP Sensor ID */
-#define CTDP_SENSOR_ID			0 /* PECI */
+#define TEMPERATURE_SENSOR_ID		0	/* PECI */
 
-/* Config TDP Nominal */
-#define CTDP_NOMINAL_THRESHOLD_OFF	0
-#define CTDP_NOMINAL_THRESHOLD_ON	0
-
-/* Config TDP Down */
-#define CTDP_DOWN_THRESHOLD_OFF		80
-#define CTDP_DOWN_THRESHOLD_ON		90
+/* Power level to set when EC requests throttle */
+#define EC_THROTTLE_POWER_LIMIT		12	/* 12W */
 
 /* Temperature which OS will shutdown at */
-#define CRITICAL_TEMPERATURE		104
+#define CRITICAL_TEMPERATURE		99
 
 /* Temperature which OS will throttle CPU */
-#define PASSIVE_TEMPERATURE		100
+#define PASSIVE_TEMPERATURE		95
 
 /* Tj_max value for calculating PECI CPU temperature */
-#define MAX_TEMPERATURE			105
+#define MAX_TEMPERATURE			100
 
 #endif



More information about the coreboot-gerrit mailing list