/**************************************************************************; | |
;* *; | |
;* *; | |
;* Intel Corporation - ACPI Reference Code for the Baytrail *; | |
;* Family of Customer Reference Boards. *; | |
;* *; | |
;* *; | |
;* Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved *; | |
; | |
; This program and the accompanying materials are licensed and made available under | |
; the terms and conditions of the BSD License that accompanies this distribution. | |
; The full text of the license may be found at | |
; http://opensource.org/licenses/bsd-license.php. | |
; | |
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
; | |
;* *; | |
;* *; | |
;**************************************************************************/ | |
DefinitionBlock ( | |
"Rtd3.aml", | |
"SSDT", | |
1, | |
"AcpiRef", | |
"Msg_Rtd3", | |
0x1000 | |
) | |
{ | |
External(RTD3) //flag if RTD3 is enabled | |
If(LEqual(RTD3,1)) | |
{ | |
Scope (\_SB) | |
{ | |
Name(OSCI, 0) // \_SB._OSC DWORD2 input | |
Name(OSCO, 0) // \_SB._OSC DWORD2 output | |
//Arg0 -- A buffer containing UUID | |
//Arg1 -- An Interger containing a Revision ID of the buffer format | |
//Arg2 -- An interger containing a count of entries in Arg3 | |
//Arg3 -- A buffer containing a list of DWORD capacities | |
Method(_OSC, 4, NotSerialized) | |
{ | |
// Check for proper UUID | |
If(LEqual(Arg0, ToUUID("0811B06E-4A27-44F9-8D60-3CBBC22E7B48"))) | |
{ | |
CreateDWordField(Arg3,0,CDW1) //bit1,2 is always clear | |
CreateDWordField(Arg3,4,CDW2) //Table 6-147 from ACPI spec | |
Store(CDW2, OSCI) // Save DWord2 | |
Or(OSCI, 0x4, OSCO) // Only allow _PR3 support | |
If(LNotEqual(Arg1,One)) | |
{ | |
Or(CDW1,0x08,CDW1) // Unknown revision | |
} | |
If(LNotEqual(OSCI, OSCO)) | |
{ | |
Or(CDW1,0x10,CDW1) // Capabilities bits were masked | |
} | |
Store(OSCO, CDW2) // Replace DWord2 | |
Return(Arg3) | |
} Else | |
{ | |
Or(CDW1,4,CDW1) // Unrecognized UUID | |
Return(Arg3) | |
} | |
}// End _OSC | |
} | |
}//end of RTD3 condition | |
//USB RTD3 code | |
If(LEqual(RTD3,1)) | |
{ | |
Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR13) | |
{ | |
Name(_PR0, Package() {\PR34}) | |
Name(_PR3, Package() {\PR34}) | |
Method(_S0W, 0) | |
{ | |
If(And(\_SB.OSCO, 0x04)) // PMEs can be genrated from D3cold | |
{ | |
Return(4) // OS comprehends D3cold, as described via \_SB._OSC | |
} Else | |
{ | |
Return(3) | |
} | |
} // End _S0W | |
} | |
Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR14) | |
{ | |
Name(_PR0, Package() {\PR34}) | |
Name(_PR3, Package() {\PR34}) | |
Method(_S0W, 0) | |
{ | |
If(And(\_SB.OSCO, 0x04)) | |
{ | |
Return(4) | |
} Else | |
{ | |
Return(3) | |
} | |
} // End _S0W | |
} | |
Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR15) | |
{ | |
Name(_PR0, Package() {\PR56}) | |
Name(_PR3, Package() {\PR56}) | |
Method(_S0W, 0) | |
{ | |
If(And(\_SB.OSCO, 0x04)) | |
{ | |
Return(4) | |
} Else | |
{ | |
Return(3) | |
} | |
} // End _S0W | |
} | |
Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR16) | |
{ | |
Name(_PR0, Package() {\PR56}) | |
Name(_PR3, Package() {\PR56}) | |
Method(_S0W, 0) | |
{ | |
If(And(\_SB.OSCO, 0x04)) | |
{ | |
Return(4) | |
} Else | |
{ | |
Return(3) | |
} | |
} // End _S0W | |
} | |
Scope(\_SB.PCI0.XHC1) // XHCI host only controller | |
{ | |
Method(_PS0,0,Serialized) // set device into D0 state | |
{ | |
} | |
Method(_PS3,0,Serialized) // place device into D3H state | |
{ | |
//write to PMCSR | |
} | |
Method(_DSW, 3,Serialized) // enable or disable the device’s ability to wake a sleeping system. | |
{ | |
} | |
} | |
Scope(\_SB.PCI0.XHC1.RHUB.HS01) | |
{ | |
} | |
Scope(\_SB.PCI0.XHC1.RHUB.SSP1) | |
{ | |
} | |
Scope(\_SB.PCI0.XHC2) // OTG | |
{ | |
Method(_PS0,0,Serialized) // set device into D0 state | |
{ | |
} | |
Method(_PS3,0,Serialized) // place device into D3H state | |
{ | |
//write to PMCSR | |
} | |
Method(_DSW, 3,Serialized) // enable or disable the device’s ability to wake a sleeping system. | |
{ | |
} | |
} | |
Scope(\_SB.PCI0.XHC2.RHUB.HS01) | |
{ | |
} | |
Scope(\_SB.PCI0.XHC2.RHUB.SSP1) | |
{ | |
} | |
} //If(LEqual(RTD3,1)) USB | |
}//end of SSDT |