/**************************************************************************; ;* *; ;* *; ;* 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. ; ;* *; ;* *; ;**************************************************************************/ // Use this information when determining the Possible IRQs that can be // used in a given system. // // The following IRQs are always in use by legacy devices: // 0 = System Timer // 2 = 8259 PIC // 8 = RTC // 9 = SCI Interrupt (It may be used, we choose not to) // 13 = Co-processor Error // // The following may be in use by legacy devices: // 1 = If using PS/2 Keyboard // 3 = If COMx Port Enabled and IRQ = 3 // 4 = If COMx Port Enabled and IRQ = 4 // 5 = If LPT Port Enabled and IRQ = 5 // 6 = If FDC Enabled // 7 = If LPT Port Enabled and IRQ = 7 // 12 = If using PS/2 Mouse // 14 = Primary IDE (If populated and in Compatibility Mode) // 15 = Secondary IDE (If populated and in Compatibility Mode) // // The following will never be in use by legacy devices: // 10 = Assign to PARC, PCRC, PERC, PGRC // 11 = Assign to PBRC, PDRC, PFRC, PHRC Device(LNKA) // PARC Routing Resource { Name(_HID,EISAID("PNP0C0F")) // PCI Interrupt Link Device Name(_UID,1) // Unique to other Link Devices // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PARC,0x80,PARC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSA) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLA,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLA,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PARC,0x0F),IRQ0) Return(RTLA) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PARC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PARC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKB) // PBRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,2) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PBRC,0x80,PBRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSB) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLB,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLB,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PBRC,0x0F),IRQ0) Return(RTLB) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PBRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PBRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKC) // PCRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,3) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PCRC,0x80,PCRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSC) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLC,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLC,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PCRC,0x0F),IRQ0) Return(RTLC) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PCRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PCRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKD) // PDRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,4) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PDRC,0x80,PDRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSD) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLD,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLD,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PDRC,0x0F),IRQ0) Return(RTLD) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PDRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PDRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKE) // PERC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,5) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PERC,0x80,PERC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSE) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLE,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLE,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PERC,0x0F),IRQ0) Return(RTLE) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PERC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PERC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKF) // PFRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,6) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PFRC,0x80,PFRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSF) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLF,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLF,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PFRC,0x0F),IRQ0) Return(RTLF) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PFRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PFRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKG) // PGRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,7) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PGRC,0x80,PGRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSG) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLG,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLG,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PGRC,0x0F),IRQ0) Return(RTLG) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PGRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PGRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } } Device(LNKH) // PHRC Routing Resource { Name(_HID,EISAID("PNP0C0F")) Name(_UID,8) // Disable the PCI IRQ. Method(_DIS,0,Serialized) { Or(PHRC,0x80,PHRC) } // Possible IRQ Resource Setting. Method (_PRS, 0, Serialized) { return (PRSH) } // Current IRQ Resource Setting. Method(_CRS,0,Serialized) { Name(RTLH,ResourceTemplate() { IRQ(Level,ActiveLow,Shared) {} }) // Point to specific byte. CreateWordField(RTLH,1,IRQ0) // Zero out IRQ mask bits 0-15 Store(Zero,IRQ0) ShiftLeft(1,And(PHRC,0x0F),IRQ0) Return(RTLH) } // Set IRQ Resource Setting. Method(_SRS,1,Serialized) { // Point to the specific byte passed in. CreateWordField(Arg0,1,IRQ0) // Determine the IRQ bit to set and store it, FindSetRightBit(IRQ0,Local0) Decrement(Local0) Store(Local0,PHRC) } // PCI IRQ Status. Method(_STA,0,Serialized) { If(And(PHRC,0x80)) { Return(0x0009) } Else { Return(0x000B) } } }