| /**************************************************************************; | |
| ;* *; | |
| ;* *; | |
| ;* Intel Corporation - ACPI Reference Code for the Baytrail *; | |
| ;* Family of Customer Reference Boards. *; | |
| ;* *; | |
| ;* *; | |
| ;* Copyright (c) 2012 - 2014, Intel Corporation. All rights reserved *; | |
| ; | |
| ; This program and the accompanying materials are licensed and made available under | |
| ; the terms and conditions of the BSD License that accompanies this distribution. | |
| ; The full text of the license may be found at | |
| ; http://opensource.org/licenses/bsd-license.php. | |
| ; | |
| ; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| ; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| ; | |
| ;* *; | |
| ;* *; | |
| ;**************************************************************************/ | |
| Device (PEPD) | |
| { | |
| Name (_HID, "INT3396") | |
| Name(_CID, 0x800dd041) | |
| Name (_UID, 0x1) | |
| // Indicates if the platform PEP has loaded | |
| Name(PEPP, Zero) | |
| // Devices score-boarded by the PEP, Rev0 format | |
| Name (DEVS, Package() {0}) | |
| // Devices score-boarded by the PEP, Rev1 format | |
| Name(DEVX, Package() | |
| { | |
| Package () {"\\_SB.PCI0.XHC1", 0x1}, | |
| Package () {"\\_SB.PCI0.EHC1", 0x1}, | |
| Package () {"\\_SB.PCI0.GFX0", 0x1}, | |
| Package () {"\\_SB.PCI0.GFX0.ISP0", 0x1}, | |
| Package () {"\\_SB.PCI0.SEC0", 0x1}, | |
| Package () {"\\_SB.I2C1", 0x1}, | |
| Package () {"\\_SB.I2C2", 0x1}, | |
| Package () {"\\_SB.I2C3", 0x1}, | |
| Package () {"\\_SB.I2C4", 0x1}, | |
| Package () {"\\_SB.I2C5", 0x1}, | |
| Package () {"\\_SB.I2C6", 0x1}, | |
| Package () {"\\_SB.I2C7", 0x1}, | |
| Package () {"\\_SB.SDHA", 0x1}, | |
| Package () {"\\_SB.SDHB", 0x1}, | |
| Package () {"\\_SB.SDHC", 0x1}, | |
| Package () {"\\_SB.SPI1", 0x1}, | |
| Package () {"\\_SB.URT1", 0x1}, | |
| Package () {"\\_SB.URT2", 0x1}, | |
| }) | |
| // Crashdump device package | |
| Name(CDMP, Package(2) {}) | |
| // Device dependency for uPEP | |
| Name(DEVY, Package() | |
| { | |
| Package() {"\\_PR.CPU0", 0x1, Package() {Package() {0xFF, 0}}}, | |
| Package() {"\\_PR.CPU1", 0x1, Package() {Package() {0xFF, 0}}}, | |
| Package() {"\\_PR.CPU2", 0x1, Package() {Package() {0xFF, 0}}}, | |
| Package() {"\\_PR.CPU3", 0x1, Package() {Package() {0xFF, 0}}}, | |
| Package() {"\\_SB.I2C1", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C2", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C3", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C4", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C5", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C6", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.I2C7", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.PCI0.GFX0", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.PCI0.SEC0", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.PCI0.XHC1", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.PCI0.GFX0.ISP0", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.LPEA", 0x1, Package() {Package() {0x0,3}, Package() {0x1,0}, Package() {0x2,3}, Package() {0x3,3}}}, | |
| Package() {"\\_SB.SDHA", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.SDHB", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.SDHC", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.SPI1", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.URT1", 0x1, Package() {Package() {0xFF,3}}}, | |
| Package() {"\\_SB.URT2", 0x1, Package() {Package() {0xFF,3}}} | |
| }) | |
| // BCCD crashdump information | |
| Name(BCCD, Package() | |
| { | |
| Package() | |
| { | |
| "\\_SB.SDHA", | |
| Package() | |
| { | |
| Package() { Package() {0, 32, 0, 3, 0xFFFFFFFFFFFFFFFF}, Package() {0xFFFFFFFC, 0x0, 0x4}, 0} | |
| } | |
| } | |
| }) | |
| Method(_STA, 0x0, NotSerialized) | |
| { | |
| Return(0xf) | |
| } | |
| Method(_DSM, 0x4, Serialized) | |
| { | |
| If(LEqual(Arg0,ToUUID("B8FEBFE0-BAF8-454b-AECD-49FB91137B21"))) | |
| { | |
| // Number of fn IDs supported | |
| If(LEqual(Arg2, Zero)) | |
| { | |
| Return(Buffer(One) | |
| { | |
| 0xf | |
| }) | |
| } | |
| // Pep presence | |
| If(LEqual(Arg2, One)) | |
| { | |
| Store(0x1, PEPP) | |
| Return(0xf) | |
| } | |
| // Mitigation devices | |
| If(LEqual(Arg2, 0x2)) | |
| { | |
| If(LEqual(Arg1, 0x0)) | |
| { | |
| // Rev0 | |
| Return(DEVS) | |
| } | |
| If(LEqual(Arg1, 0x1)) | |
| { | |
| // Rev1 | |
| Return(DEVX) | |
| } | |
| } | |
| // Crashdump device data | |
| If(LEqual(Arg2, 0x3)) | |
| { | |
| Store("\\_SB.SDHA", Index(CDMP,0)) | |
| Store(EM1A, Index(CDMP,1)) | |
| Return(CDMP) | |
| } | |
| } | |
| // New UUID for built-in uPEP | |
| If(LEqual(Arg0,ToUUID("C4EB40A0-6CD2-11E2-BCFD-0800200C9A66"))) | |
| { | |
| // Number of fn IDs supported | |
| If(LEqual(Arg2, Zero)) | |
| { | |
| Return(Buffer(One) | |
| { | |
| 0x7 | |
| }) | |
| } | |
| // LPI device dependencies | |
| If(LEqual(Arg2, 0x1)) | |
| { | |
| Return(DEVY) | |
| } | |
| // Crashdump device data | |
| If(LEqual(Arg2, 0x2)) | |
| { | |
| Store(EM1A, Local0) | |
| Add(Local0, 0x84, Local0) | |
| Store(Local0, Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(DerefOf(Index(BCCD, Zero, )), One, )), Zero, )), Zero, )), 0x4, )) | |
| Return(BCCD) | |
| } | |
| } | |
| Return(One) | |
| } | |
| } | |
| // | |
| // eMMC 4.41 | |
| // | |
| Device(SDHA) | |
| { | |
| Name (_ADR, 0) | |
| Name (_HID, "80860F14") | |
| Name (_CID, "PNP0D40") | |
| Name (_DDN, "Intel(R) eMMC Controller - 80860F14") | |
| Name (_UID, 1) | |
| Name(_DEP, Package(0x1) | |
| { | |
| PEPD | |
| }) | |
| Name (RBF1, ResourceTemplate () | |
| { | |
| Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0) | |
| Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {45} // eMMC 4.41 IRQ | |
| }) | |
| Method (_CRS, 0x0, NotSerialized) | |
| { | |
| // Update the Base address for BAR0 of eMMC 4.41 | |
| CreateDwordField(^RBF1, ^BAR0._BAS, B0B1) | |
| CreateDwordField(^RBF1, ^BAR0._LEN, B0L1) | |
| Store(eM0A, B0B1) | |
| Store(eM0L, B0L1) | |
| Return (RBF1) | |
| } | |
| Method (_STA, 0x0, NotSerialized) | |
| { | |
| // | |
| // PCIM>> 0:ACPI mode 1:PCI mode | |
| // SD1D>> 0:eMMC 4.41 enable 1:eMMC 4.41 disable | |
| // | |
| If (LAnd(LEqual(PCIM, 0), LEqual(SD1D, 0))) | |
| { | |
| Return (0xF) | |
| } | |
| Else | |
| { | |
| Return (0x0) | |
| } | |
| } | |
| Method (_PS3, 0, NotSerialized) | |
| { | |
| OR(PSAT, 0x00000003, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| // | |
| // If not B1, still keep 2 ms w/a | |
| // | |
| If(LLess(SOCS, 0x03)) | |
| { | |
| Sleep(2) | |
| } | |
| } | |
| Method (_PS0, 0, NotSerialized) | |
| { | |
| And(PSAT, 0xfffffffC, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| // | |
| // If not B1, still keep 2 ms w/a | |
| // | |
| If(LLess(SOCS, 0x03)) | |
| { | |
| Sleep(2) | |
| } | |
| } | |
| OperationRegion (KEYS, SystemMemory, eM1A, 0x100) | |
| Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
| { | |
| Offset (0x84), | |
| PSAT, 32 | |
| } | |
| Method (_DIS, 0x0, NotSerialized) | |
| { | |
| //Adding dummy disable methods for device EMM0 | |
| } | |
| Device (EMMD) | |
| { | |
| Name (_ADR, 0x00000008) // Slot 0, Function 8 | |
| Method (_RMV, 0, NotSerialized) | |
| { | |
| Return (0x0) | |
| } | |
| } | |
| } | |
| // | |
| // eMMC 4.5 | |
| // | |
| Device(SDHD) | |
| { | |
| Name (_ADR, 0) | |
| Name (_HID, "80860F14") | |
| Name (_CID, "PNP0D40") | |
| Name (_DDN, "Intel(R) eMMC Controller - 80860F14") | |
| Name (_UID, 1) | |
| Name(_DEP, Package(0x1) | |
| { | |
| PEPD | |
| }) | |
| Name (RBF1, ResourceTemplate () | |
| { | |
| Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0) | |
| Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {44} // eMMC 4.5 IRQ | |
| }) | |
| Method (_CRS, 0x0, NotSerialized) | |
| { | |
| CreateDwordField(^RBF1, ^BAR0._BAS, B0B1) | |
| CreateDwordField(^RBF1, ^BAR0._LEN, B0L1) | |
| Store(eM0A, B0B1) | |
| Store(eM0L, B0L1) | |
| Return (RBF1) | |
| } | |
| Method (_STA, 0x0, NotSerialized) | |
| { | |
| // | |
| // PCIM>> 0:ACPI mode 1:PCI mode | |
| // HSID>> 0:eMMC 4.5 enable 1:eMMC 4.5 disable | |
| // | |
| If (LAnd(LEqual(PCIM, 0), LEqual(HSID, 0))) | |
| { | |
| Return (0xF) | |
| } | |
| Else | |
| { | |
| Return (0x0) | |
| } | |
| } | |
| Method (_PS3, 0, NotSerialized) | |
| { | |
| OR(PSAT, 0x00000003, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| // | |
| // If not B1, still keep 2 ms w/a | |
| // | |
| If(LLess(SOCS, 0x03)) | |
| { | |
| Sleep(2) | |
| } | |
| } | |
| Method (_PS0, 0, NotSerialized) | |
| { | |
| And(PSAT, 0xfffffffC, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| // | |
| // If not B1, still keep 2 ms w/a | |
| // | |
| If(LLess(SOCS, 0x03)) | |
| { | |
| Sleep(2) | |
| } | |
| } | |
| OperationRegion (KEYS, SystemMemory, eM1A, 0x100) | |
| Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
| { | |
| Offset (0x84), | |
| PSAT, 32 | |
| } | |
| Method (_DIS, 0x0, NotSerialized) | |
| { | |
| //Adding dummy disable methods for device EMM0 | |
| } | |
| Device (EM45) | |
| { | |
| Name (_ADR, 0x00000008) // Slot 0, Function 8 | |
| Method (_RMV, 0, NotSerialized) | |
| { | |
| Return (0x0) | |
| } | |
| } | |
| } | |
| // | |
| // SDIO | |
| // | |
| Device(SDHB) | |
| { | |
| Name (_ADR, 0) | |
| Name (_HID, "INT33BB") | |
| Name (_CID, "PNP0D40") | |
| Name (_DDN, "Intel(R) SDIO Controller - 80860F15") | |
| Name (_UID, 2) | |
| Name (_HRV, 2) | |
| Name(_DEP, Package(0x01) | |
| { | |
| PEPD | |
| }) | |
| Name (PSTS, 0x0) | |
| Name (RBUF, ResourceTemplate () | |
| { | |
| Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0) | |
| Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {46} // SDIO IRQ | |
| }) | |
| Method (_CRS, 0x0, NotSerialized) | |
| { | |
| CreateDwordField(^RBUF, ^BAR0._BAS, B0BA) | |
| CreateDwordField(^RBUF, ^BAR0._LEN, B0LN) | |
| Store(SI0A, B0BA) | |
| Store(SI0L, B0LN) | |
| Return (RBUF) | |
| } | |
| Method (_STA, 0x0, NotSerialized) | |
| { | |
| If (LLessEqual(STEP, 0x04)) | |
| { | |
| //A stepping | |
| Store(SDMD, _HRV) | |
| } | |
| // | |
| // PCIM>> 0:ACPI mode 1:PCI mode | |
| // | |
| If (LEqual(PCIM, 1)) { | |
| Return (0x0) | |
| } | |
| If (LOr(LEqual(SI0A, 0), LEqual(SD2D, 1))) | |
| { | |
| Return (0x0) | |
| } | |
| Return (0xF) | |
| } | |
| Method (_DIS, 0x0, NotSerialized) | |
| { | |
| //Adding dummy disable methods for device EMM0 | |
| } | |
| Method (_PS3, 0, NotSerialized) | |
| { | |
| OR(PSAT, 0x00000003, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| } | |
| Method (_PS0, 0, NotSerialized) | |
| { | |
| And(PSAT, 0xfffffffC, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| if(LEqual(\_SB.SDHB.PSTS,0x0)) | |
| { | |
| if(LEqual (\_SB.GPO2.AVBL, 1)) | |
| { | |
| Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state | |
| Store( 0x01, \_SB.SDHB.PSTS) // indicates that the device powered ON | |
| } | |
| } | |
| } | |
| OperationRegion (KEYS, SystemMemory, SI1A, 0x100) | |
| Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
| { | |
| Offset (0x84), | |
| PSAT, 32 | |
| } | |
| Device (BRCM) | |
| { | |
| Name (_ADR, 0x01) //SlotNumber + Function | |
| Name (_DEP, Package() {\_SB.GPO2}) | |
| Method (_RMV, 0, NotSerialized) | |
| { | |
| Return (0x0) | |
| } | |
| Name (_PRW, Package() {0, 0}) | |
| Name (_S4W, 2) | |
| Method (_CRS, 0, Serialized) | |
| { | |
| Name (RBUF, ResourceTemplate () | |
| { | |
| Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, , , ) {73} | |
| }) | |
| Return (RBUF) | |
| } | |
| Method (_PS3, 0, NotSerialized) | |
| { | |
| if(LEqual (\_SB.GPO2.AVBL, 1)) | |
| { | |
| Store( 0x00, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 0 puts the device in reset state | |
| Store( 0x00, \_SB.SDHB.PSTS) //Indicates that the device is powered off | |
| } | |
| } | |
| Method (_PS0, 0, NotSerialized) | |
| { | |
| if(LEqual(\_SB.SDHB.PSTS,0x0)) | |
| { | |
| if(LEqual (\_SB.GPO2.AVBL, 1)) | |
| { | |
| Store( 0x01, \_SB.GPO2.WFD3 ) // WL_WIFI_REQ_ON = 1 put the device to normal state | |
| Store( 0x01, \_SB.SDHB.PSTS) // indicates that the device powered ON | |
| } | |
| } | |
| } | |
| } // Device (BRCM) | |
| // | |
| // Secondary Broadcom WIFI function | |
| // | |
| Device(BRC2) | |
| { | |
| Name(_ADR, 0x2) // function 2 | |
| Name(_STA, 0xf) | |
| // | |
| // The device is not removable. This must be a method. | |
| // | |
| Method(_RMV, 0x0, NotSerialized) | |
| { | |
| Return(0x0) | |
| } | |
| // | |
| // Describe a vendor-defined connection between this device and the | |
| // primary wifi device | |
| // | |
| Method(_CRS) | |
| { | |
| Name(NAM, Buffer() {"\\_SB.SDHB.BRCM"}) | |
| Name(SPB, Buffer() | |
| { | |
| 0x8E, // SPB Descriptor | |
| 0x18, 0x00, // Length including NAM above | |
| 0x01, // +0x00 SPB Descriptor Revision | |
| 0x00, // +0x01 Resource Source Index | |
| 0xc0, // +0x02 Bus type - vendor defined | |
| 0x02, // +0x03 Consumer + controller initiated | |
| 0x00, 0x00, // +0x04 Type specific flags | |
| 0x01, // +0x06 Type specific revision | |
| 0x00, 0x00 // +0x07 type specific data length | |
| // +0x09 - 0xf bytes for NULL-terminated NAM | |
| // Length = 0x18 | |
| }) | |
| Name(END, Buffer() {0x79, 0x00}) | |
| Concatenate(SPB, NAM, Local0) | |
| Concatenate(Local0, END, Local1) | |
| Return(Local1) | |
| } | |
| } | |
| } | |
| // | |
| // SD Card | |
| // | |
| Device(SDHC) | |
| { | |
| Name (_ADR, 0) | |
| Name (_HID, "80860F16") | |
| Name (_CID, "PNP0D40") | |
| Name (_DDN, "Intel(R) SD Card Controller - 80860F16") | |
| Name (_UID, 3) | |
| Name(_DEP, Package(0x01) | |
| { | |
| PEPD | |
| }) | |
| Name (RBUF, ResourceTemplate () | |
| { | |
| Memory32Fixed (ReadWrite, 0x00000000, 0x00001000, BAR0) | |
| Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {47} // SD Card IRQ | |
| }) | |
| Method (_CRS, 0x0, NotSerialized) | |
| { | |
| CreateDwordField(^RBUF, ^BAR0._BAS, B0BA) | |
| CreateDwordField(^RBUF, ^BAR0._LEN, B0LN) | |
| Store(SD0A, B0BA) | |
| Store(SD0L, B0LN) | |
| Return (RBUF) | |
| } | |
| Method (_STA, 0x0, NotSerialized) | |
| { | |
| // | |
| // PCIM>> 0:ACPI mode 1:PCI mode | |
| // | |
| If (LEqual(PCIM, 1)) { | |
| Return (0x0) | |
| } | |
| If (LOr(LEqual(SD0A, 0), LEqual(SD3D, 1))) | |
| { | |
| Return (0x0) | |
| } | |
| Return (0xF) | |
| } | |
| Method (_PS3, 0, NotSerialized) | |
| { | |
| OR(PSAT, 0x00000003, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| } | |
| Method (_PS0, 0, NotSerialized) | |
| { | |
| And(PSAT, 0xfffffffC, PSAT) | |
| OR(PSAT, 0X00000000, PSAT) | |
| } | |
| OperationRegion (KEYS, SystemMemory, SD1A, 0x100) | |
| Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
| { | |
| Offset (0x84), | |
| PSAT, 32 | |
| } | |
| Device (CARD) | |
| { | |
| Name (_ADR, 0x00000008) | |
| Method(_RMV, 0x0, NotSerialized) | |
| { | |
| // SDRM = 0 non-removable; | |
| If (LEqual(SDRM, 0)) | |
| { | |
| Return (0) | |
| } | |
| Return (1) | |
| } | |
| } | |
| } | |