diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl | |
download | zprj-master.tar.xz |
Diffstat (limited to 'ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl')
-rw-r--r-- | ReferenceCode/Chipset/LynxPoint/AcpiTables/Dsdt/Pch.asl | 977 |
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") + } +} |