summaryrefslogtreecommitdiff
path: root/ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl')
-rw-r--r--ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl977
1 files changed, 977 insertions, 0 deletions
diff --git a/ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl b/ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl
new file mode 100644
index 0000000..2b95557
--- /dev/null
+++ b/ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl
@@ -0,0 +1,977 @@
+/**************************************************************************;
+;* *;
+;* Intel Confidential *;
+;* *;
+;* Intel Corporation - ACPI Reference Code for the Haswell *;
+;* Family of Customer Reference Boards. *;
+;* *;
+;* *;
+;* Copyright (c) 1999 - 2013 Intel Corporation. All rights reserved *;
+;* This software and associated documentation (if any) is furnished *;
+;* under a license and may only be used or copied in accordance *;
+;* with the terms of the license. Except as permitted by such *;
+;* license, no part of this software or documentation may be *;
+;* reproduced, stored in a retrieval system, or transmitted in any *;
+;* form or by any means without the express written consent of *;
+;* Intel Corporation. *;
+;* *;
+;* *;
+;**************************************************************************/
+/*++
+ This file contains an 'Intel Peripheral Driver' and is
+ licensed for Intel CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+--*/
+
+ //
+ // RPAx is root port addresses, which are updated when post to reflect
+ // the root port function number swapping.
+ //
+ Name (RPA0, 0x001C0000)
+ Name (RPA1, 0x001C0001)
+ Name (RPA2, 0x001C0002)
+ Name (RPA3, 0x001C0003)
+ Name (RPA4, 0x001C0004)
+ Name (RPA5, 0x001C0005)
+ Name (RPA6, 0x001C0006)
+ Name (RPA7, 0x001C0007)
+
+ //
+ // PCHS stands for PCH series. This will be updated when post.
+ // 1: PchH
+ // 2: PchLp
+ // others: unknown
+ //
+ Name (PCHS, 0xFFFFFFFF)
+
+ //
+ // Reserved MEM range for S3 Save/restore with 64K in size.
+ // This will be updated when post.
+ //
+ Name (SRMB, 0xFFFFFFFF)
+
+ //
+ // Maximum Snoop Latency and Maximum No-Snoop Latency values for PCIE.
+ // This will be updated when post.
+ //
+ Name (PML1, 0xFFFFFFFF)
+ Name (PML2, 0xFFFFFFFF)
+ Name (PML3, 0xFFFFFFFF)
+ Name (PML4, 0xFFFFFFFF)
+ Name (PML5, 0xFFFFFFFF)
+ Name (PML6, 0xFFFFFFFF)
+ Name (PML7, 0xFFFFFFFF)
+ Name (PML8, 0xFFFFFFFF)
+ Name (PNL1, 0xFFFFFFFF)
+ Name (PNL2, 0xFFFFFFFF)
+ Name (PNL3, 0xFFFFFFFF)
+ Name (PNL4, 0xFFFFFFFF)
+ Name (PNL5, 0xFFFFFFFF)
+ Name (PNL6, 0xFFFFFFFF)
+ Name (PNL7, 0xFFFFFFFF)
+ Name (PNL8, 0xFFFFFFFF)
+
+Scope(\)
+{
+ //
+ // Define the IO Address 0810h-0813h as an ACPI Operating Region first, and
+ // then it will be dynamically updated during initialization of DTS code.
+ // The address presented here may not be the actual address used.
+ // This address range is used as a DTS I/O Trap SMI so that ASL and SMI
+ // can communicate when needed.
+ //
+ OperationRegion(IO_D,SystemIO,0x810,0x4)
+ Field(IO_D,ByteAcc,NoLock,Preserve) {
+ TRPD, 8 // 0x810 = DTS I/O Trap
+ }
+ //
+ // The IO address in this ACPI Operating Region will be updated during POST.
+ // This address range is used as a HotKey I/O Trap SMI so that ASL and SMI can
+ // communicate when needed.
+ //
+ OperationRegion(IO_H,SystemIO,0x1000,0x4)
+ Field(IO_H,ByteAcc,NoLock,Preserve) {
+ TRPH, 8
+ }
+ //
+ // Define PCH PMBASE I/O as an ACPI operating region. The base address
+ // can be found in Device 31, Registers 40-43h.
+ //
+ OperationRegion(PMIO, SystemIo, \PMBS, 0x80)
+ Field(PMIO, ByteAcc, NoLock, Preserve) {
+ Offset(0x28), // GPE0 Enable
+ , 16,
+ , 3, // GPE for 0-2 GPIO's
+ GPE3, 1,
+ , 7, // GPE for 4-0xA GPIO's
+ GPEB, 1,
+ Offset(0x3c), // UPRWC - USB Per-Port registers write control
+ , 1,
+ UPRW, 1, // USB Per-Port registers write enable
+ Offset(0x42), // General Purpose Control
+ , 1,
+ GPEC, 1
+ }
+ Field(PMIO, ByteAcc, NoLock, WriteAsZeros) {
+ Offset(0x20), // GPE0 Status
+ , 16,
+ , 3, // GPS for 0-2 GPIO's
+ GPS3, 1,
+ , 7, // GPS for 4-0xa GPIO's
+ GPSB, 1,
+ Offset(0x64), // TCO status register
+ , 9,
+ SCIS, 1, // TCO DMI SCI status
+ , 6
+ }
+
+ //
+ // Define PCH PMBASE I/O as an ACPI operating region. The base address
+ // can be found in Device 31, Registers 40-43h.
+ //
+ OperationRegion(PMLP, SystemIo, Add(\PMBS,0x80), 0x20)
+ Field(PMLP, ByteAcc, NoLock, Preserve) {
+ Offset(0x10), // GPE0 Enable
+ , 8,
+ GE08, 1,
+ , 8,
+ GE17, 1,
+ , 27,
+ GE45, 1,
+ , 5,
+ GE51, 1,
+ , 76,
+ }
+ Field(PMLP, ByteAcc, NoLock, WriteAsZeros) {
+ Offset(0x00), // GPE0 Status
+ , 8,
+ GS08, 1,
+ , 8,
+ GS17, 1,
+ , 27,
+ GS45, 1,
+ , 5,
+ GS51, 1,
+ , 76,
+ }
+
+ //
+ // Define PCH GPIO I/O as an ACPI operating region.
+ // The base address can be found in Device 31, Registers 48-4Bh.
+ //
+
+ OperationRegion(GPR, SystemIo, \GPBS, 0x400)
+ Field(GPR, ByteAcc, NoLock, Preserve) {
+ Offset(0x00), // GPIO, Use Select, Bank 0
+ GU00, 8,
+ GU01, 8,
+ GU02, 8,
+ GU03, 8,
+ Offset(0x04), // GPIO, I/O Select, Bank 0
+ GIO0, 8,
+ GIO1, 8,
+ GIO2, 8,
+ GIO3, 8,
+ Offset(0x0C), // GPIO, Level, Bank 0
+ GL00, 8,
+ GL01, 8,
+ GL02, 8,
+ GP24, 1,
+ , 2,
+ GP27, 1, // SATA_PWR_EN#0
+ GP28, 1, // SATA_PWR_EN#1 (SATA Ports 1 and 2)
+ , 3,
+ Offset(0x18),
+ GB00, 8, // GPIO, Blink, Bank 0
+ GB01, 8,
+ GB02, 8,
+ GB03, 8,
+ Offset(0x2C),
+ GIV0, 8, // GPIO, Invert, Bank 0
+ GIV1, 8,
+ GIV2, 8,
+ GIV3, 8,
+ Offset(0x30), // GPIO, Use Select, Bank 1
+ GU04, 8,
+ GU05, 8,
+ GU06, 8,
+ GU07, 8,
+ Offset(0x34), // GPIO, I/O Select, Bank 1
+ GIO4, 8,
+ GIO5, 8,
+ GIO6, 8,
+ GIO7, 8,
+ Offset(0x38), // GPIO, Level, Bank 1
+ GL04, 8,
+ GL05, 8,
+ GL06, 8,
+ GL07, 8,
+ Offset(0x40), // GPIO, Use Select, Bank 2
+ GU08, 8,
+ GU09, 8,
+ GU0A, 8,
+ GU0B, 8,
+ Offset(0x44), // GPIO, I/O Select, Bank 2
+ GIO8, 8,
+ GIO9, 8,
+ GIOA, 8,
+ GIOB, 8,
+ Offset(0x48), // GPIO, Level, Bank 2
+ GL08, 8,
+ GL09, 8,
+ GL0A, 8,
+ GL0B, 8
+ }
+
+ //
+ // Define PCH GPIO I/O as an ACPI operating region.
+ // The base address can be found in Device 31, Registers 48-4Bh.
+ //
+ OperationRegion(GPRL, SystemIo, \GPBS, 0x40)
+ Field(GPRL, ByteAcc, NoLock, Preserve) {
+ Offset(0x00), // GPI_OWN, 0 => ACPI driver owned
+ , 8,
+ GO08, 1,
+ GO09, 1,
+ , 3,
+ GO13, 1,
+ GO14, 1,
+ , 2,
+ GO17, 1,
+ , 27,
+ GO45, 1,
+ , 5,
+ GO51, 1,
+ , 76,
+ Offset(0x30), // GPI_ROUT, 0 => SCI
+ GR00, 32,
+ GR01, 32,
+ GR02, 32
+ }
+
+ //
+ // Define a Memory Region that will allow access to the Root Complex
+ // Register Block. Note that in the Intel Reference Solution, the RCBA
+ // will get fixed up dynamically during POST.
+ //
+ OperationRegion(RCRB,SystemMemory,\SRCB,0x4000)
+ Field(RCRB,DWordAcc,Lock,Preserve) {
+ Offset(0x0000), // Backbone Related Registers
+ Offset(0x1000), // Other Chipset Registers
+#ifdef TRAD_FLAG
+ Offset(0x2330), // SBI AFE Address
+ AFEA, 32,
+ Offset(0x2334), // SBI AFE Data
+ AFED, 32,
+ Offset(0x2338), // SBI AFE Status
+ AFES, 16,
+ Offset(0x233A), // SBI AFE Routing Id
+ AFER, 16,
+#endif // TRAD_FLAG
+ Offset(0x3000), // Legacy\Other Chipset Configuration Registers
+ Offset(0x331c),
+ , 24,
+ PMFS, 1, // PCIe Source Clock Request Status
+ Offset(0x3320),
+ CKEN, 32, // PCIe Source Clock Enable Register
+ Offset(0x3404), // High Performance Timer Configuration
+ HPAS, 2, // (1:0) High Performance Address Select
+ , 5, // (6:2) Reserved
+ HPAE, 1, // (7) High Performance Address Enable
+ Offset(0x3418), // Function Disable Register
+ , 1, // (0) Reserved
+ ADSD, 1, // (1) Audio DSP Disable
+ SATD, 1, // (2) Serial ATA Disable
+ SMBD, 1, // (3) SMBus Disable
+ HDAD, 1, // (4) High Definition Audio Disable
+ , 11, // (15:5) Skip for now
+ RP1D, 1, // (16) Root Port 1 Disable
+ RP2D, 1, // (17) Root Port 2 Disable
+ RP3D, 1, // (18) Root Port 3 Disable
+ RP4D, 1, // (19) Root Port 4 Disable
+ RP5D, 1, // (20) Root Port 5 Disable
+ RP6D, 1, // (21) Root Port 6 Disable
+ RP7D, 1, // (22) Root Port 7 Disable
+ RP8D, 1, // (23) Root Port 8 Disable
+ Offset(0x359c), // Usb Port Disable Override Register
+ UP0D, 1, // (0) Usb Port 0 disable
+ UP1D, 1, // (1) Usb Port 1 disable
+ UP2D, 1, // (2) Usb Port 2 disable
+ UP3D, 1, // (3) Usb Port 3 disable
+ UP4D, 1, // (4) Usb Port 4 disable
+ UP5D, 1, // (5) Usb Port 5 disable
+ UP6D, 1, // (6) Usb Port 6 disable
+ UP7D, 1, // (7) Usb Port 7 disable
+ UP8D, 1, // (8) Usb Port 8 disable
+ UP9D, 1, // (9) Usb Port 9 disable
+ UPAD, 1, // (10) Usb Port 10 disable
+ UPBD, 1, // (11) Usb Port 11 disable
+ UPCD, 1, // (12) Usb Port 12 disable
+ UPDD, 1, // (13) Usb Port 13 disable
+ , 1, // (14) Reserved
+ , 1 // (15) Reserved
+ }
+ //
+ // Support S0, S3, S4, and S5. The proper bits to be set when
+ // entering a given sleep state are found in the Power Management
+ // 1 Control ( PM1_CNT ) register, located at ACPIBASE + 04h,
+ // bits 10d - 12d.
+ //
+
+ //
+ // Define the IO Address 1000h-1003h as an ACPI Operating Region first, and
+ // then it will be dynamically updated during initialization of PFAT code.
+ // The address presented here may not be the actual address used.
+ // This address range is used as a PFAT Tools Interface I/O Trap so that the
+ // update tool can trigger bios code to update the flash using the pfat flow.
+ //
+ OperationRegion (IO_P, SystemIO, 0x1000, 0x4)
+ Field (IO_P, ByteAcc, NoLock, Preserve) {
+ TRPF, 8 // 0x1000 = PFAT I/O Trap
+ }
+
+} //end Scope(\)
+
+ Scope (\_SB)
+ {
+
+ Method(RDGI,1,Serialized) //Read the value of Input GPIO Line
+ {
+ // Function to Read GPIO
+ //
+ // Arg0 : GPIn : GPIO Pin number to be read(Zero based)
+ //
+ If(LLessEqual(Arg0, 94)){
+ // GPBS - GPIO Base Address - 0x800
+ // Local0 = GPIOBASE + 100h + (GPIn * 0x08)
+ Store( Add(Add(GPBS,0x100) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ ,30,
+ TEMP, 1
+ }
+ Return(TEMP)
+ }
+ //AMI_OVERRIDE ---- Fixed for Ubuntu Firmware Test >>
+ Return(0)
+ //AMI_OVERRIDE ---- Fixed for Ubuntu Firmware Test <<
+ } // End of Method(RDGI,1)
+
+ Method(RDGP,1,Serialized)
+ {
+ // Function to Read GPIO
+ //
+ // Arg0 : GPIn : GPIO Pin number to be read(Zero based)
+ //
+ If(LLessEqual(Arg0, 94)){
+ // GPBS - GPIO Base Address - 0x800
+ // Local0 = GPIOBASE + 100h + (GPIn * 0x08)
+ Store( Add(Add(GPBS,0x100) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ ,31,
+ TEMP, 1
+ }
+ Return(TEMP)
+ }
+ //AMI_OVERRIDE ---- Fixed for Ubuntu Firmware Test >>
+ Return(0)
+ //AMI_OVERRIDE ---- Fixed for Ubuntu Firmware Test <<
+ } // End of Method(RDGP,1)
+
+ Method(WTGP,2,Serialized)
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - Value to be written
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store( Add(Add(GPBS,0x100) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ , 31,
+ TEMP, 1
+ }
+ Store(Arg1,TEMP)
+ }
+ }
+ Method(WTIN,2,Serialized)
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - Value to be written
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store( Add(Add(GPBS,0x100) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, ByteAcc, NoLock, Preserve) {
+ Offset(0x0),
+ , 3,
+ TEMP, 1
+ }
+ Store(Arg1,TEMP)
+ }
+ }
+
+ Method(WPGP,2,Serialized) //GP Weak pull
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - 00 = none 01 = down 10 = up
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store( Add(Add(GPBS,0x104) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ TEMP, 2
+ }
+ Store(Arg1,TEMP)
+ }
+ }
+
+ Method(GP2N,2,Serialized) //GPIO to Native
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - 0 = Native 1 = GPIO
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store( Add(Add(GPBS,0x100) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 4)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ TEMP, 1
+ }
+ Store(Arg1,TEMP)
+ }
+ }
+
+ Method(GP2A,2,Serialized) //GP to APIC
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - 00 = mask 01 = route to IOxAPIC and also Pull UP/NONE the GPIO mode Sensing weak pull
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store( Add(Add(GPBS,0x104) , Multiply(Arg0,0x08)),Local0)
+ OperationRegion(LGP2, SystemIo, Local0, 4)
+ Field(LGP2, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ GPWP, 2,
+ GPIS, 1
+ }
+ if(LEqual(Arg1,1))
+ {
+ Store(0,GPIS)
+ Store(0,GPWP)
+ }Else{
+ Store(2,GPWP)
+ Store(1,GPIS)
+ }
+
+ Store(Add(GPBS, 0x10), Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 2)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ TEMP, 16
+ }
+
+ // GPI PIRQ to IOxAPIC enable bit map
+ // GPI[55:45] to IOxAPIC enable bit[15:5], Subtract 40 from GPI to get ACPI bit
+ // GPI[14:13] to IOxAPIC enable bit[4:3], Subtract 10 from GPI to get ACPI bit
+ // GPI[10:8] to IOxAPIC enable bit[2:0], Subtract 8 from GPI to get ACPI bit
+ If(LGreaterEqual(Arg0, 45))
+ {
+ Subtract(Arg0, 40, Local1) // GPI[55:45] map to APIC[15:5]
+ }Else{
+ If(LLessEqual(Arg0, 10))
+ {
+ Subtract(Arg0, 8, Local1) // GPI[10:8] map to APIC[2:0]
+ }Else{
+ Subtract(Arg0, 10, Local1) // GPI[14:13] map to APIC[4:3]
+ }
+ }
+
+ Store(ShiftLeft(1, Local1), Local2)
+ If(Arg1){ //Enable GP to IOAPIC
+ Or(TEMP, Local2, TEMP)
+ } Else{ //mask
+ And(TEMP, Not(Local2), TEMP)
+ }
+ }
+ }
+
+ Method(GP2B,2,Serialized) //GP to APIC
+ {
+ // Function to write GPIO
+ // Arg0 - GPIn : GPIO Pin number to write
+ // Arg1 - 00 = mask 01 = route to IOxAPIC
+ //
+ If(LLessEqual(Arg0, 94)){
+ Store(Add(GPBS, 0x10), Local0)
+ OperationRegion(LGPI, SystemIo, Local0, 2)
+ Field(LGPI, AnyAcc, NoLock, Preserve) {
+ Offset(0x0),
+ TEMP, 16
+ }
+
+ // GPI PIRQ to IOxAPIC enable bit map
+ // GPI[55:45] to IOxAPIC enable bit[15:5], Subtract 40 from GPI to get ACPI bit
+ // GPI[14:13] to IOxAPIC enable bit[4:3], Subtract 10 from GPI to get ACPI bit
+ // GPI[10:8] to IOxAPIC enable bit[2:0], Subtract 8 from GPI to get ACPI bit
+ If(LGreaterEqual(Arg0, 45))
+ {
+ Subtract(Arg0, 40, Local1) // GPI[55:45] map to APIC[15:5]
+ }Else{
+ If(LLessEqual(Arg0, 10))
+ {
+ Subtract(Arg0, 8, Local1) // GPI[10:8] map to APIC[2:0]
+ }Else{
+ Subtract(Arg0, 10, Local1) // GPI[14:13] map to APIC[4:3]
+ }
+ }
+
+ Store(ShiftLeft(1, Local1), Local2)
+ If(Arg1){ //Enable GP to IOAPIC
+ Or(TEMP, Local2, TEMP)
+ } Else{ //mask
+ And(TEMP, Not(Local2), TEMP)
+ }
+ }
+ }
+
+ } // End of Scope SB
+
+scope (\_SB.PCI0) {
+ Name(LTRE, 0)
+ Name(OBFF, 0)
+
+ Name(LMSL, 0)
+ Name(LNSL, 0)
+ //
+ // LAN Controller - Device 25, Function 0
+ //
+ Device(GLAN) { // GbE Controller
+ Name(_ADR, 0x00190000)
+ Method(_PRW, 0) { Return(GPRW(0x0D, 4)) } // can wakeup from S4 state
+ } // end "GbE Controller"
+
+ //
+ // EHCI Controller #1 - Device 29, Function 0
+ //
+ Device(EHC1) {
+ Name(_ADR, 0x001D0000)
+ include("PchEhci1.asl")
+ Method(_PRW, 0) { Return(GPRW(0x0D, 4)) } // can wakeup from S4 state
+ } // end "EHCI Controller #1"
+
+ //
+ // EHCI Controller #2 - Device 26, Function 0
+ //
+ Device(EHC2) {
+ Name(_ADR, 0x001A0000)
+ include("PchEhci2.asl")
+ Method(_PRW, 0) { Return(GPRW(0x0D, 4)) } // can wakeup from S4 state
+ } // end "EHCI Controller #2"
+
+ //
+ // xHCI Controller - Device 20, Function 0
+ //
+ Device(XHC) {
+ Name(_ADR, 0x00140000)
+ include("PchXhci.asl")
+ Method(_PRW, 0) { Return(GPRW(0x0D, 4)) } // can wakeup from S4 state
+ } // end "xHCI Controller"
+
+ //
+ // High Definition Audio Controller - Device 27, Function 0
+ //
+ Device(HDEF) {
+ Name(_ADR, 0x001B0000)
+ include("PchAudio.asl")
+ Method(_PRW, 0) { Return(GPRW(0x0D, 4)) } // can wakeup from S4 state
+ } // end "High Definition Audio Controller"
+
+#ifdef SERIAL_IO_FLAG
+ //
+ // Serial IO Controllers definitions
+ //
+ include ("PchSerialIo.asl")
+ include ("ReferenceCode\\Chipset\\LynxPoint\\SampleCode\\AcpiTables\\Dsdt\\SerialIoDevices.asl")
+#endif // SERIAL_IO_FLAG
+
+#ifdef ADSP_FLAG
+ //
+ // Audio DSP Device definition - Device 19, Function 0
+ //
+ Device(ADSP) {
+ Name(_ADR, 0)
+ include("PchAudioDsp.asl")
+ }
+#endif // ADSP_FLAG
+
+#if 0
+ //
+ // PCIE Root Port #1
+ //
+ Device(RP01) {
+ Method (_ADR, 0) { Return (RPA0) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR1, LTRE)
+ Store (PML1, LMSL)
+ Store (PNL1, LNSL)
+ Store (OBF1, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR04) }// APIC mode
+ Return (PR04) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #1"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #2
+ //
+ Device(RP02) {
+ Method (_ADR, 0) { Return (RPA1) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR2, LTRE)
+ Store (PML2, LMSL)
+ Store (PNL2, LNSL)
+ Store (OBF2, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR05) }// APIC mode
+ Return (PR05) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #2"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #3
+ //
+ Device(RP03) {
+ Method (_ADR, 0) { Return (RPA2) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR3, LTRE)
+ Store (PML3, LMSL)
+ Store (PNL3, LNSL)
+ Store (OBF3, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR06) }// APIC mode
+ Return (PR06) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #3"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #4
+ //
+ Device(RP04) {
+ Method (_ADR, 0) { Return (RPA3) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR4, LTRE)
+ Store (PML4, LMSL)
+ Store (PNL4, LNSL)
+ Store (OBF4, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR07) }// APIC mode
+ Return (PR07) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #4"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #5
+ //
+ Device(RP05) {
+ Method (_ADR, 0) { Return (RPA4) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR5, LTRE)
+ Store (PML5, LMSL)
+ Store (PNL5, LNSL)
+ Store (OBF5, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR08) }// APIC mode
+ Return (PR08) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #5"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #6
+ //
+ Device(RP06) {
+ Method (_ADR, 0) { Return (RPA5) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR6, LTRE)
+ Store (PML6, LMSL)
+ Store (PNL6, LNSL)
+ Store (OBF6, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If (LEqual(And(CDID,0xF000), 0x8000)) { // LPT-H
+ If(PICM) { Return(AR09) }// APIC mode
+ Return (PR09) // PIC Mode
+ } Else { // ULT
+ If(PICM) { Return(AR08) }// APIC mode
+ Return (PR08) // PIC Mode
+ }
+ } // end _PRT
+
+ } // end "PCIE Root Port #6"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #7
+ //
+ Device(RP07) {
+ Method (_ADR, 0) { Return (RPA6) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR7, LTRE)
+ Store (PML7, LMSL)
+ Store (PNL7, LNSL)
+ Store (OBF7, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR0E) } // APIC mode
+ Return (PR0E) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #7"
+#endif
+
+#if 0
+ //
+ // PCIE Root Port #8
+ //
+ Device(RP08) {
+ Method (_ADR, 0) { Return (RPA7) }
+ //
+ // Pass LTRx to LTRE so PchPcie.asl can be reused for PCIes.
+ //
+ Method(_INI)
+ {
+ Store (LTR8, LTRE)
+ Store (PML8, LMSL)
+ Store (PNL8, LNSL)
+ Store (OBF8, OBFF)
+ }
+ include("PchPcie.asl")
+ Method(_PRW, 0) { Return(GPRW(0x09, 4)) } // can wakeup from S4 state
+ Method(_PRT,0) {
+ If(PICM) { Return(AR0F) }// APIC mode
+ Return (PR0F) // PIC Mode
+ } // end _PRT
+
+ } // end "PCIE Root Port #8"
+#endif
+
+ //
+ // Serial ATA Host Controller - Device 31, Function 2
+ //
+
+ // PCH SATA Controller
+ Device (SAT0)
+ {
+ //Bus 0x00, Device 0x1F, Function 0x02
+ Name(_ADR, 0x001F0002)
+ Name(FDEV, Zero)
+ Name(FDRP, Zero)
+
+ Method(_DEP){
+ ADBG("SAT0 DEP Call")
+
+ If(LGreaterEqual(OSYS,2013)) { // PEP SATA Constraint for WinBlue and newer version of WinOS
+ If(LAnd (LEqual(S0ID, 1), LNotEqual(And(PEPC, 0x03), 0))){ // PEPC Bit[1:0] - SATA (0:None, 1:SATA Ports[all], 2:SATA Controller)
+ // SATA PEP not set to No Constraint
+ ADBG("SAT0 DEP")
+ Return(Package() {\_SB.PEPD})
+ }
+ }
+
+ ADBG("SAT0 DEP NULL")
+ Return(Package() {}) // No dependency for other OS (non-WinBlue)
+ }
+
+ Device(PRT0)
+ {
+ Name(_ADR,0x0000FFFF) // Port 0
+ Method(_SDD,1, Serialized)
+ {
+ CreateByteField(Arg0, 157, BFDS)
+ ToInteger(BFDS, FDEV)
+ CreateByteField(Arg0, 154, BFRP)
+ ToInteger(BFRP, FDRP)
+ }
+ //Get Task File
+ Method(_GTF,0,Serialized)
+ {
+ //Set Feature Command to enable DevSlp
+ If (LAnd(LAnd(LEqual(DVS0, 1), LEqual(And(FDEV, 0x01), 0x01)), LEqual(And(FDRP, 0x80), 0x80))) {
+ Name(PIB1, Buffer(7)
+ {0x10, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xEF })
+ Return (PIB1)
+ }
+ Name(PIB2, Buffer(7)
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
+ Return (PIB2)
+ }
+ }
+ Device(PRT1)
+ {
+ Name(_ADR,0x0001FFFF) // Port 1
+ Name(FDEV, Zero)
+ Name(FDRP, Zero)
+ Method(_SDD,1, Serialized)
+ {
+ CreateByteField(Arg0, 157, BFDS)
+ ToInteger(BFDS, FDEV)
+ CreateByteField(Arg0, 154, BFRP)
+ ToInteger(BFRP, FDRP)
+ }
+ // Get Task File
+ Method(_GTF,0,Serialized)
+ {
+ //Set Feature Command to enable DevSlp
+ If (LAnd(LAnd(LEqual(DVS1, 1), LEqual(And(FDEV, 0x01), 0x01)), LEqual(And(FDRP, 0x80), 0x80))) {
+ Name(PIB1, Buffer(7)
+ {0x10, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xEF })
+ Return (PIB1)
+ }
+ Name(PIB2, Buffer(7)
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
+ Return (PIB2)
+ }
+ }
+ Device(PRT2)
+ {
+ Name(_ADR,0x0002FFFF) // Port 1
+ Name(FDEV, Zero)
+ Name(FDRP, Zero)
+ Method(_SDD,1, Serialized)
+ {
+ CreateByteField(Arg0, 157, BFDS)
+ ToInteger(BFDS, FDEV)
+ CreateByteField(Arg0, 154, BFRP)
+ ToInteger(BFRP, FDRP)
+ }
+ // Get Task File
+ Method(_GTF,0,Serialized)
+ {
+ //Set Feature Command to enable DevSlp
+ If (LAnd(LAnd(LEqual(DVS2, 1), LEqual(And(FDEV, 0x01), 0x01)), LEqual(And(FDRP, 0x80), 0x80))) {
+ Name(PIB1, Buffer(7)
+ {0x10, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xEF })
+ Return (PIB1)
+ }
+ Name(PIB2, Buffer(7)
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
+ Return (PIB2)
+ }
+ }
+ Device(PRT3)
+ {
+ Name(_ADR,0x0003FFFF) // Port 3
+ Name(FDEV, Zero)
+ Name(FDRP, Zero)
+ Method(_SDD,1, Serialized)
+ {
+ CreateByteField(Arg0, 157, BFDS)
+ ToInteger(BFDS, FDEV)
+ CreateByteField(Arg0, 154, BFRP)
+ ToInteger(BFRP, FDRP)
+ }
+ // Get Task File
+ Method(_GTF,0,Serialized)
+ {
+ //Set Feature Command to enable DevSlp
+ If (LAnd(LAnd(LEqual(DVS3, 1), LEqual(And(FDEV, 0x01), 0x01)), LEqual(And(FDRP, 0x80), 0x80))) {
+ Name(PIB1, Buffer(7)
+ {0x10, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xEF })
+ Return (PIB1)
+ }
+ Name(PIB2, Buffer(7)
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 })
+ Return (PIB2)
+ }
+ }
+ }
+
+ Device(SAT1) {
+ Name(_ADR,0x001F0005)
+ //
+ // SATA Methods pulled in via SSDT.
+ //
+ }
+
+ //
+ // SMBus Controller - Device 31, Function 3
+ //
+ Device(SBUS) {
+ Name(_ADR,0x001F0003)
+ Include("PchSmb.asl")
+ }
+}