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

-gerrit

commit 4c11d714adf9a09677a358bea44e86f753b3d45f
Author: Duncan Laurie <[email protected]>
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 <[email protected]>
---
 .../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)
        }
 }

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to