2 * This file is part of the coreboot project.
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
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.
18 Name(_ADR, 0x00120000)
19 Name(_PRW, Package() { 0xb, 3 })
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) }
32 Name(_PR0, Package() { P0U2 }) /* Indicate support for D0 */
33 Name(_PR3, Package() { P3U2 }) /* Indicate support for D3cold */
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 */
78 PowerResource(P0U3, 0, 0) {
89 PowerResource(P3U3, 0, 0) {
103 PowerResource(P0U2, 0, 0) {
114 PowerResource(P3U2, 0, 0) {
127 OperationRegion(EHMC, SystemMemory, EH10, 0x100)
128 Field(EHMC, DwordAcc, NoLock, Preserve)
135 Method(U2D3,0, Serialized)
137 if (LNotEqual(EH10, Zero)) {
143 if (LEqual(E_PS, 3)) {
155 while (LNotEqual(Local0, Zero)) {
161 if (LEqual(U3TD, 0x03)) { /* Shutdown USB2 PLL */
168 Method(U2D0,0, Serialized)
178 while (LNotEqual(Local0,0x7)) {
185 while (LNot(Local0)) {
191 if (LNotEqual(EH10, Zero)) {
201 Method(LXFW,3, Serialized) //Load Xhci FirmWare
203 Store (One, FWLM) /* Firmware Load Mode */
204 Store (Arg0, ROAM) /* ROM/RAM */
207 Store (One, FPLS) /* Firmware Preload Start */
208 Store (FPLC, Local0) /* Firmware Preload Complete */
209 while (LNot(Local0)) {
215 Method(U3D3,0, Serialized)
217 if (LEqual(U_PS, 3)) {
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)
225 Store (One, UD3P) /* U3P_D3Cold_PWRDN */
227 Store (Zero, U3PD) /* PwrOnDev */
229 while (Local0) { /* RstBState, RefClkOkState, PwrRstBState */
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 */
241 Store (Zero, U3PG) /* XhcPwrGood */
242 Store (One, U3PS) /* Usb3PowerSel */
246 Method(U3D0,0, Serialized)
248 Store (Zero, U3PS) /* Usb3PowerSel */
249 Store (One, U3PG) /* XhcPwrGood */
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))) {
266 Store (U3PY, Local0) /* USB3 PHY Lock */
267 while (LNot(Local0)) {
271 Store (Zero, U3PR) /* U3P_RESTORE_RESET */
273 Store (AUSS, Local0) /* AutoSizeStart */
274 if (LNotEqual(Local0,1)) {
278 while (LNotEqual(Local0,1)) {
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 */
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)
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)