blob: 7d02eb04372aedcf95162d5f6e562b64f81c4b60 [file] [log] [blame]
/*
* This file is part of the coreboot project.
*
* Copyright (C) 2007-2009 coresystems GmbH
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of
* the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
OperationRegion (PRR0, PCI_Config, 0x00, 0x100)
Field (PRR0, AnyAcc, NoLock, Preserve) {
Offset(0x60),
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8,
Offset(0x68),
PIRE, 8,
PIRF, 8,
PIRG, 8,
PIRH, 8
}
Device (LNKA) { // PCI IRQ link A
Name (_HID,EISAID("PNP0C0F"))
//Name(_UID, 1)
Method (_STA,0,NotSerialized) {
If(And(PIRA, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS,0,NotSerialized) {
Or (PIRA, 0x80, PIRA)
}
Method (_CRS,0,Serialized) {
Name (BUF0, ResourceTemplate() {IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And(PIRA, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0,And (PIRA,0x0F),IRQW) // Save in buffer
Return (BUF0) // Return Buf0
} // End of _CRS method
Name (_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit(IRQW,Local0) // Set IRQ
If (LNotEqual (IRQW,Zero)){
And (Local0, 0x7F,Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80,Local0)
}
Store (Local0, PIRA)
} // End of _SRS Method
}
Device(LNKB) { // PCI IRQ link B
Name (_HID,EISAID("PNP0C0F"))
//Name(_UID, 2)
Method (_STA,0,NotSerialized) {
If (And (PIRB, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS,0,NotSerialized) {
Or (PIRB, 0x80,PIRB)
}
Method (_CRS,0,Serialized) {
Name(BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRB, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0,And (PIRB,0x0F),IRQW) // Save in buffer
Return (BUF0) // Return Buf0
} // End of _CRS method
Name (_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit(IRQW,Local0) // Set IRQ
If (LNotEqual(IRQW,Zero)) {
And (Local0, 0x7F, Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRB)
} // End of _SRS Method
}
Device(LNKC) { // PCI IRQ link C
Name(_HID, EISAID("PNP0C0F"))
//Name(_UID, 3)
Method (_STA,0,NotSerialized) {
If (And (PIRC, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS, 0, NotSerialized) {
Or (PIRC, 0x80, PIRC)
}
Method (_CRS, 0, Serialized) {
Name (BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRC, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0,And (PIRC,0x0F),IRQW)
Return (BUF0)
} // End of _CRS method
Name (_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit(IRQW,Local0) // Set IRQ
If (LNotEqual (IRQW,Zero)) {
And (Local0, 0x7F, Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80,Local0)
}
Store (Local0, PIRC)
} // End of _SRS Method
}
Device (LNKD) { // PCI IRQ link D
Name (_HID,EISAID ("PNP0C0F"))
//Name(_UID, 4)
Method (_STA, 0, NotSerialized) {
If (And (PIRD, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS, 0, NotSerialized) {
Or(PIRD, 0x80,PIRD)
}
Method (_CRS,0,Serialized) {
Name (BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRD, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0, And (PIRD,0x0F), IRQW)
Return (BUF0) // Return Buf0
} // End of _CRS method
Name (_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit (IRQW, Local0)// Set IRQ
If (LNotEqual (IRQW, Zero)) {
And (Local0, 0x7F, Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80, Local0)
}
Store(Local0, PIRD)
} // End of _SRS Method
}
Device(LNKE) { // PCI IRQ link E
Name(_HID,EISAID("PNP0C0F"))
//Name(_UID, 5)
Method (_STA,0,NotSerialized) {
If (And (PIRE, 0x80)) {
Return(0x9)
} Else {
Return(0xB)
} // Don't display
}
Method (_DIS,0,NotSerialized) {
Or (PIRE, 0x80, PIRE)
}
Method (_CRS, 0, Serialized) {
Name (BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRE, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One, Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0, And (PIRE,0x0F), IRQW)
Return (BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit (IRQW, Local0) // Set IRQ
If (LNotEqual (IRQW, Zero)) {
And (Local0, 0x7F, Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRE)
} // End of _SRS Method
}
Device(LNKF) { // PCI IRQ link F
Name (_HID,EISAID("PNP0C0F"))
//Name(_UID, 6)
Method (_STA,0,NotSerialized) {
If (And (PIRF, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS,0,NotSerialized) {
Or (PIRB, 0x80, PIRF)
}
Method (_CRS,0,Serialized) {
Name(BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRF, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One, Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0, And (PIRF, 0x0F),IRQW)
Return (BUF0)
} // End of _CRS method
Name(_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit (IRQW,Local0) // Set IRQ
If (LNotEqual (IRQW,Zero)) {
And (Local0, 0x7F,Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80, Local0)
}
Store (Local0, PIRF)
} // End of _SRS Method
}
Device(LNKG) { // PCI IRQ link G
Name(_HID,EISAID("PNP0C0F"))
//Name(_UID, 7)
Method(_STA,0,NotSerialized) {
If (And (PIRG, 0x80)) {
Return (0x9)
} Else {
Return (0xB)
} // Don't display
}
Method (_DIS, 0, NotSerialized) {
Or(PIRG, 0x80,PIRG)
}
Method (_CRS,0,Serialized){
Name(BUF0,ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And(PIRG, 0x80)) {
Store(Zero, Local0)
} Else {
Store(One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0,And(PIRG,0x0F),IRQW)
Return (BUF0)
} // End of _CRS method
Name (_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit(IRQW,Local0) // Set IRQ
If (LNotEqual (IRQW,Zero)) {
And (Local0, 0x7F,Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80,Local0)
}
Store (Local0, PIRG)
} // End of _SRS Method
}
Device(LNKH) { // PCI IRQ link H
Name (_HID,EISAID("PNP0C0F"))
//Name(_UID, 8)
Method (_STA,0,NotSerialized) {
If (And(PIRH, 0x80)) {
Return(0x9)
} Else {
Return(0xB)
} // Don't display
}
Method (_DIS,0,NotSerialized) {
Or(PIRH, 0x80,PIRH)
}
Method (_CRS,0,Serialized) {
Name(BUF0, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){0}})
//
// Define references to buffer elements
//
CreateWordField (BUF0, 0x01, IRQW) // IRQ low
//
// Write current settings into IRQ descriptor
//
If (And (PIRH, 0x80)) {
Store (Zero, Local0)
} Else {
Store (One,Local0)
}
//
// Shift 1 by value in register 70, Save in buffer
//
ShiftLeft (Local0,And(PIRH,0x0F),IRQW)
Return (BUF0)
} // End of _CRS method
Name(_PRS, ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){3,4,5,6,7,9,10,11,12,14,15}})
Method (_SRS,1,NotSerialized) {
CreateWordField (ARG0, 0x01, IRQW) // IRQ low
FindSetRightBit (IRQW,Local0)// Set IRQ
If (LNotEqual (IRQW,Zero)) {
And (Local0, 0x7F,Local0)
Decrement (Local0)
} Else {
Or (Local0, 0x80,Local0)
}
Store (Local0, PIRH)
}
}