1 /**************************************************************************;
4 ;* Intel Corporation - ACPI Reference Code for the Baytrail *;
5 ;* Family of Customer Reference Boards. *;
8 ;* Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved *;
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.
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.
20 ;**************************************************************************/
23 Name (_HID, "INT3396")
24 Name(_CID, 0x800dd041)
27 // Indicates if the platform PEP has loaded
30 // Devices score-boarded by the PEP, Rev0 format
31 Name (DEVS, Package() {0})
33 // Devices score-boarded by the PEP, Rev1 format
36 Package () {"\\_SB.PCI0.XHC1", 0x1},
37 Package () {"\\_SB.PCI0.EHC1", 0x1},
38 Package () {"\\_SB.PCI0.GFX0", 0x1},
39 Package () {"\\_SB.PCI0.GFX0.ISP0", 0x1},
40 Package () {"\\_SB.PCI0.SEC0", 0x1},
41 Package () {"\\_SB.I2C1", 0x1},
42 Package () {"\\_SB.I2C2", 0x1},
43 Package () {"\\_SB.I2C3", 0x1},
44 Package () {"\\_SB.I2C4", 0x1},
45 Package () {"\\_SB.I2C5", 0x1},
46 Package () {"\\_SB.I2C6", 0x1},
47 Package () {"\\_SB.I2C7", 0x1},
48 Package () {"\\_SB.SDHA", 0x1},
49 Package () {"\\_SB.SDHB", 0x1},
50 Package () {"\\_SB.SDHC", 0x1},
51 Package () {"\\_SB.SPI1", 0x1},
52 Package () {"\\_SB.URT1", 0x1},
53 Package () {"\\_SB.URT2", 0x1},
55 // Crashdump device package
56 Name(CDMP, Package(2) {})
57 // Device dependency for uPEP
60 Package() {"\\_PR.CPU0", 0x1, Package() {Package() {0xFF, 0}}},
61 Package() {"\\_PR.CPU1", 0x1, Package() {Package() {0xFF, 0}}},
62 Package() {"\\_PR.CPU2", 0x1, Package() {Package() {0xFF, 0}}},
63 Package() {"\\_PR.CPU3", 0x1, Package() {Package() {0xFF, 0}}},
64 Package() {"\\_SB.I2C1", 0x1, Package() {Package() {0xFF,3}}},
65 Package() {"\\_SB.I2C2", 0x1, Package() {Package() {0xFF,3}}},
66 Package() {"\\_SB.I2C3", 0x1, Package() {Package() {0xFF,3}}},
67 Package() {"\\_SB.I2C4", 0x1, Package() {Package() {0xFF,3}}},
68 Package() {"\\_SB.I2C5", 0x1, Package() {Package() {0xFF,3}}},
69 Package() {"\\_SB.I2C6", 0x1, Package() {Package() {0xFF,3}}},
70 Package() {"\\_SB.I2C7", 0x1, Package() {Package() {0xFF,3}}},
71 Package() {"\\_SB.PCI0.GFX0", 0x1, Package() {Package() {0xFF,3}}},
72 Package() {"\\_SB.PCI0.SEC0", 0x1, Package() {Package() {0xFF,3}}},
73 Package() {"\\_SB.PCI0.XHC1", 0x1, Package() {Package() {0xFF,3}}},
74 Package() {"\\_SB.PCI0.GFX0.ISP0", 0x1, Package() {Package() {0xFF,3}}},
75 Package() {"\\_SB.LPEA", 0x1, Package() {Package() {0x0,3}, Package() {0x1,0}, Package() {0x2,3}, Package() {0x3,3}}},
76 Package() {"\\_SB.SDHA", 0x1, Package() {Package() {0xFF,3}}},
77 Package() {"\\_SB.SDHB", 0x1, Package() {Package() {0xFF,3}}},
78 Package() {"\\_SB.SDHC", 0x1, Package() {Package() {0xFF,3}}},
79 Package() {"\\_SB.SPI1", 0x1, Package() {Package() {0xFF,3}}},
80 Package() {"\\_SB.URT1", 0x1, Package() {Package() {0xFF,3}}},
81 Package() {"\\_SB.URT2", 0x1, Package() {Package() {0xFF,3}}}
83 // BCCD crashdump information
91 Package() { Package() {0, 32, 0, 3, 0xFFFFFFFFFFFFFFFF}, Package() {0xFFFFFFFC, 0x0, 0x4}, 0}
96 Method(_STA, 0x0, NotSerialized)
101 Method(_DSM, 0x4, Serialized)
103 If(LEqual(Arg0,ToUUID("B8FEBFE0-BAF8-454b-AECD-49FB91137B21")))
106 // Number of fn IDs supported
107 If(LEqual(Arg2, Zero))
116 If(LEqual(Arg2, One))
122 // Mitigation devices
123 If(LEqual(Arg2, 0x2))
125 If(LEqual(Arg1, 0x0))
130 If(LEqual(Arg1, 0x1))
137 // Crashdump device data
138 If(LEqual(Arg2, 0x3))
140 Store("\\_SB.SDHA", Index(CDMP,0))
141 Store(EM1A, Index(CDMP,1))
145 // New UUID for built-in uPEP
146 If(LEqual(Arg0,ToUUID("C4EB40A0-6CD2-11E2-BCFD-0800200C9A66")))
149 // Number of fn IDs supported
150 If(LEqual(Arg2, Zero))
157 // LPI device dependencies
158 If(LEqual(Arg2, 0x1))
162 // Crashdump device data
163 If(LEqual(Arg2, 0x2))
166 Add(Local0, 0x84, Local0)
167 Store(Local0, Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(BCCD, Zero, )), One, )), Zero, )), Zero, )), 0x4, ))
182 Name (_HID, "80860F14")
183 Name (_CID, "PNP0D40")
184 Name (_DDN, "Intel(R) eMMC Controller - 80860F14")
186 Name(_DEP, Package(0x1)
191 Name (RBF1, ResourceTemplate ()
193 Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
194 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {45} // eMMC 4.41 IRQ
197 Method (_CRS, 0x0, NotSerialized)
199 // Update the Base address for BAR0 of eMMC 4.41
200 CreateDwordField(^RBF1, ^BAR0._BAS, B0B1)
201 CreateDwordField(^RBF1, ^BAR0._LEN, B0L1)
206 Method (_STA, 0x0, NotSerialized)
209 // PCIM>> 0:ACPI mode 1:PCI mode
210 // SD1D>> 0:eMMC 4.41 enable 1:eMMC 4.41 disable
212 If (LAnd(LEqual(PCIM, 0), LEqual(SD1D, 0)))
223 Method (_PS3, 0, NotSerialized)
225 OR(PSAT, 0x00000003, PSAT)
226 OR(PSAT, 0X00000000, PSAT)
228 // If not B1, still keep 2 ms w/a
230 If(LLess(SOCS, 0x03))
235 Method (_PS0, 0, NotSerialized)
237 And(PSAT, 0xfffffffC, PSAT)
238 OR(PSAT, 0X00000000, PSAT)
240 // If not B1, still keep 2 ms w/a
242 If(LLess(SOCS, 0x03))
248 OperationRegion (KEYS, SystemMemory, eM1A, 0x100)
249 Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
255 Method (_DIS, 0x0, NotSerialized)
257 //Adding dummy disable methods for device EMM0
262 Name (_ADR, 0x00000008) // Slot 0, Function 8
263 Method (_RMV, 0, NotSerialized)
277 Name (_HID, "80860F14")
278 Name (_CID, "PNP0D40")
279 Name (_DDN, "Intel(R) eMMC Controller - 80860F14")
281 Name(_DEP, Package(0x1)
286 Name (RBF1, ResourceTemplate ()
288 Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
289 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {44} // eMMC 4.5 IRQ
291 Method (_CRS, 0x0, NotSerialized)
293 CreateDwordField(^RBF1, ^BAR0._BAS, B0B1)
294 CreateDwordField(^RBF1, ^BAR0._LEN, B0L1)
299 Method (_STA, 0x0, NotSerialized)
302 // PCIM>> 0:ACPI mode 1:PCI mode
303 // HSID>> 0:eMMC 4.5 enable 1:eMMC 4.5 disable
305 If (LAnd(LEqual(PCIM, 0), LEqual(HSID, 0)))
316 Method (_PS3, 0, NotSerialized)
318 OR(PSAT, 0x00000003, PSAT)
319 OR(PSAT, 0X00000000, PSAT)
321 // If not B1, still keep 2 ms w/a
323 If(LLess(SOCS, 0x03))
328 Method (_PS0, 0, NotSerialized)
330 And(PSAT, 0xfffffffC, PSAT)
331 OR(PSAT, 0X00000000, PSAT)
333 // If not B1, still keep 2 ms w/a
335 If(LLess(SOCS, 0x03))
341 OperationRegion (KEYS, SystemMemory, eM1A, 0x100)
342 Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
348 Method (_DIS, 0x0, NotSerialized)
350 //Adding dummy disable methods for device EMM0
355 Name (_ADR, 0x00000008) // Slot 0, Function 8
356 Method (_RMV, 0, NotSerialized)
370 Name (_HID, "INT33BB")
371 Name (_CID, "PNP0D40")
372 Name (_DDN, "Intel(R) SDIO Controller - 80860F15")
375 Name(_DEP, Package(0x01)
381 Name (RBUF, ResourceTemplate ()
383 Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
384 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {46} // SDIO IRQ
387 Method (_CRS, 0x0, NotSerialized)
390 CreateDwordField(^RBUF, ^BAR0._BAS, B0BA)
391 CreateDwordField(^RBUF, ^BAR0._LEN, B0LN)
396 Method (_STA, 0x0, NotSerialized)
398 If (LLessEqual(STEP, 0x04))
405 // PCIM>> 0:ACPI mode 1:PCI mode
407 If (LEqual(PCIM, 1)) {
411 If (LOr(LEqual(SI0A, 0), LEqual(SD2D, 1)))
417 Method (_DIS, 0x0, NotSerialized)
419 //Adding dummy disable methods for device EMM0
422 Method (_PS3, 0, NotSerialized)
424 OR(PSAT, 0x00000003, PSAT)
425 OR(PSAT, 0X00000000, PSAT)
427 Method (_PS0, 0, NotSerialized)
429 And(PSAT, 0xfffffffC, PSAT)
430 OR(PSAT, 0X00000000, PSAT)
432 if(LEqual(\_SB.SDHB.PSTS,0x0))
434 if(LEqual (\_SB.GPO2.AVBL, 1))
436 Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state
437 Store( 0x01, \_SB.SDHB.PSTS) // indicates that the device powered ON
443 OperationRegion (KEYS, SystemMemory, SI1A, 0x100)
444 Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
453 Name (_ADR, 0x01) //SlotNumber + Function
454 Name (_DEP, Package() {\_SB.GPO2})
456 Method (_RMV, 0, NotSerialized)
460 Name (_PRW, Package() {0, 0})
463 Method (_CRS, 0, Serialized)
465 Name (RBUF, ResourceTemplate ()
467 Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, , , ) {73}
472 Method (_PS3, 0, NotSerialized)
474 if(LEqual (\_SB.GPO2.AVBL, 1))
476 Store( 0x00, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 0 puts the device in reset state
477 Store( 0x00, \_SB.SDHB.PSTS) //Indicates that the device is powered off
481 Method (_PS0, 0, NotSerialized)
483 if(LEqual(\_SB.SDHB.PSTS,0x0))
485 if(LEqual (\_SB.GPO2.AVBL, 1))
487 Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state
488 Store( 0x01, \_SB.SDHB.PSTS) // indicates that the device powered ON
494 // Secondary Broadcom WIFI function
498 Name(_ADR, 0x2) // function 2
501 // The device is not removable. This must be a method.
503 Method(_RMV, 0x0, NotSerialized)
509 // Describe a vendor-defined connection between this device and the
510 // primary wifi device
515 Name(NAM, Buffer() {"\\_SB.SDHB.BRCM"})
518 0x8E, // SPB Descriptor
519 0x18, 0x00, // Length including NAM above
520 0x01, // +0x00 SPB Descriptor Revision
521 0x00, // +0x01 Resource Source Index
522 0xc0, // +0x02 Bus type - vendor defined
523 0x02, // +0x03 Consumer + controller initiated
524 0x00, 0x00, // +0x04 Type specific flags
525 0x01, // +0x06 Type specific revision
526 0x00, 0x00 // +0x07 type specific data length
527 // +0x09 - 0xf bytes for NULL-terminated NAM
531 Name(END, Buffer() {0x79, 0x00})
532 Concatenate(SPB, NAM, Local0)
533 Concatenate(Local0, END, Local1)
546 Name (_HID, "80860F16")
547 Name (_CID, "PNP0D40")
548 Name (_DDN, "Intel(R) SD Card Controller - 80860F16")
550 Name(_DEP, Package(0x01)
554 Name (RBUF, ResourceTemplate ()
556 Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0)
557 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {47} // SD Card IRQ
559 Method (_CRS, 0x0, NotSerialized)
561 CreateDwordField(^RBUF, ^BAR0._BAS, B0BA)
562 CreateDwordField(^RBUF, ^BAR0._LEN, B0LN)
567 Method (_STA, 0x0, NotSerialized)
570 // PCIM>> 0:ACPI mode 1:PCI mode
572 If (LEqual(PCIM, 1)) {
576 If (LOr(LEqual(SD0A, 0), LEqual(SD3D, 1)))
583 Method (_PS3, 0, NotSerialized)
585 OR(PSAT, 0x00000003, PSAT)
586 OR(PSAT, 0X00000000, PSAT)
588 Method (_PS0, 0, NotSerialized)
590 And(PSAT, 0xfffffffC, PSAT)
591 OR(PSAT, 0X00000000, PSAT)
593 OperationRegion (KEYS, SystemMemory, SD1A, 0x100)
594 Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
602 Name (_ADR, 0x00000008)
603 Method(_RMV, 0x0, NotSerialized)
605 // SDRM = 0 non-removable;