blob: da8252367c34b50931cff1a92b12d0480059918d [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* PIRQ routing control is in PCR ITSS region.
*
* Due to what appears to be an ACPI interpreter bug we do not use
* the PCRB() method here as it may not be defined yet because the method
* definiton depends on the order of the include files in pch.asl.
*
* https://bugs.acpica.org/show_bug.cgi?id=1201
*/
OperationRegion (ITSS, SystemMemory,
Add (PCR_ITSS_PIRQA_ROUT,
Add (CONFIG_PCR_BASE_ADDRESS,
ShiftLeft (PID_ITSS, PCR_PORTID_SHIFT))), 8)
Field (ITSS, ByteAcc, NoLock, Preserve)
{
PIRA, 8, /* PIRQA Routing Control */
PIRB, 8, /* PIRQB Routing Control */
PIRC, 8, /* PIRQC Routing Control */
PIRD, 8, /* PIRQD Routing Control */
PIRE, 8, /* PIRQE Routing Control */
PIRF, 8, /* PIRQF Routing Control */
PIRG, 8, /* PIRQG Routing Control */
PIRH, 8, /* PIRQH Routing Control */
}
Name (IREN, 0x80) /* Interrupt Routing Enable */
Name (IREM, 0x0f) /* Interrupt Routing Mask */
Device (LNKA)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 1)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRA, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRA)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRA, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRA, ^^IREN, ^^PIRA)
}
}
Device (LNKB)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 2)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRB, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRB)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRB, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRB, ^^IREN, ^^PIRB)
}
}
Device (LNKC)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 3)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRC, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRC)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRC, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRC, ^^IREN, ^^PIRC)
}
}
Device (LNKD)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 4)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRD, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRD)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRD, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRD, ^^IREN, ^^PIRD)
}
}
Device (LNKE)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 5)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRE, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRE)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRE, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRE, ^^IREN, ^^PIRE)
}
}
Device (LNKF)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 6)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRF, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRF)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRF, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRF, ^^IREN, ^^PIRF)
}
}
Device (LNKG)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 7)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRG, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRG)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRG, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRG, ^^IREN, ^^PIRG)
}
}
Device (LNKH)
{
Name (_HID, EISAID ("PNP0C0F"))
Name (_UID, 8)
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared)
{ 3, 4, 5, 6, 10, 11, 12, 14, 15 }
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared) {}
})
CreateWordField (RTLA, 1, IRQ0)
Store (Zero, IRQ0)
/* Set the bit from PIRQ Routing Register */
ShiftLeft (1, And (^^PIRH, ^^IREM), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, 1, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, ^^PIRH)
}
Method (_STA, 0, Serialized)
{
If (And (^^PIRH, ^^IREN)) {
Return (0x9)
} Else {
Return (0xb)
}
}
Method (_DIS, 0, Serialized)
{
Or (^^PIRH, ^^IREN, ^^PIRH)
}
}