audk/QuarkPlatformPkg/Acpi/AcpiTables/Dsdt/PciIrq.asi

553 lines
14 KiB
Plaintext

/** @file
Copyright (c) 2013-2015 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
// Interrupts can be DEB8=all except 13,8,6,2,1,0
#ifndef PCIIRQ_ASI
#define PCIIRQ_ASI
OperationRegion(PRR0, PCI_Config, 0x60, 0x08)
Field(PRR0, ANYACC, NOLOCK, PRESERVE)
{
PIRA, 8,
PIRB, 8,
PIRC, 8,
PIRD, 8,
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
ShiftLeft(Local0,And(PIRA,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRB,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRC,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRD,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRE,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRF,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRG,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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
ShiftLeft(Local0,And(PIRH,0x0F),IRQW) // Save in buffer
Return(BUF0) // Return Buf0
} // End of _CRS method
Name(_PRS,
ResourceTemplate()
{IRQ(Level,ActiveLow,Shared){12,11,10,9,7,5,4,3}})
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)
} // End of _SRS Method
}
#endif