[coreboot] New patch to review for coreboot: 4c11d71 CTDP: Only do TDP down/nominal change from TNP0

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Tue Jul 24 01:43:09 CEST 2012


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1348

-gerrit

commit 4c11d714adf9a09677a358bea44e86f753b3d45f
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Wed Jul 18 15:33:45 2012 -0700

    CTDP: Only do TDP down/nominal change from TNP0
    
    Otherwise there is a flurry of TDP changes with suspend/resume
    as the kernel powers devices off on suspend and brings them
    back online in resume.
    
    This also adds a mutex around the TDP operations since it is
    split across two methods and can't just rely on being Serialized.
    
    Change-Id: I7757d3ddad34ac985a9c8ce2fc202e2b2dcb2527
    Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
---
 .../intel/sandybridge/acpi/hostbridge.asl          |   30 ++++++++++++++++----
 1 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/northbridge/intel/sandybridge/acpi/hostbridge.asl b/src/northbridge/intel/sandybridge/acpi/hostbridge.asl
index 8dd1de6..93db98d 100644
--- a/src/northbridge/intel/sandybridge/acpi/hostbridge.asl
+++ b/src/northbridge/intel/sandybridge/acpi/hostbridge.asl
@@ -101,6 +101,8 @@ Device (MCHC)
 		TLUD,	 32,
 	}
 
+	Mutex (CTCM, 1)		/* CTDP Switch Mutex (sync level 1) */
+	Name (CTCC, 0)		/* CTDP Current Selection */
 	Name (CTCN, 0)		/* CTDP Nominal Select */
 	Name (CTCD, 1)		/* CTDP Down Select */
 	Name (CTCU, 2)		/* CTDP Up Select */
@@ -167,12 +169,16 @@ Device (MCHC)
 	/* Set TDP Down */
 	Method (STND, 0, Serialized)
 	{
-		Store ("Set TDP Down", Debug)
-
-		If (LEqual (CTCD, CTCS)) {
+		If (Acquire (CTCM, 100)) {
+			Return (0)
+		}
+		If (LEqual (CTCD, CTCC)) {
+			Release (CTCM)
 			Return (0)
 		}
 
+		Store ("Set TDP Down", Debug)
+
 		/* Set CTC */
 		Store (CTCD, CTCS)
 
@@ -189,18 +195,26 @@ Device (MCHC)
 		/* Set PL1 */
 		Store (CTDD, PL1V)
 
+		/* Store the new TDP Down setting */
+		Store (CTCD, CTCC)
+
+		Release (CTCM)
 		Return (1)
 	}
 
 	/* Set TDP Nominal from Down */
 	Method (STDN, 0, Serialized)
 	{
-		Store ("Set TDP Nominal", Debug)
-
-		If (LEqual (CTCN, CTCS)) {
+		If (Acquire (CTCM, 100)) {
+			Return (0)
+		}
+		If (LEqual (CTCN, CTCC)) {
+			Release (CTCM)
 			Return (0)
 		}
 
+		Store ("Set TDP Nominal", Debug)
+
 		/* Set PL1 */
 		Store (CTDN, PL1V)
 
@@ -217,6 +231,10 @@ Device (MCHC)
 		/* Set CTC */
 		Store (CTCN, CTCS)
 
+		/* Store the new TDP Nominal setting */
+		Store (CTCN, CTCC)
+
+		Release (CTCM)
 		Return (1)
 	}
 }




More information about the coreboot mailing list