123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- /**************************************************************************;
- ;* *;
- ;* *;
- ;* Intel Corporation - ACPI Reference Code for the Baytrail *;
- ;* Family of Customer Reference Boards. *;
- ;* *;
- ;* *;
- ;* Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved *;
- ;
- ; SPDX-License-Identifier: BSD-2-Clause-Patent
- ;
- ;* *;
- ;* *;
- ;**************************************************************************/
- 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
|