/**************************************************************************; | |
;* *; | |
;* *; | |
;* 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. | |
; | |
;* *; | |
;* *; | |
;**************************************************************************/ | |
Scope(\) | |
{ | |
// | |
// Define VLV ABASE I/O as an ACPI operating region. The base address | |
// can be found in Device 31, Registers 40-43h. | |
// | |
OperationRegion(PMIO, SystemIo, \PMBS, 0x46) | |
Field(PMIO, ByteAcc, NoLock, Preserve) | |
{ | |
, 8, | |
PWBS, 1, // Power Button Status | |
Offset(0x20), | |
, 13, | |
PMEB, 1, // PME_B0_STS | |
Offset(0x42), // General Purpose Control | |
, 1, | |
GPEC, 1 | |
} | |
Field(PMIO, ByteAcc, NoLock, WriteAsZeros) | |
{ | |
Offset(0x20), // GPE0 Status | |
, 4, | |
PSCI, 1, // PUNIT SCI Status | |
SCIS, 1 // GUNIT SCI Status | |
} | |
// | |
// Define a Memory Region that will allow access to the PMC | |
// Register Block. Note that in the Intel Reference Solution, the PMC | |
// will get fixed up dynamically during POST. | |
// | |
OperationRegion(PMCR, SystemMemory, \PFDR, 0x04)// PMC Function Disable Register | |
Field(PMCR,DWordAcc,Lock,Preserve) | |
{ | |
Offset(0x00), // Function Disable Register | |
L10D, 1, // (0) LPIO1 DMA Disable | |
L11D, 1, // (1) LPIO1 PWM #1 Disable | |
L12D, 1, // (2) LPIO1 PWM #2 Disable | |
L13D, 1, // (3) LPIO1 HS-UART #1 Disable | |
L14D, 1, // (4) LPIO1 HS-UART #2 Disable | |
L15D, 1, // (5) LPIO1 SPI Disable | |
, 2, // (6:7) Reserved | |
SD1D, 1, // (8) SCC SDIO #1 Disable | |
SD2D, 1, // (9) SCC SDIO #2 Disable | |
SD3D, 1, // (10) SCC SDIO #3 Disable | |
HSID, 1, // (11) | |
HDAD, 1, // (12) Azalia Disable | |
LPED, 1, // (13) LPE Disable | |
OTGD, 1, // (14) USB OTG Disable | |
, 1, // (15) USH Disable | |
, 1, // (16) | |
, 1, // (17) | |
, 1, // (18) USB Disable | |
, 1, // (19) SEC Disable | |
RP1D, 1, // (20) Root Port 0 Disable | |
RP2D, 1, // (21) Root Port 1 Disable | |
RP3D, 1, // (22) Root Port 2 Disable | |
RP4D, 1, // (23) Root Port 3 Disable | |
L20D, 1, // (24) LPIO2 DMA Disable | |
L21D, 1, // (25) LPIO2 I2C #1 Disable | |
L22D, 1, // (26) LPIO2 I2C #2 Disable | |
L23D, 1, // (27) LPIO2 I2C #3 Disable | |
L24D, 1, // (28) LPIO2 I2C #4 Disable | |
L25D, 1, // (29) LPIO2 I2C #5 Disable | |
L26D, 1, // (30) LPIO2 I2C #6 Disable | |
L27D, 1 // (31) LPIO2 I2C #7 Disable | |
} | |
OperationRegion(CLKC, SystemMemory, \PCLK, 0x18)// PMC CLK CTL Registers | |
Field(CLKC,DWordAcc,Lock,Preserve) | |
{ | |
Offset(0x00), // PLT_CLK_CTL_0 | |
CKC0, 2, | |
CKF0, 1, | |
, 29, | |
Offset(0x04), // PLT_CLK_CTL_1 | |
CKC1, 2, | |
CKF1, 1, | |
, 29, | |
Offset(0x08), // PLT_CLK_CTL_2 | |
CKC2, 2, | |
CKF2, 1, | |
, 29, | |
Offset(0x0C), // PLT_CLK_CTL_3 | |
CKC3, 2, | |
CKF3, 1, | |
, 29, | |
Offset(0x10), // PLT_CLK_CTL_4 | |
CKC4, 2, | |
CKF4, 1, | |
, 29, | |
Offset(0x14), // PLT_CLK_CTL_5 | |
CKC5, 2, | |
CKF5, 1, | |
, 29, | |
} | |
} //end Scope(\) | |
scope (\_SB) | |
{ | |
Device(LPEA) | |
{ | |
Name (_ADR, 0) | |
Name (_HID, "80860F28") | |
Name (_CID, "80860F28") | |
//Name (_CLS, Package (3) {0x04, 0x01, 0x00}) | |
Name (_DDN, "Intel(R) Low Power Audio Controller - 80860F28") | |
Name (_SUB, "80867270") | |
Name (_UID, 1) | |
Name (_DEP, Package() {\_SB.I2C2.RTEK}) | |
Name(_PR0,Package() {PLPE}) | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If (LAnd(LAnd(LEqual(LPEE, 2), LEqual(LPED, 0)), LEqual(OSEL, 0))) | |
{ | |
Return (0xF) | |
} | |
Return (0x0) | |
} | |
Method (_DIS, 0x0, NotSerialized) | |
{ | |
//Add a dummy disable function | |
} | |
Name (RBUF, ResourceTemplate () | |
{ | |
Memory32Fixed (ReadWrite, 0xFE400000, 0x00200000, BAR0) // MMIO 1 - LPE MMIO | |
Memory32Fixed (ReadWrite, 0xFE830000, 0x00001000, BAR1) // MMIO 2 - Shadowed PCI Config Space | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00100000, BAR2) // LPE Memory Bar Allocate during post | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {24} | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {25} | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {26} | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {27} | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {28} | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {29} | |
GpioInt(Edge, ActiveBoth, ExclusiveAndWake, PullNone, 0,"\\_SB.GPO2") {28} // Audio jack interrupt | |
} | |
) | |
Method (_CRS, 0x0, NotSerialized) | |
{ | |
CreateDwordField(^RBUF, ^BAR0._BAS, B0BA) | |
Store(LPE0, B0BA) | |
CreateDwordField(^RBUF, ^BAR1._BAS, B1BA) | |
Store(LPE1, B1BA) | |
CreateDwordField(^RBUF, ^BAR2._BAS, B2BA) | |
Store(LPE2, B2BA) | |
Return (RBUF) | |
} | |
OperationRegion (KEYS, SystemMemory, LPE1, 0x100) | |
Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
{ | |
Offset (0x84), | |
PSAT, 32 | |
} | |
PowerResource(PLPE, 0, 0) // Power Resource for LPEA | |
{ | |
Method (_STA) | |
{ | |
Return (1) // Power Resource is always available. | |
} | |
Method (_ON) | |
{ | |
And(PSAT, 0xfffffffC, PSAT) | |
OR(PSAT, 0X00000000, PSAT) | |
} | |
Method (_OFF) | |
{ | |
OR(PSAT, 0x00000003, PSAT) | |
OR(PSAT, 0X00000000, PSAT) | |
} | |
} // End PLPE | |
} // End "Low Power Engine Audio" | |
Device(LPA2) | |
{ | |
Name (_ADR, 0) | |
Name (_HID, "LPE0F28") // _HID: Hardware ID | |
Name (_CID, "LPE0F28") // _CID: Compatible ID | |
Name (_DDN, "Intel(R) SST Audio - LPE0F28") // _DDN: DOS Device Name | |
Name (_SUB, "80867270") | |
Name (_UID, 1) | |
Name (_DEP, Package() {\_SB.I2C2.RTEK}) | |
Name(_PR0,Package() {PLPE}) | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If (LAnd(LAnd(LEqual(LPEE, 2), LEqual(LPED, 0)), LEqual(OSEL, 1))) | |
{ | |
Return (0xF) | |
} | |
Return (0x0) | |
} | |
Method (_DIS, 0x0, NotSerialized) | |
{ | |
//Add a dummy disable function | |
} | |
Name (RBUF, ResourceTemplate () | |
{ | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00100000, BAR2) // LPE Memory Bar Allocate during post | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00000100, SHIM) | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00001000, MBOX) | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00014000, IRAM) | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00028000, DRAM) | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {29} | |
Memory32Fixed (ReadWrite, 0xFE830000, 0x00001000, BAR1) // MMIO 2 - Shadowed PCI Config Space | |
} | |
) | |
Method (_CRS, 0x0, NotSerialized) | |
{ | |
CreateDwordField(^RBUF, ^SHIM._BAS, SHBA) | |
Add(LPE0, 0x140000, SHBA) | |
CreateDwordField(^RBUF, ^MBOX._BAS, MBBA) | |
Add(LPE0, 0x144000, MBBA) | |
CreateDwordField(^RBUF, ^IRAM._BAS, IRBA) | |
Add(LPE0, 0xC0000, IRBA) | |
CreateDwordField(^RBUF, ^DRAM._BAS, DRBA) | |
Add(LPE0, 0x100000, DRBA) | |
CreateDwordField(^RBUF, ^BAR1._BAS, B1BA) | |
Store(LPE1, B1BA) | |
CreateDwordField(^RBUF, ^BAR2._BAS, B2BA) | |
Store(LPE2, B2BA) | |
Return (RBUF) | |
} | |
OperationRegion (KEYS, SystemMemory, LPE1, 0x100) | |
Field (KEYS, DWordAcc, NoLock, WriteAsZeros) | |
{ | |
Offset (0x84), | |
PSAT, 32 | |
} | |
PowerResource(PLPE, 0, 0) // Power Resource for LPEA | |
{ | |
Method (_STA) | |
{ | |
Return (1) // Power Resource is always available. | |
} | |
Method (_ON) | |
{ | |
And(PSAT, 0xfffffffC, PSAT) | |
OR(PSAT, 0X00000000, PSAT) | |
} | |
Method (_OFF) | |
{ | |
OR(PSAT, 0x00000003, PSAT) | |
OR(PSAT, 0X00000000, PSAT) | |
} | |
} // End PLPE | |
Device (ADMA) | |
{ | |
Name (_ADR, Zero) // _ADR: Address | |
Name (_HID, "DMA0F28") // _HID: Hardware ID | |
Name (_CID, "DMA0F28") // _CID: Compatible ID | |
Name (_DDN, "Intel(R) Audio DMA0 - DMA0F28") // _DDN: DOS Device Name | |
Name (_UID, One) // _UID: Unique ID | |
Name (RBUF, ResourceTemplate () | |
{ | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00001000, DMA0) // LPE BASE + LPE DMA0 offset | |
Memory32Fixed (ReadWrite, 0x55AA55AA, 0x00001000, SHIM) // LPE BASE + LPE SHIM offset | |
Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, , , ) {24} | |
}) | |
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings | |
{ | |
CreateDwordField(^RBUF, ^DMA0._BAS, D0BA) | |
Add(LPE0, 0x98000, D0BA) | |
CreateDwordField(^RBUF, ^SHIM._BAS, SHBA) | |
Add(LPE0, 0x140000, SHBA) | |
Return (RBUF) | |
} | |
} | |
} // End "Low Power Engine Audio" for Android | |
} | |
scope (\_SB.PCI0) | |
{ | |
// | |
// Serial ATA Host Controller - Device 19, Function 0 | |
// | |
Device(SATA) | |
{ | |
Name(_ADR,0x00130000) | |
// | |
// SATA Methods pulled in via SSDT. | |
// | |
OperationRegion(SATR, PCI_Config, 0x74,0x4) | |
Field(SATR,WordAcc,NoLock,Preserve) | |
{ | |
Offset(0x00), // 0x74, PMCR | |
, 8, | |
PMEE, 1, //PME_EN | |
, 6, | |
PMES, 1 //PME_STS | |
} | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
Return(0xf) | |
} | |
Method(_DSW, 3) | |
{ | |
} // End _DSW | |
} | |
// | |
// For eMMC 4.41 PCI mode in order to present non-removable device under Windows environment | |
// | |
Device(EM41) | |
{ | |
Name(_ADR,0x00100000) | |
OperationRegion(SDIO, PCI_Config, 0x84,0x4) | |
Field(SDIO,WordAcc,NoLock,Preserve) | |
{ | |
Offset(0x00), // 0x84, PMCR | |
, 8, | |
PMEE, 1, //PME_EN | |
, 6, | |
PMES, 1 //PME_STS | |
} | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If (LAnd(LEqual(PCIM, 1), LEqual(SD1D, 0))) | |
{ | |
Return(0xF) | |
} | |
Else | |
{ | |
Return(0x0) | |
} | |
} | |
Method(_DSW, 3) | |
{ | |
} // End _DSW | |
Device (CARD) | |
{ | |
Name (_ADR, 0x00000008) | |
Method(_RMV, 0x0, NotSerialized) | |
{ | |
Return (0) | |
} // End _DSW | |
} | |
} | |
// | |
// For eMMC 4.5 PCI mode in order to present non-removable device under Windows environment | |
// | |
Device(EM45) | |
{ | |
Name(_ADR,0x00170000) | |
OperationRegion(SDIO, PCI_Config, 0x84,0x4) | |
Field(SDIO,WordAcc,NoLock,Preserve) | |
{ | |
Offset(0x00), // 0x84, PMCR | |
, 8, | |
PMEE, 1, //PME_EN | |
, 6, | |
PMES, 1 //PME_STS | |
} | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If (LAnd(LEqual(PCIM, 1), LEqual(HSID, 0))) | |
{ | |
Return(0xF) | |
} | |
Else | |
{ | |
Return(0x0) | |
} | |
} | |
Method(_DSW, 3) | |
{ | |
} // End _DSW | |
Device (CARD) | |
{ | |
Name (_ADR, 0x00000008) | |
Method(_RMV, 0x0, NotSerialized) | |
{ | |
Return (0) | |
} // End _DSW | |
} | |
} | |
// | |
// For SD Host Controller (Bus 0x00 : Dev 0x12 : Func 0x00) PCI mode in order to present non-removable device under Windows environment | |
// | |
Device(SD12) | |
{ | |
Name(_ADR,0x00120000) | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
// | |
// PCIM>> 0:ACPI mode 1:PCI mode | |
// | |
If (LEqual(PCIM, 0)) { | |
Return (0x0) | |
} | |
// | |
// If device is disabled. | |
// | |
If (LEqual(SD3D, 1)) | |
{ | |
Return (0x0) | |
} | |
Return (0xF) | |
} | |
Device (CARD) | |
{ | |
Name (_ADR, 0x00000008) | |
Method(_RMV, 0x0, NotSerialized) | |
{ | |
// SDRM = 0 non-removable; | |
If (LEqual(SDRM, 0)) | |
{ | |
Return (0) | |
} | |
Return (1) | |
} | |
} | |
} | |
// xHCI Controller - Device 20, Function 0 | |
include("PchXhci.asl") | |
// | |
// High Definition Audio Controller - Device 27, Function 0 | |
// | |
Device(HDEF) | |
{ | |
Name(_ADR, 0x001B0000) | |
include("PchAudio.asl") | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If (LEqual(HDAD, 0)) | |
{ | |
Return(0xf) | |
} | |
Return(0x0) | |
} | |
Method(_DSW, 3) | |
{ | |
} // End _DSW | |
} // end "High Definition Audio Controller" | |
// | |
// PCIE Root Port #1 | |
// | |
Device(RP01) | |
{ | |
Name(_ADR, 0x001C0000) | |
include("PchPcie.asl") | |
Name(_PRW, Package() {9, 4}) | |
Method(_PRT,0) | |
{ | |
If(PICM) { Return(AR04) }// APIC mode | |
Return (PR04) // PIC Mode | |
} // end _PRT | |
} // end "PCIE Root Port #1" | |
// | |
// PCIE Root Port #2 | |
// | |
Device(RP02) | |
{ | |
Name(_ADR, 0x001C0001) | |
include("PchPcie.asl") | |
Name(_PRW, Package() {9, 4}) | |
Method(_PRT,0) | |
{ | |
If(PICM) { Return(AR05) }// APIC mode | |
Return (PR05) // PIC Mode | |
} // end _PRT | |
} // end "PCIE Root Port #2" | |
// | |
// PCIE Root Port #3 | |
// | |
Device(RP03) | |
{ | |
Name(_ADR, 0x001C0002) | |
include("PchPcie.asl") | |
Name(_PRW, Package() {9, 4}) | |
Method(_PRT,0) | |
{ | |
If(PICM) { Return(AR06) }// APIC mode | |
Return (PR06) // PIC Mode | |
} // end _PRT | |
} // end "PCIE Root Port #3" | |
// | |
// PCIE Root Port #4 | |
// | |
Device(RP04) | |
{ | |
Name(_ADR, 0x001C0003) | |
include("PchPcie.asl") | |
Name(_PRW, Package() {9, 4}) | |
Method(_PRT,0) | |
{ | |
If(PICM) { Return(AR07) }// APIC mode | |
Return (PR07) // PIC Mode | |
} // end _PRT | |
} // end "PCIE Root Port #4" | |
Scope(\_SB) | |
{ | |
// | |
// Dummy power resource for USB D3 cold support | |
// | |
PowerResource(USBC, 0, 0) | |
{ | |
Method(_STA) { Return (0xF) } | |
Method(_ON) {} | |
Method(_OFF) {} | |
} | |
} | |
// | |
// EHCI Controller - Device 29, Function 0 | |
// | |
Device(EHC1) | |
{ | |
Name(_ADR, 0x001D0000) | |
Name(_DEP, Package(0x1) | |
{ | |
PEPD | |
}) | |
include("PchEhci.asl") | |
Name(_PRW, Package() {0x0D, 4}) | |
OperationRegion(USBR, PCI_Config, 0x54,0x4) | |
Field(USBR,WordAcc,NoLock,Preserve) | |
{ | |
Offset(0x00), // 0x54, PMCR | |
, 8, | |
PMEE, 1, //PME_EN | |
, 6, | |
PMES, 1 //PME_STS | |
} | |
Method (_STA, 0x0, NotSerialized) | |
{ | |
If(LEqual(XHCI, 0)) //XHCI is not present. It means EHCI is there | |
{ | |
Return (0xF) | |
} Else | |
{ | |
Return (0x0) | |
} | |
} | |
Method (_RMV, 0, NotSerialized) | |
{ | |
Return (0x0) | |
} | |
// | |
// Create a dummy PR3 method to indicate to the PCI driver | |
// that the device is capable of D3 cold | |
// | |
Method(_PR3, 0x0, NotSerialized) | |
{ | |
return (Package() {\_SB.USBC}) | |
} | |
} // end "EHCI Controller" | |
// | |
// SMBus Controller - Device 31, Function 3 | |
// | |
Device(SBUS) | |
{ | |
Name(_ADR,0x001F0003) | |
Include("PchSmb.asl") | |
} | |
Device(SEC0) | |
{ | |
Name (_ADR, 0x001a0000) // Device 0x1a, Function 0 | |
Name(_DEP, Package(0x1) | |
{ | |
PEPD | |
}) | |
OperationRegion (PMEB, PCI_Config, 0x84, 0x04) //PMECTRLSTATUS | |
Field (PMEB, WordAcc, NoLock, Preserve) | |
{ | |
, 8, | |
PMEE, 1, //bit8 PMEENABLE | |
, 6, | |
PMES, 1 //bit15 PMESTATUS | |
} | |
// Arg0 -- integer that contains the device wake capability control (0-disable 1- enable) | |
// Arg1 -- integer that contains target system state (0-4) | |
// Arg2 -- integer that contains the target device state | |
Method (_DSW, 3, NotSerialized) // _DSW: Device Sleep Wake | |
{ | |
} | |
Method (_CRS, 0, NotSerialized) | |
{ | |
Name (RBUF, ResourceTemplate () | |
{ | |
Memory32Fixed (ReadWrite, 0x1e000000, 0x2000000) | |
}) | |
If (LEqual(PAVP, 2)) | |
{ | |
Return (RBUF) | |
} | |
Return (ResourceTemplate() {}) | |
} | |
Method (_STA) | |
{ | |
If (LNotEqual(PAVP, 0)) | |
{ | |
Return (0xF) | |
} | |
Return (0x0) | |
} | |
} // Device(SEC0) | |
} // End scope (\_SB.PCI0) |