summaryrefslogtreecommitdiff
path: root/ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl')
-rw-r--r--ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl178
1 files changed, 178 insertions, 0 deletions
diff --git a/ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl b/ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl
new file mode 100644
index 0000000..9f8857e
--- /dev/null
+++ b/ReferenceCode/AcpiTables/SampleCode/SsdtRtd3/RTD3Common.asl
@@ -0,0 +1,178 @@
+/**************************************************************************;
+;* *;
+;* Intel Confidential *;
+;* *;
+;* Intel Corporation - ACPI Reference Code for the Sandy Bridge *;
+;* Family of Customer Reference Boards. *;
+;* *;
+;* *;
+;* Copyright (c) 1999 - 2013 Intel Corporation. All rights reserved *;
+;* This software and associated documentation (if any) is furnished *;
+;* under a license and may only be used or copied in accordance *;
+;* with the terms of the license. Except as permitted by such *;
+;* license, no part of this software or documentation may be *;
+;* reproduced, stored in a retrieval system, or transmitted in any *;
+;* form or by any means without the express written consent of *;
+;* Intel Corporation. *;
+;* *;
+;* *;
+;**************************************************************************/
+/*++
+ This file contains a 'Sample Driver' and is licensed as such
+ under the terms of your license agreement with Intel or your
+ vendor. This file may be modified by the user, subject to
+ the additional terms of the license agreement
+--*/
+
+External(\_SB.OSCO)
+External(\_SB.PCI0,DeviceObj)
+External(\_SB.PCI0.SAT0, DeviceObj)
+External(\_SB.PCI0.SAT0.PRT0, DeviceObj)
+External(\_SB.PCI0.SAT0.PRT1, DeviceObj)
+External(\_SB.PCI0.SAT0.PRT2, DeviceObj)
+
+External(\_SB.PCI0.RP01, DeviceObj)
+External(\_SB.PCI0.RP03, DeviceObj)
+External(\_SB.PCI0.RP04, DeviceObj)
+External(\_SB.PCI0.RP05, DeviceObj)
+External(\_SB.PCI0.RP06, DeviceObj)
+External(\_SB.PCI0.RP01.LDIS)
+External(\_SB.PCI0.RP03.LDIS)
+External(\_SB.PCI0.RP04.LDIS)
+External(\_SB.PCI0.RP05.LDIS)
+External(\_SB.PCI0.RP06.LDIS)
+External(\_SB.PCI0.RP01.L23E)
+External(\_SB.PCI0.RP03.L23E)
+External(\_SB.PCI0.RP04.L23E)
+External(\_SB.PCI0.RP05.L23E)
+External(\_SB.PCI0.RP06.L23E)
+External(\_SB.PCI0.RP01.L23R)
+External(\_SB.PCI0.RP03.L23R)
+External(\_SB.PCI0.RP04.L23R)
+External(\_SB.PCI0.RP05.L23R)
+External(\_SB.PCI0.RP06.L23R)
+External(\_SB.PCI0.RP01.LEDM)
+External(\_SB.PCI0.RP03.LEDM)
+External(\_SB.PCI0.RP04.LEDM)
+External(\_SB.PCI0.RP05.LEDM)
+External(\_SB.PCI0.RP06.LEDM)
+External(\_SB.PCI0.RP01.LASX)
+External(\_SB.PCI0.RP03.LASX)
+External(\_SB.PCI0.RP04.LASX)
+External(\_SB.PCI0.RP05.LASX)
+External(\_SB.PCI0.RP06.LASX)
+External(\CKEN)
+External(\PMFS)
+
+External(\_SB.PCI0.XHC, DeviceObj)
+External(\_SB.PCI0.XHC.PMES)
+External(\_SB.PCI0.XHC.PMEE)
+External(\_SB.PCI0.XHC.MEMB)
+External(\_SB.PCI0.EHC2, DeviceObj)
+External(\_SB.PCI0.EHC2.PMES)
+External(\_SB.PCI0.EHC2.PMEE)
+External(\_SB.PCI0.XHC.RHUB, DeviceObj)
+External(\_SB.PCI0.XHC.RHUB.SSP1, DeviceObj)
+External(\_SB.PCI0.XHC.RHUB.SSP2, DeviceObj)
+External(\_SB.PCI0.XHC.RHUB.HS01, DeviceObj) //xHCI HSP port 1
+External(\_SB.PCI0.XHC.RHUB.HS02, DeviceObj) //xHCI HSP port 2
+External(\_SB.PCI0.I2C0, DeviceObj) //I2C Controller
+External(\_SB.PCI0.I2C0.SHUB, DeviceObj) // Sensor hub
+
+External(PEP0)
+External(PEP3)
+External(XHPR)
+External(RCG0, IntObj) // RTD3 Config Setting(BIT0:ZPODD,BIT1:USB Camera Port4, BIT2/3:SATA Port3)
+External(\GPRW, MethodObj)
+External(P8XH, MethodObj)
+External(BID, IntObj) // BoardId
+External(RTD3, IntObj)
+//AMI_OVERRIDE --- Change name from XDST to XHDS to fix that the system has BsOD issue. It is due to the name(XDST) is conflict with AMI Aptio definition name. >>
+//External(XHDS, IntObj)
+//External(XDST, IntObj)
+//AMI_OVERRIDE --- <<
+//
+// Externs common to ULT0RTD3.asl and FFRDRTD3.asl and exclude for BRRTD3.asl
+//
+#ifndef BRRTD3
+External(\_SB.GP2A, MethodObj)
+External(\_SB.GP2B, MethodObj)
+External(\_SB.GP2N, MethodObj)
+External(\_SB.RDGP, MethodObj)
+External(\_SB.WTGP, MethodObj)
+External(\_SB.WTIN, MethodObj)
+External(\_SB.RDGI, MethodObj)
+
+External(\_SB.PCI0.HDEF, DeviceObj)
+External(\_SB.PCI0.ADSP, DeviceObj)
+External(\_SB.PCI0.I2C1, DeviceObj) //I2C1 Controller
+External(\_SB.PCI0.I2C1.TPD1, DeviceObj) // Touch pad
+External(\_SB.PCI0.I2C1.TPL0, DeviceObj) // Touch panel
+External(\_SB.PCI0.I2C1.TPD0, DeviceObj) // Touch pad
+External(\_SB.PCI0.LPCB.H_EC.SPT2) // SATA_CABLE_PWR_EN bit in EC
+External(\_SB.PCI0.LPCB.H_EC.ECMD, MethodObj) // EC Command method
+External(\_SB.PCI0.LPCB.H_EC.ECAV, IntObj) // EC Driver loaded flag
+External(\_SB.PCI0.LPCB.H_EC.ECRD, MethodObj) // EC Read Method
+External(\_SB.PCI0.LPCB.H_EC.ECWT, MethodObj) // EC Write Method
+External(\_SB.PCI0.SAT0.PRT3, DeviceObj)
+
+External(\UAMS)
+External(RIC0,FieldUnitObj)
+External(SDS0,FieldUnitObj)
+External(SDS1,FieldUnitObj)
+External(IC1D,FieldUnitObj)
+External(IC1S,FieldUnitObj)
+External(IC0D,FieldUnitObj)
+External(I20D,FieldUnitObj)
+External(I21D,FieldUnitObj)
+External(AUDD,FieldUnitObj)
+External(HDAD,FieldUnitObj)
+External(SHSB,FieldUnitObj)
+External(VRSD,FieldUnitObj)
+External(VRRD,FieldUnitObj)
+
+External(\GO08)
+External(\GO45)
+External(\GO51)
+External(\GS08)
+External(\GS45)
+External(\GS51)
+
+Name(LONT, 0) // Last ON Timestamp: The time stamp of the last RTDpower resource _ON method evaluation
+
+//
+// SGON - Staggering ON Method with VR Staggering delay
+// Staggering ON Method with VR Staggering (VRSD) delay. Sleep the extra remaining amount of time if necessary.
+// Update the global running timer of LONT (Last ON mehtod timestamp)
+//
+// Arguments:
+// Arg0 - GPIO Pin number to toggle power on
+// Arg1 - GPIO Value, 0: Active Low, 1: Active High
+//
+// Return Value:
+// Zero - VR staggering is skipped
+// One - VR staggering is performed
+//
+Method(SGON, 2, Serialized)
+{
+ // Check if device is already driven to power on
+ If(LNotEqual(\_SB.RDGP(Arg0), Arg1)) {
+ // Check for VR staggering
+ Divide(Subtract(Timer(), \LONT), 10000, , Local0) //Store Elapsed time in ms, ignore remainder
+ If(LLess(Local0, \VRSD)) { //Do not sleep if already past the delay requirement
+ // Delay for power ramp using Timer Based Sleep
+ Sleep(Subtract(\VRSD, Local0))
+ }
+
+ \_SB.WTGP(Arg0, Arg1) // Drive GPIO to power on device
+
+ Store(Timer(), \LONT) // Update the global Last ON Method Timer
+
+ Return(One) // VR staggering is performed
+ } Else {
+ Return(Zero) // VR staggering is skipped
+ }
+}
+
+#endif
+