Stefan Reinauer (stefan.reinauer@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@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@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) } }