soc: Remove copyright notices
[coreboot.git] / src / soc / amd / stoneyridge / acpi / usb.asl
blobf06e04d9bffc84d9a5fc270c6b9ad48b6e769599
1 /*
2  * This file is part of the coreboot project.
3  *
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License as
7  * published by the Free Software Foundation; version 2 of
8  * the License.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  */
16 /* 0:12.0 - EHCI */
17 Device(EHC0) {
18         Name(_ADR, 0x00120000)
19         Name(_PRW, Package() { 0xb, 3 })
20         Device (RHUB) {
21                 Name (_ADR, Zero)
22                 Device (HS01) { Name (_ADR, 1) }
23                 Device (HS02) { Name (_ADR, 2) }
24                 Device (HS03) { Name (_ADR, 3) }
25                 Device (HS04) { Name (_ADR, 4) }
26                 Device (HS05) { Name (_ADR, 5) }
27                 Device (HS06) { Name (_ADR, 6) }
28                 Device (HS07) { Name (_ADR, 7) }
29                 Device (HS08) { Name (_ADR, 8) }
30         }
32         Name(_PR0, Package() { P0U2 }) /* Indicate support for D0 */
33         Name(_PR3, Package() { P3U2 }) /* Indicate support for D3cold */
35         Method(_S0W,0) {
36                 Return(0)
37         }
39         Method(_S3W,0) {
40                 Return(4)
41         }
43         Method(_S4W,0) {
44                 Return(4)
45         }
46 } /* end EHC0 */
49 /* 0:10.0 - XHCI 0*/
50 Device(XHC0) {
51         Name(_ADR, 0x00100000)
52         Name(_PRW, Package() { 0xb, 3 })
53         Device (SS01) { Name (_ADR, 1) }
54         Device (SS02) { Name (_ADR, 2) }
55         Device (SS03) { Name (_ADR, 3) }
57         Name(_PR0, Package() { P0U3 }) /* Indicate support for D0 */
58         Name(_PR3, Package() { P3U3 }) /* Indicate support for D3cold */
60         Method(_S0W,0) {
61                 Return(0)
62         }
64         Method(_S3W,0) {
65                 Return(4)
66         }
68         Method(_S4W,0) {
69                 Return(4)
70         }
72 } /* end XHC0 */
74 Scope(\_SB)
76         Name(XHD0, 0)
77         Name(XHD3, 0)
78         PowerResource(P0U3, 0, 0) {
79                 Method(_STA) {
80                         Return(XHD0)
81                 }
82                 Method(_ON) {
83                         Store(0x01, XHD0)
84                 }
85                 Method(_OFF) {
86                         Store(0x00, XHD0)
87                 }
88         }
89         PowerResource(P3U3, 0, 0) {
90                 Method(_STA) {
91                         Return(XHD3)
92                 }
93                 Method(_ON) {
94                         Store(0x01, XHD3)
95                 }
96                 Method(_OFF) {
97                         Store(0x00, XHD3)
98                 }
99         }
101         Name(EHD0, 0)
102         Name(EHD3, 0)
103         PowerResource(P0U2, 0, 0) {
104                 Method(_STA) {
105                         Return(EHD0)
106                 }
107                 Method(_ON) {
108                         Store(0x01, EHD0)
109                 }
110                 Method(_OFF) {
111                         Store(0x00, EHD0)
112                 }
113         }
114         PowerResource(P3U2, 0, 0) {
115                 Method(_STA) {
116                         Return(EHD3)
117                 }
118                 Method(_ON) {
119                         Store(0x01, EHD3)
120                 }
121                 Method(_OFF) {
122                         Store(0x00, EHD3)
123                 }
124         }
127 OperationRegion(EHMC, SystemMemory, EH10, 0x100)
128 Field(EHMC, DwordAcc, NoLock, Preserve)
130         Offset(0xb0),
131         , 5,
132         ESIM, 1,
135 Method(U2D3,0, Serialized)
137         if (LNotEqual(EH10, Zero)) {
138                 Store (EH10, EHBA)
139                 Store (One, EHME)
140                 Store (ESIM, SSIM)
141         }
143         if (LEqual(E_PS, 3)) {
144                 Store (Zero, RQTY)
145                 Store (One, RQ18)
147                 Store (U2SR, Local0)
148                 while (Local0) {
149                         Store (U2SR, Local0)
150                 }
152                 Store (Zero, U2PD)
154                 Store (U2DS, Local0)
155                 while (LNotEqual(Local0, Zero)) {
156                         Store (U2DS, Local0)
157                 }
159                 Store (0x03,U2TD)
161                 if (LEqual(U3TD, 0x03)) { /* Shutdown USB2 PLL */
162                     PWGC (0x40, 0)
163                     Store (One, U2RP)
164                 }
165         }
168 Method(U2D0,0, Serialized)
170         PWGC (0x40, 1)
171         Store (Zero, U2RP)
172         Store (0x00,U2TD)
174         Store (Zero, U2TD)
175         Store (One, U2PD)
177         Store (U2DS, Local0)
178         while (LNotEqual(Local0,0x7)) {
179                 Store (U2DS, Local0)
180         }
182         Store (One, RQTY)
183         Store (One, RQ18)
184         Store (U2SR, Local0)
185         while (LNot(Local0)) {
186                 Store (U2SR, Local0)
187         }
188         Store (EHID, EH2C)
191         if (LNotEqual(EH10, Zero)) {
192                 Store (EH10, EHBA)
193                 Store (One, EHME)
194                 Store (SSIM, ESIM)
195         }
197         Store (ES54, EH54)
198         Store (ES64, EH64)
201 Method(LXFW,3, Serialized)  //Load Xhci FirmWare
203         Store (One, FWLM)  /* Firmware Load Mode */
204         Store (Arg0, ROAM) /* ROM/RAM */
205         Store (Arg1, UA04)
206         Store (Arg2, UA08)
207         Store (One, FPLS)    /* Firmware Preload Start */
208         Store (FPLC, Local0) /* Firmware Preload Complete */
209         while (LNot(Local0)) {
210                 Store (FPLC, Local0)
211         }
212         Store (Zero, FPLS)
215 Method(U3D3,0, Serialized)
217         if (LEqual(U_PS, 3)) {
218                 X0_S ()
220                 Or (PGA3, 0x20, PGA3) /* SwUsb3SlpShutdown */
221                 And (PGA3, 0x20, Local0)
222                 while (LNot(Local0)) { /* wait for it to complete */
223                         And (PGA3, 0x20, Local0)
224                 }
225                 Store (One, UD3P) /* U3P_D3Cold_PWRDN */
227                 Store (Zero, U3PD) /* PwrOnDev */
228                 Store (U3DS, Local0)
229                 while (Local0) { /* RstBState, RefClkOkState, PwrRstBState */
230                         Store (U3DS, Local0)
231                 }
233                 Store (0x3, U3TD) /* TargetedDeviceState */
235                 Store (One, U3RP) /* USB3_RefClk_Pwdn */
237                 if (Lequal(U2TD, 0x3)) { /* If EHCI targeted in D3cold */
238                         And (PGA3, 0x9f, PGA3) /* SwUsb2S5RstB */
239                         Store (One, U2RP)      /* USB2_RefClk_Pwdn */
240                 }
241                 Store (Zero, U3PG) /* XhcPwrGood  */
242                 Store (One, U3PS)  /* Usb3PowerSel */
243         }
246 Method(U3D0,0, Serialized)
248         Store (Zero, U3PS) /* Usb3PowerSel */
249         Store (One, U3PG)  /* XhcPwrGood  */
251         Store (Zero, U2RP)
252         Store (Zero, U3RP)
254         And (PGA3, 0xdf, Local0)
255         Or (Local0, 0x40, Local0)
256         Store (Local0, PGA3) /* SwUsb2S5RstB */
258         Store (Zero, U3TD) /* TargetedDeviceState */
259         Store (One, U3PD)  /* PwrOnDev */
261         Store (U3DS, Local0) /* wait for RstBState, RefClkOkState, PwrRstBState */
262         while (LNot(Lequal(Local0, 0x7))) {
263                 Store (U3DS, Local0)
264         }
266         Store (U3PY, Local0) /* USB3 PHY Lock */
267         while (LNot(Local0)) {
268                 Store (U3PY, Local0)
269         }
271         Store (Zero, U3PR) /* U3P_RESTORE_RESET */
273         Store (AUSS, Local0) /* AutoSizeStart */
274         if (LNotEqual(Local0,1)) {
275                 Store(One, AUSS)
276         }
277         Store (AUSS, Local0)
278         while (LNotEqual(Local0,1)) {
279                 Store (AUSS, Local0)
280         }
282         LXFW (1, FW00, FW01)
283         LXFW (0, FW02, FW03)
285         X0_R ()
287         Store (One, U3PR)  /* U3P_RESTORE_RESET */
288         Store (Zero, UD3P) /* U3P_D3Cold_PWRDN */
289         Store (One, U3TD)  /* TargetedDeviceState */
292 Name (SVBF, Buffer (0x1000) {0})    /* length from FchCarrizo.asl, new fields */
293 CreateDWordField(SVBF, 0x000, S000) /* will be easier to add from there */
294 CreateDWordField(SVBF, 0x004, S004)
295 CreateDWordField(SVBF, 0x008, S008)
296 CreateDWordField(SVBF, 0x00C, S00C)
297 CreateDWordField(SVBF, 0x018, S018)
298 CreateDWordField(SVBF, 0x01C, S01C)
299 CreateDWordField(SVBF, 0x020, S020)
300 CreateDWordField(SVBF, 0x030, S030)
301 CreateDWordField(SVBF, 0x118, S118)
302 CreateDWordField(SVBF, 0x158, S158)
303 CreateDWordField(SVBF, 0x198, S198)
304 CreateDWordField(SVBF, 0x1D8, S1D8)
305 CreateDWordField(SVBF, 0x300, S300)
306 CreateDWordField(SVBF, 0x304, S304)
307 CreateDWordField(SVBF, 0x308, S308)
308 CreateDWordField(SVBF, 0x30C, S30C)
309 CreateDWordField(SVBF, 0x310, S310)
310 CreateDWordField(SVBF, 0x428, S428)
311 CreateDWordField(SVBF, 0x438, S438)
312 CreateDWordField(SVBF, 0x43C, S43C)
313 CreateDWordField(SVBF, 0x458, S458)
314 CreateDWordField(SVBF, 0x468, S468)
315 CreateDWordField(SVBF, 0x46C, S46C)
316 CreateDWordField(SVBF, 0x470, S470)
317 CreateDWordField(SVBF, 0x480, S480)
318 CreateDWordField(SVBF, 0x484, S484)
319 CreateDWordField(SVBF, 0x488, S488)
320 CreateDWordField(SVBF, 0x48C, S48C)
321 CreateDWordField(SVBF, 0x730, EHID) /* EHCI SSID    */
322 CreateDWordField(SVBF, 0x734, XHID) /* XHCI SSID    */
323 CreateByteField(SVBF, 0x740, ES54)  /* EHCI PCIx54  */
324 CreateByteField(SVBF, 0x741, ES64)  /* EHCI PCIx64  */
325 CreateDWordField(SVBF, 0x7B0, SSIM) /* EHCI SIM BIT */
327 Method(X0_S,0)
329         Store (XH2C, XHID)
330         Store (0x00000000, IDEX) Store (DATA, S000)
331         Store (0x00000004, IDEX) Store (DATA, S004)
332         Store (0x00000008, IDEX) Store (DATA, S008)
333         Store (0x0000000c, IDEX) Store (DATA, S00C)
334         Store (0x00000018, IDEX) Store (DATA, S018)
335         Store (0x0000001c, IDEX) Store (DATA, S01C)
336         Store (0x00000020, IDEX) Store (DATA, S020)
337         Store (0x00000030, IDEX) Store (DATA, S030)
338         Store (0x00000118, IDEX) Store (DATA, S118)
339         Store (0x00000158, IDEX) Store (DATA, S158)
340         Store (0x00000198, IDEX) Store (DATA, S198)
341         Store (0x000001d8, IDEX) Store (DATA, S1D8)
342         Store (0x00000300, IDEX) Store (DATA, S300)
343         Store (0x00000304, IDEX) Store (DATA, S304)
344         Store (0x00000308, IDEX) Store (DATA, S308)
345         Store (0x0000030c, IDEX) Store (DATA, S30C)
346         Store (0x00000310, IDEX) Store (DATA, S310)
347         Store (0x40000028, IDEX) Store (DATA, S428)
348         Store (0x40000038, IDEX) Store (DATA, S438)
349         Store (0x4000003c, IDEX) Store (DATA, S43C)
350         Store (0x40000058, IDEX) Store (DATA, S458)
351         Store (0x40000068, IDEX) Store (DATA, S468)
352         Store (0x4000006c, IDEX) Store (DATA, S46C)
353         Store (0x40000070, IDEX) Store (DATA, S470)
354         Store (0x40000080, IDEX) Store (DATA, S480)
355         Store (0x40000084, IDEX) Store (DATA, S484)
356         Store (0x40000088, IDEX) Store (DATA, S488)
357         Store (0x4000008c, IDEX) Store (DATA, S48C)
360 Method(X0_R,0)
362         Store (XHID, XH2C)
363         Store (0x00000000, IDEX) Store (S000, DATA)
364         Store (0x00000004, IDEX) Store (S004, DATA)
365         Store (0x00000008, IDEX) Store (S008, DATA)
366         Store (0x0000000c, IDEX) Store (S00C, DATA)
367         Store (0x00000018, IDEX) Store (S018, DATA)
368         Store (0x0000001c, IDEX) Store (S01C, DATA)
369         Store (0x00000020, IDEX) Store (S020, DATA)
370         Store (0x00000030, IDEX) Store (S030, DATA)
371         Store (0x00000118, IDEX) Store (S118, DATA)
372         Store (0x00000158, IDEX) Store (S158, DATA)
373         Store (0x00000198, IDEX) Store (S198, DATA)
374         Store (0x000001d8, IDEX) Store (S1D8, DATA)
375         Store (0x00000300, IDEX) Store (S300, DATA)
376         Store (0x00000304, IDEX) Store (S304, DATA)
377         Store (0x00000308, IDEX) Store (S308, DATA)
378         Store (0x0000030c, IDEX) Store (S30C, DATA)
379         Store (0x00000310, IDEX) Store (S310, DATA)
380         Store (0x40000028, IDEX) Store (S428, DATA)
381         Store (0x40000038, IDEX) Store (S438, DATA)
382         Store (0x4000003c, IDEX) Store (S43C, DATA)
383         Store (0x40000058, IDEX) Store (S458, DATA)
384         Store (0x40000068, IDEX) Store (S468, DATA)
385         Store (0x4000006c, IDEX) Store (S46C, DATA)
386         Store (0x40000070, IDEX) Store (S470, DATA)
387         Store (0x40000080, IDEX) Store (S480, DATA)
388         Store (0x40000084, IDEX) Store (S484, DATA)
389         Store (0x40000088, IDEX) Store (S488, DATA)
390         Store (0x4000008c, IDEX) Store (S48C, DATA)