summaryrefslogtreecommitdiff
path: root/Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl
diff options
context:
space:
mode:
Diffstat (limited to 'Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl')
-rw-r--r--Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl797
1 files changed, 797 insertions, 0 deletions
diff --git a/Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl b/Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl
new file mode 100644
index 0000000..ad17b9f
--- /dev/null
+++ b/Board/EM/Thunderbolt/TbtDxe/TbtGpe.asl
@@ -0,0 +1,797 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/Thunderbolt/TbtDxe/TbtGpe.asl 22 5/19/14 7:32a Barretlin $
+//
+// $Revision: 22 $
+//
+// $Date: 5/19/14 7:32a $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Thunderbolt/TbtDxe/TbtGpe.asl $
+//
+// 22 5/19/14 7:32a Barretlin
+// [TAG] EIP165410
+// [Category] New Feature
+// [Description] Support Thunderbolt AIC at NB PCIE slot
+// [Files] TbtPei.c TbtDxe.c TbtGpe.asl TbtSmm.c TbtOemBoard.c
+// TbtOemLib.c TbtOemLib.h TbtSetup.sdl TbtSetup.sd TbtSetup.uni
+// TbtSetupReset.c
+//
+// 21 5/19/14 7:13a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Using setup item choose return value of _RMV method in
+// ASL code
+// [Files] TbtDxe.c TbtGpe.asl TbtOemBoard.c TbtOemBoard.h TbtSetup.sd
+// TbtSetup.sdl TbtSetup.uni
+//
+// 20 2/22/14 5:50p Barretlin
+// [TAG] EIP N/A
+// [Category] Bug Fix
+// [Severity] Important
+// [Symptom] For Cactus Ridge host the thunderbolt hotplug event cannot
+// be trigger
+// [RootCause] signal event is not trigger under _INI/TINI method cause
+// OS will not set GPE event enable bit
+// [Solution] Change signal event location of _INI/TINI method
+// [Files] TbtGpe.asl
+//
+// 19 2/18/14 12:07p Barretlin
+//
+// 18 2/18/14 6:02a Barretlin
+// [TAG] EIP152401
+// [Category] Spec Update
+// [Severity] Minor
+// [Description] Update Intel Thunderbolt Sample code rev 1.9
+// [Files] TbtSmm.c TbtGpe.asl TbtOemPorting.asl
+//
+// 17 1/05/14 1:43p Barretlin
+// [TAG] EIP N/A
+// [Category] New Feature
+// [Description] Support Thunderbolt feature Enable/Disable in run time
+// Support dynamic Thunderbolt AIC location in run time
+// [Files] TbtDxe.c TbtGpe.asl
+//
+// 16 7/26/13 2:24a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] remove non Intel RC config
+// [Files] TbtGpe.asl
+//
+// 15 6/21/13 7:41a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Fix build error with non Intel RC project
+// [Files] TbtDxe.sdl TbtDxe.c TbtGpe.asl TbtDxeLib.h
+//
+// 14 6/19/13 9:24a Barretlin
+// [TAG] EIP126581
+// [Category] Spec Update
+// [Severity] Minor
+// [Description] Update Intel Thunderbolt sample code to rev. 1.7
+// [Files] TbtGpe.asl
+//
+// 13 5/27/13 8:57a Barretlin
+// [TAG] EIP124914
+// [Category] New Feature
+// [Description] Support Falcon Ridge chip
+// [Files] TbtGpe.asl
+//
+// 12 5/27/13 8:54a Barretlin
+// [TAG] EIP122882
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] let system entering sleep status continually and waking up
+// system via Thunderbolt Lan device, system will auto-wake
+// [RootCause] PCIE PME status is not cleared by ASL in SB module
+// [Solution] Clear PCIE PME status againg before system entring sleep
+// status
+// [Files] TbtDxe.sdl TbtGpe.asl
+//
+// 11 5/27/13 8:46a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] add sychronized method to make sure executed sequence
+// is one by one
+// [Files] TbtGpe.asl
+//
+// 10 4/12/13 1:18p Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Rollback OSUP method and following Intel sample code
+// [Files] TbtGpe.asl
+//
+// 9 4/10/13 2:31p Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Change reported MMIO address way in ASL code
+// [Files] TbtDxe.c TbtGpe.asl
+//
+// 8 4/10/13 1:37p Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Adding a TPTS method into _PTS method in ASL code
+// [Files] TbtDxe.sdl TbtGpe.asl
+//
+// 7 4/03/13 8:42a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Fix might hang up when S3 resuming
+// [Files] TbtGpe.asl
+//
+// 6 3/21/13 4:58a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Use token to decide where location of OS_UP command for
+// RR chip is
+// [Files] TbtDxe.sdl TbtGpe.asl
+//
+// 5 2/08/13 1:23a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Following Intel sample code move _INI method of
+// thunderbolt from under PCIE root port to under system bus
+// [Files] TbtDxe.sdl TbtGpe.asl
+//
+// 4 2/06/13 7:49a Barretlin
+// [TAG] EIP114556
+// [Category] Spec Update
+// [Severity] Minor
+// [Description] Update RR handshake flow for Thunderbolt RR Spec 0.9
+// [Files] TbtGpe.asl
+//
+// 3 1/24/13 1:31a Barretlin
+// [TAG] EIP N/A
+// [Category] Bug Fix
+// [Severity] Minor
+// [Symptom] TBT debug setup item function fail
+// [RootCause] ASL updating error
+// [Files] TbtGpe.asl
+//
+// 2 1/18/13 2:26a Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Improve _RMV ASL code for SharkBay RC
+// [Files] TbtDxe.sdl TbtDxe.c TbtGpe.asl
+//
+// 1 1/10/13 4:56a Barretlin
+// Change SS path and update module for Thunderbolt Spec 1.6 for Cactus
+// Ridge chip and Thunderbolt Spec 0.5 for Redwood Ridge chip
+//
+// 6 12/12/12 3:02a Barretlin
+// [TAG] EIP108272
+// [Category] Spec Update
+// [Severity] Important
+// [Description] Update to Spec 1.4 to support Redwood Ridge chip
+// [Files] TbtPei.c TbtSmm.c TbtDxe.c TbtDxe.sdl TbtGpe.asl
+// TbtOemBoard.c TbtOemBoard.h TbtOemLib.c TbtOemLib.h
+//
+// 5 10/28/12 10:50p Barretlin
+// [TAG] EIP N/A
+// [Category] Improvement
+// [Description] Change GPIO routing for SharkBay ULT platform
+// [Files] TbtDxe.c TbtGpe.asl TbtDxeLib.c TbtDxeLib.h TbtSmm.c
+//
+// 4 5/07/12 6:34a Barretlin
+// [TAG] None
+// [Category] Improvement
+// [Description] Add three setup items for debug
+// [Files] TbtDxe.c
+// TbtGpe.asl
+// TbtSmm.c
+// TbtSetup.sd
+// TbtSetup.uni
+// TbtOemBoard.c
+// TbtOemBoard.h
+//
+// 3 4/16/12 10:17a Barretlin
+// [TAG] EIP86590
+// [Category] Bug Fix
+// [Symptom] Only EP#1 can be detected after resume from S3
+// [Solution] Adding a TWAK method into _WAK method
+// [Files] TbtDxe.sdl TbtGpe.asl
+//
+// 2 4/14/12 4:50a Barretlin
+// [TAG] None
+// [Category] Improvement
+// [Description] Improve ASL code, which redefines device name and RMV
+// mothod at same address when project supports RMV method, that might
+// cause conflict.
+// [Files] TbtDxe.c TbtGpe.asl
+//
+// 1 12/08/11 4:09a Wesleychen
+// Thunderbolt eModule initially releases.
+//
+//*************************************************************************
+Scope(\)
+{
+ Mutex(OSUM, 0) // OS Up mutex
+ Event(WFEV)
+// Name(TBTE, 0) // Thunderbolt function enable
+ Name(PEMA, ASL_PCIEX_BASE_ADDRESS) // PCIE base address
+ Name(TBRP, ASL_TBT_RPNum) // PCIE root port location for Thunderbolt Host
+ Name(TBUS, 0xFF) // Thunderbolt Host BUS number
+ Name(TBHR, 0xFF) //1:Cactus Ridge 2:Redwood Ridge 3:Falcon Ridge 4:Win Ridge will be updated
+ Name(TBMV, 0xFF) // _RMV return value for Thunderbolt
+ Name(RPR6, 0)
+ Name(RPR7, 0)
+ Name(RPR8, 0)
+ Name(RPR9, 0)
+ Name(RPRA, 0)
+ Name(RPRB, 0)
+}
+
+Scope(\_SB)
+{
+ // Include OEM porting required ASL
+ Include("..\\TbtOemBoard\\TbtOemPorting.asl")
+
+ // WMI ACPI device to control TBT force power
+ Device(WMTF)
+ {
+ // pnp0c14 is pnp id assigned to WMI mapper
+ Name(_HID, "PNP0C14")
+ Name(_UID, "TBFP")
+
+ Name(_WDG, Buffer() {
+ // {86CCFD48-205E-4A77-9C48-2021CBEDE341}
+ 0x48, 0xFD, 0xCC, 0x86,
+ 0x5E, 0x20,
+ 0x77, 0x4A,
+ 0x9C, 0x48,
+ 0x20, 0x21, 0xCB, 0xED, 0xE3, 0x41,
+ 84, 70, // Object Id (TF)
+ 1, // Instance Count
+ 0x02 // Flags (WMIACPI_REGFLAG_METHOD)
+ })
+
+ // Set TBT force power
+ // Arg2 is force power value
+ Method(WMTF, 3)
+ {
+ CreateByteField(Arg2,0,FP)
+
+ If(FP)
+ {
+ TBFP(1)
+ }
+ Else
+ {
+ TBFP(0)
+ }
+ }
+ }
+}
+
+Scope(\_GPE)
+{
+ // OSUP method apply TB2P<->P2TB handshake procedure
+ // with Command = OS_Up
+ // Arg0 - Memory mapped IO address of RR host router upstream port
+ Method(OSUP, 1)
+ {
+ Add(Arg0, 0x548, Local0)
+ OperationRegion(PXVD,SystemMemory,Local0,0x08)
+ Field(PXVD,DWordAcc, NoLock, Preserve)
+ {
+ TB2P, 32,
+ P2TB, 32
+ }
+
+ Store(100, Local1)
+ Store(0x0D, P2TB) // Write (OS_Up << 1) | 1 to PCIe2TBT
+ While(LGreater(Local1, 0))
+ {
+ Store(Subtract(Local1, 1), Local1)
+ Store(TB2P, Local2)
+ If(LEqual(Local2, 0xFFFFFFFF))// Device gone
+ {
+ Return(2)
+ }
+ If(And(Local2, 1)) // Done
+ {
+ break
+ }
+ Sleep(50)
+ }
+ Store(0x00, P2TB) // Write 0 to PCIe2TBT
+ Return(1)
+ }
+
+ Method(MMRP)
+ {
+ // Calculate Memory mapped IO address of RR host router PCIE root port
+ // And put it into XXXXX
+
+ Store(\PEMA, Local0)
+ If(LLessEqual(ToInteger(TBRP), 0x08)) // SB PCIE root port
+ {
+ Add(Local0, 0xE0000, Local0) // RP01
+ Subtract(ToInteger(\TBRP), 1, Local1)
+ Multiply(Local1, 0x1000, Local1)
+ Add(Local0, Local1, Local0) //RP0x
+ }
+ Else // NB PCIE root port
+ {
+ Add(Local0, 0x8000, Local0) //PEG0
+ Subtract(ToInteger(\TBRP), 0x20, Local1)
+ Multiply(Local1, 0x1000, Local1)
+ Add(Local0, Local1, Local0)
+ }
+ Return(Local0)
+ }
+
+ // Calculate Memory mapped IO address of RR host router upstream port
+ Method(MMTB)
+ {
+ // Calculate Memory mapped IO address of RR host router upstream port
+ // And put it into XXXXX
+
+ Store(MMRP(), Local0)
+ OperationRegion(MMMM, SystemMemory, Local0, 0x1A)
+ Field(MMMM, AnyAcc, NoLock, Preserve)
+ {
+ Offset(0x19),
+ SBUS, 8
+ }
+
+ Store(SBUS, Local2)
+ Store(\PEMA, Local0)
+ Multiply(Local2, 0x100000, Local2)
+ Add(Local0, Local2, Local0) //TBT HR US port MMIO address
+ Return(Local0)
+ }
+
+ Method(GDRP)
+ {
+ // Put TBT PCIE root port to D0 state
+
+ Store(MMRP(), Local0)
+ OperationRegion(RP_X, SystemMemory, Local0, 0x100)
+ Field(RP_X, AnyAcc, NoLock, Preserve)
+ {
+ Offset(0x84),
+ NBPS, 2, // Power State of PEG slot
+ Offset(0xA4),
+ PSD3, 2 // Power State of SB PCIE slot
+ }
+ If(LLess(TBRP, 0x20)){
+ Store(0, PSD3)
+ Return (PSD3)
+ }
+ If(LGreaterEqual(TBRP, 0x20)){
+ Store(0, NBPS)
+ Return (NBPS)
+ }
+ }
+
+ Method(RPDX, 1)
+ {
+ // Change TBT PCIE root port Power state via Arg0
+ // Arg0 - 0: D0 Status
+ // 3: D3 Status
+
+ Store(MMRP(), Local0)
+ OperationRegion(RP_X, SystemMemory, Local0, 0x100)
+ Field(RP_X, AnyAcc, NoLock, Preserve)
+ {
+ Offset(0x84),
+ NBPS, 2, // Power State of PEG slot
+ Offset(0xA4),
+ PSD3, 2
+ }
+ If(LLess(TBRP, 0x20)){
+ Store(Arg0, PSD3)
+ Sleep(100)
+ }
+ If(LGreaterEqual(TBRP, 0x20)){
+ Store(Arg0, NBPS)
+ Sleep(100)
+ }
+ }
+
+ Method(TBAC)
+ {
+ // Equal Intel BIOS method TSUB and WSUB
+
+ Acquire(OSUM, 0xFFFF)
+ Store(MMRP(), Local0)
+ OperationRegion(RP_X, SystemMemory, Local0, 0x100)
+ Field(RP_X, AnyAcc, NoLock, Preserve)
+ {
+ Offset(0x08),
+ RDCC, 32,
+ Offset(0x18),
+ PBUS, 8,
+ SBUS, 8,
+ SUBS, 8,
+ Offset(0x84),
+ NBPS, 2, // Power State of PEG slot
+ Offset(0xA4),
+ PSD3, 2
+ }
+ Store(0, Local1)
+ While(1)
+ {
+ If(LAnd(LNotEqual(RDCC, 0xFFFFFFFF), LNotEqual(SBUS, 0xFF)))
+ {
+ If(LAnd(LLess(TBRP, 0x20), LEqual(PSD3, 0x0))){
+ Break
+ }
+ If(LAnd(LGreaterEqual(TBRP, 0x20), LEqual(PSD3, 0x0))){
+ Break
+ }
+ }
+ Else
+ {
+ Add(Local1, 0x01, Local1)
+ If(LGreater(Local1, 0x03E8))
+ {
+ P8XH(1,0x7B)
+ P8XH(0,0xAC)
+ Sleep(0x3E8)
+ Break
+ }
+ Else
+ {
+ Sleep(0x10)
+ }
+ }
+ }
+ Release(OSUM)
+ }
+
+ Method(NTFY)
+ {
+ // Intel Chipset Sample code Notify Method
+ Sleep(100)
+ Switch(ToInteger(TBRP)) // TBT Selector
+ {
+ Case (1)
+ {
+ Notify(\_SB.PCI0.RP01,0)
+ }
+ Case (2)
+ {
+ Notify(\_SB.PCI0.RP02,0)
+ }
+ Case (3)
+ {
+ Notify(\_SB.PCI0.RP03,0)
+ }
+ Case (4)
+ {
+ Notify(\_SB.PCI0.RP04,0)
+ }
+ Case (5)
+ {
+ Notify(\_SB.PCI0.RP05,0)
+ }
+ Case (6)
+ {
+ Notify(\_SB.PCI0.RP06,0)
+ }
+ Case (7)
+ {
+ Notify(\_SB.PCI0.RP07,0)
+ }
+ Case (8)
+ {
+ Notify(\_SB.PCI0.RP08,0)
+ }
+ Case (0x20)
+ {
+ Notify(\_SB.PCI0.PEG0,0)
+ }
+ Case (0x21)
+ {
+ Notify(\_SB.PCI0.PEG1,0)
+ }
+ Case (0x22)
+ {
+ Notify(\_SB.PCI0.PEG2,0)
+ }
+ }
+ }
+
+ // Check for 0xFFFFFFFF in TBT Vendor/Device ID
+ // And Call OSUP if true
+ Method(TBFF)
+ {
+ // Get mapped IO address of RR host router upstream port
+ Store(MMTB(), Local0)
+ OperationRegion(PXVD,SystemMemory,Local0,0x4)
+ Field(PXVD,DWordAcc, NoLock, Preserve)
+ {
+ VEDI, 32 // Vendor/Device ID
+ }
+
+ //Check Vendor/Device ID for 0xFFFFFFFF
+ Store(VEDI, Local1)
+ If(LEqual(Local1, 0xFFFFFFFF))
+ {
+ Return (OSUP(Local0))
+ }
+ Else
+ {
+ Return (0)
+ }
+ }
+
+ Method(OE1X)
+ {
+ Name(TSNE, 0xFF) //will be updated by setup menu
+
+ If(LLess(OSYS,2009)) { Return() } // only support win7 or above OS
+
+ Wait(WFEV, 0xFFFF)
+ Signal(WFEV)
+ TBAC()
+ Acquire(OSUM, 0xFFFF)
+ If(LNotEqual(\TBHR, 0x01))// For Redwood Ridge/Falcon Ridge
+ {
+ Store(TBFF(), Local0)
+ If(LEqual(Local0, 1))// Only HR
+ {
+ Sleep(16)
+ Release(OSUM)
+ Return ()
+ }
+ If(LEqual(Local0, 2)) // Disconnect
+ {
+ If(And(TSNE, 0x02)) // If notification is enabled call Notify
+ {
+ Sleep(16)
+ NTFY()
+ }
+ P8XH(0,0x7D)
+ Release(OSUM)
+ Return ()
+ }
+ }
+
+ If(And(TSNE, 0x01))
+ {
+ Store(TBSW, SSMP)
+ }
+ If(And(TSNE, 0x02))
+ {
+ NTFY()
+ }
+ Sleep(16)
+ Release(OSUM)
+ }
+}
+
+#if defined (ASL_TBT_RMV_REPORT) && (ASL_TBT_RMV_REPORT == 1)
+Scope (ASL_TBT_RP_NUM.PXSX)
+{
+ Method(_RMV)
+ {
+ Return(TBMV)
+ } // end _RMV
+}
+#endif
+
+Scope (ASL_TBT_RP_NUM)
+{
+#if defined ASL_TBT_PCI0_INI_SUPPORT && ASL_TBT_PCI0_INI_SUPPORT == 1
+ Method(TINI,0)
+#else
+ Method(_INI,0)
+#endif
+ {
+ If(LLess(OSYS,2009)) { Return() } // only support win7 or above OS
+
+ If(LAnd(LNotEqual(\TBHR, 0xFF), LNotEqual(\TBHR, 0x01)))// For Redwood Ridge/Falcon Ridge
+ {
+ Acquire(OSUM, 0xFFFF)
+ P8XH(0, 0x51) // for debug
+/*
+ Store(MMRP(), Local1)
+ OperationRegion(RP_X, SystemMemory, Local1, 0x20)
+ Field(RP_X, DWordAcc, NoLock, Preserve)
+ {
+ REG0, 32,
+ REG1, 32,
+ REG2, 32,
+ REG3, 32,
+ REG4, 32,
+ REG5, 32,
+ REG6, 32,
+ REG7, 32,
+ }
+ Store(REG6, Local2)
+ Store(0x00F0F000, REG6)
+*/
+ \_GPE.TBAC()
+ // Get memory mapped IO address of RR host router upstream port
+ Store(\_GPE.MMTB(), Local3)
+ // Call OSUP
+ \_GPE.OSUP(Local3)
+ Release(OSUM)
+ }
+ Signal(WFEV)
+ }
+
+#if defined(ASL_TBT_WAK_SUPPORT) && (ASL_TBT_WAK_SUPPORT==1)
+ Method(TWAK, 1)
+ {
+ Name(RPL1, 0)
+ Name(RPL6, 0)
+ Name(RPL7, 0)
+ Name(RPL8, 0)
+ Name(RPL9, 0)
+ Name(RPLA, 0)
+ Name(RPLB, 0)
+
+ If(LLess(OSYS,2009)) { Return() } // only support win7 or above OS
+
+ If(LAnd(LNotEqual(\TBHR, 0xFF), LNotEqual(\TBHR, 0x01)))// Only for Redwood Ridge/Falcon Ridge
+ {
+ Acquire(OSUM, 0xFFFF)
+ \_GPE.TBAC()
+ //Sleep(50) // fix hang up when S3 resuming
+ // Get memory mapped IO address of RR host router upstream port
+ Store(\_GPE.MMRP(), Local0)
+ OperationRegion(RP_X, SystemMemory, Local0, 0x34)
+ Field(RP_X, DWordAcc, NoLock, Preserve)
+ {
+ REG0, 32,
+ REG1, 32,
+ REG2, 32,
+ REG3, 32,
+ REG4, 32,
+ REG5, 32,
+ REG6, 32,
+ REG7, 32,
+ REG8, 32,
+ REG9, 32,
+ REGA, 32,
+ REGB, 32,
+ REGC, 32,
+ }
+ Store(REG1, RPL1)
+ Store(REG6, RPL6)
+ Store(REG7, RPL7)
+ Store(REG8, RPL8)
+ Store(REG9, RPL9)
+ Store(REGA, RPLA)
+ Store(REGB, RPLB)
+ Store(RPR6, REG6)
+ Store(RPR7, REG7)
+ Store(RPR8, REG8)
+ Store(RPR9, REG9)
+ Store(RPRA, REGA)
+ Store(RPRB, REGB)
+ Store(0x00100007, REG1)
+ Store(\_GPE.GDRP(), Local2)
+ \_GPE.RPDX(Zero)
+ Store(\_GPE.MMTB(), Local3)
+ // Call OSUP
+ \_GPE.OSUP(Local3)
+ // Restore TBT root port resource/bus/cmd/D state registers as before Sx entry
+ Store(TBSW, SSMP)
+ // Restore original register values as before calling SMI
+ Store(RPL1, REG1)
+ Store(RPL6, REG6)
+ Store(RPL7, REG7)
+ Store(RPL8, REG8)
+ Store(RPL9, REG9)
+ Store(RPLA, REGA)
+ Store(RPLB, REGB)
+ \_GPE.RPDX(Local2)
+ Release(OSUM)
+
+ // For TBT host at NB PCIE slot
+ If(LGreaterEqual(ToInteger(TBRP), 0x20))
+ {
+ Switch(ToInteger(TBRP))
+ {
+ Case (0x20)
+ {
+ Notify(\_SB.PCI0.PEG0,0)
+ }
+ Case (0x21)
+ {
+ Notify(\_SB.PCI0.PEG1,0)
+ }
+ Case (0x22)
+ {
+ Notify(\_SB.PCI0.PEG2,0)
+ }
+ }
+ }
+ }
+
+#if defined(ASL_TBT_S3_WAK_SMI) && (ASL_TBT_S3_WAK_SMI == 1) && (ASL_TBT_WAK_SUPPORT == 1)
+ Store(Arg0,Local0)
+ If(LEqual(Local0, 0x03)){
+ If(ASL_TBT_RP_NUM.PDSX){
+ Store(TBSW, SSMP)
+ NTFY()
+ }
+ }
+#endif
+ Signal(WFEV)
+ }
+#endif
+
+#if defined(ASL_TBT_PTS_SUPPORT) && (ASL_TBT_PTS_SUPPORT==1)
+ Method(TPTS, 1)
+ {
+ If(LLess(OSYS,2009)) { Return() } // only support win7 or above OS
+
+ If(LAnd(LNotEqual(\TBHR, 0xFF), LNotEqual(\TBHR, 0x01)))// Only for Redwood Ridge/Falcon Ridge
+ {
+ Acquire(OSUM, 0xFFFF)
+ Store(\_GPE.MMRP(), Local0)
+ OperationRegion(RP_X, SystemMemory, Local0, 0x34)
+ Field(RP_X, DWordAcc, NoLock, Preserve)
+ {
+ REG0, 32,
+ REG1, 32,
+ REG2, 32,
+ REG3, 32,
+ REG4, 32,
+ REG5, 32,
+ REG6, 32,
+ REG7, 32,
+ REG8, 32,
+ REG9, 32,
+ REGA, 32,
+ REGB, 32,
+ REGC, 32,
+ }
+ Store(REG6, RPR6)
+ Store(REG7, RPR7)
+ Store(REG8, RPR8)
+ Store(REG9, RPR9)
+ Store(REGA, RPRA)
+ Store(REGB, RPRB)
+ Release(OSUM)
+ }
+#if defined(ASL_TBT_CLEAR_PME_STATUS) && (ASL_TBT_CLEAR_PME_STATUS == 1)
+ If(LOr(PSPX, PMEP)){
+ Store(PMEX, Local1)
+ Store(0, PMEX)
+ Sleep(10)
+ Store(1, PSPX)
+ Sleep(10)
+ If(PSPX){
+ Store(1, PSPX)
+ Sleep(10)
+ }
+ Store(Local1, PMEX)
+ }
+#endif
+ Reset(WFEV)
+ }
+#endif
+}
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2011, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************