blob: eb607c6b2ed4a9c7671d98bf41a2377a6b68e610 [file] [log] [blame]
Vishal Bhoj82c80712015-12-15 21:13:33 +05301/**************************************************************************;
2;* *;
3;* *;
4;* Intel Corporation - ACPI Reference Code for the Baytrail *;
5;* Family of Customer Reference Boards. *;
6;* *;
7;* *;
8;* Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved *;
9;
10; This program and the accompanying materials are licensed and made available under
11; the terms and conditions of the BSD License that accompanies this distribution.
12; The full text of the license may be found at
13; http://opensource.org/licenses/bsd-license.php.
14;
15; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17;
18;* *;
19;* *;
20;**************************************************************************/
21DefinitionBlock (
22 "Rtd3.aml",
23 "SSDT",
24 1,
25 "AcpiRef",
26 "Msg_Rtd3",
27 0x1000
28)
29{
30 External(RTD3) //flag if RTD3 is enabled
31
32 If(LEqual(RTD3,1))
33 {
34 Scope (\_SB)
35 {
36 Name(OSCI, 0) // \_SB._OSC DWORD2 input
37 Name(OSCO, 0) // \_SB._OSC DWORD2 output
38
39 //Arg0 -- A buffer containing UUID
40 //Arg1 -- An Interger containing a Revision ID of the buffer format
41 //Arg2 -- An interger containing a count of entries in Arg3
42 //Arg3 -- A buffer containing a list of DWORD capacities
43 Method(_OSC, 4, NotSerialized)
44 {
45 // Check for proper UUID
46 If(LEqual(Arg0, ToUUID("0811B06E-4A27-44F9-8D60-3CBBC22E7B48")))
47 {
48 CreateDWordField(Arg3,0,CDW1) //bit1,2 is always clear
49 CreateDWordField(Arg3,4,CDW2) //Table 6-147 from ACPI spec
50
51 Store(CDW2, OSCI) // Save DWord2
52 Or(OSCI, 0x4, OSCO) // Only allow _PR3 support
53
54 If(LNotEqual(Arg1,One))
55 {
56 Or(CDW1,0x08,CDW1) // Unknown revision
57 }
58
59 If(LNotEqual(OSCI, OSCO))
60 {
61 Or(CDW1,0x10,CDW1) // Capabilities bits were masked
62 }
63
64 Store(OSCO, CDW2) // Replace DWord2
65 Return(Arg3)
66 } Else
67 {
68 Or(CDW1,4,CDW1) // Unrecognized UUID
69 Return(Arg3)
70 }
71 }// End _OSC
72 }
73 }//end of RTD3 condition
74
75
76 //USB RTD3 code
77 If(LEqual(RTD3,1))
78 {
79 Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR13)
80 {
81 Name(_PR0, Package() {\PR34})
82 Name(_PR3, Package() {\PR34})
83
84 Method(_S0W, 0)
85 {
86 If(And(\_SB.OSCO, 0x04)) // PMEs can be genrated from D3cold
87 {
88 Return(4) // OS comprehends D3cold, as described via \_SB._OSC
89 } Else
90 {
91 Return(3)
92 }
93 } // End _S0W
94 }
95
96 Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR14)
97 {
98 Name(_PR0, Package() {\PR34})
99 Name(_PR3, Package() {\PR34})
100
101 Method(_S0W, 0)
102 {
103 If(And(\_SB.OSCO, 0x04))
104 {
105 Return(4)
106 } Else
107 {
108 Return(3)
109 }
110 } // End _S0W
111 }
112
113
114 Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR15)
115 {
116 Name(_PR0, Package() {\PR56})
117 Name(_PR3, Package() {\PR56})
118
119 Method(_S0W, 0)
120 {
121 If(And(\_SB.OSCO, 0x04))
122 {
123 Return(4)
124 } Else
125 {
126 Return(3)
127 }
128 } // End _S0W
129 }
130
131 Scope(\_SB.PCI0.EHC1.HUBN.PR01.PR16)
132 {
133 Name(_PR0, Package() {\PR56})
134 Name(_PR3, Package() {\PR56})
135
136 Method(_S0W, 0)
137 {
138 If(And(\_SB.OSCO, 0x04))
139 {
140 Return(4)
141 } Else
142 {
143 Return(3)
144 }
145 } // End _S0W
146 }
147
148 Scope(\_SB.PCI0.XHC1) // XHCI host only controller
149 {
150
151 Method(_PS0,0,Serialized) // set device into D0 state
152 {
153 }
154
155 Method(_PS3,0,Serialized) // place device into D3H state
156 {
157 //write to PMCSR
158 }
159
160 Method(_DSW, 3,Serialized) // enable or disable the device’s ability to wake a sleeping system.
161 {
162 }
163 }
164
165 Scope(\_SB.PCI0.XHC1.RHUB.HS01)
166 {
167
168 }
169
170 Scope(\_SB.PCI0.XHC1.RHUB.SSP1)
171 {
172
173 }
174
175 Scope(\_SB.PCI0.XHC2) // OTG
176 {
177
178 Method(_PS0,0,Serialized) // set device into D0 state
179 {
180 }
181
182 Method(_PS3,0,Serialized) // place device into D3H state
183 {
184 //write to PMCSR
185 }
186
187 Method(_DSW, 3,Serialized) // enable or disable the device’s ability to wake a sleeping system.
188 {
189 }
190 }
191
192 Scope(\_SB.PCI0.XHC2.RHUB.HS01)
193 {
194
195 }
196
197 Scope(\_SB.PCI0.XHC2.RHUB.SSP1)
198 {
199
200 }
201 } //If(LEqual(RTD3,1)) USB
202
203}//end of SSDT