mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
hvmloader: Auto-generate IRQ routing tables in ACPI DSDT.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
1 parent
b549d6e6e3
commit
c7679119e4
3 files changed
+7789
-8259
No files matched your search
@@ -199,157 +199,6 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
|
||||
Return (PRT0)
|
||||
}
|
||||
|
||||
Name(BUFA, ResourceTemplate() {
|
||||
IRQ(Level, ActiveLow, Shared) { 5, 10, 11 }
|
||||
})
|
||||
|
||||
Name(BUFB, Buffer() {
|
||||
0x23, 0x00, 0x00, 0x18, /* IRQ descriptor */
|
||||
0x79, 0 /* End tag, null checksum */
|
||||
})
|
||||
|
||||
CreateWordField(BUFB, 0x01, IRQV)
|
||||
|
||||
Device(LNKA) {
|
||||
Name(_HID, EISAID("PNP0C0F")) /* PCI interrupt link */
|
||||
Name(_UID, 1)
|
||||
|
||||
Method(_STA, 0) {
|
||||
And(PIRA, 0x80, Local0)
|
||||
If(LEqual(Local0, 0x80)) {
|
||||
Return(0x09)
|
||||
} Else {
|
||||
Return(0x0B)
|
||||
}
|
||||
}
|
||||
|
||||
Method(_PRS) {
|
||||
Return(BUFA)
|
||||
}
|
||||
|
||||
Method(_DIS) {
|
||||
Or(PIRA, 0x80, PIRA)
|
||||
}
|
||||
|
||||
Method(_CRS) {
|
||||
And(PIRA, 0x0f, Local0)
|
||||
ShiftLeft(0x1, Local0, IRQV)
|
||||
Return(BUFB)
|
||||
}
|
||||
|
||||
Method(_SRS, 1) {
|
||||
CreateWordField(ARG0, 0x01, IRQ1)
|
||||
FindSetRightBit(IRQ1, Local0)
|
||||
Decrement(Local0)
|
||||
Store(Local0, PIRA)
|
||||
}
|
||||
}
|
||||
|
||||
Device(LNKB) {
|
||||
Name(_HID, EISAID("PNP0C0F")) /* PCI interrupt link */
|
||||
Name(_UID, 2)
|
||||
|
||||
Method(_STA, 0) {
|
||||
And(PIRB, 0x80, Local0)
|
||||
If(LEqual(Local0, 0x80)) {
|
||||
Return(0x09)
|
||||
} Else {
|
||||
Return(0x0B)
|
||||
}
|
||||
}
|
||||
|
||||
Method(_PRS) {
|
||||
Return(BUFA)
|
||||
}
|
||||
|
||||
Method(_DIS) {
|
||||
Or(PIRB, 0x80, PIRB)
|
||||
}
|
||||
|
||||
Method(_CRS) {
|
||||
And(PIRB, 0x0f, Local0)
|
||||
ShiftLeft(0x1, Local0, IRQV)
|
||||
Return(BUFB)
|
||||
}
|
||||
|
||||
Method(_SRS, 1) {
|
||||
CreateWordField(ARG0, 0x01, IRQ1)
|
||||
FindSetRightBit(IRQ1, Local0)
|
||||
Decrement(Local0)
|
||||
Store(Local0, PIRB)
|
||||
}
|
||||
}
|
||||
|
||||
Device(LNKC) {
|
||||
Name(_HID, EISAID("PNP0C0F")) /* PCI interrupt link */
|
||||
Name(_UID, 3)
|
||||
|
||||
Method(_STA, 0) {
|
||||
And(PIRC, 0x80, Local0)
|
||||
If(LEqual(Local0, 0x80)) {
|
||||
Return(0x09)
|
||||
} Else {
|
||||
Return(0x0B)
|
||||
}
|
||||
}
|
||||
|
||||
Method(_PRS) {
|
||||
Return(BUFA)
|
||||
}
|
||||
|
||||
Method(_DIS) {
|
||||
Or(PIRC, 0x80, PIRC)
|
||||
}
|
||||
|
||||
Method(_CRS) {
|
||||
And(PIRC, 0x0f, Local0)
|
||||
ShiftLeft(0x1, Local0, IRQV)
|
||||
Return(BUFB)
|
||||
}
|
||||
|
||||
Method(_SRS, 1) {
|
||||
CreateWordField(ARG0, 0x01, IRQ1)
|
||||
FindSetRightBit(IRQ1, Local0)
|
||||
Decrement(Local0)
|
||||
Store(Local0, PIRC)
|
||||
}
|
||||
}
|
||||
|
||||
Device(LNKD) {
|
||||
Name(_HID, EISAID("PNP0C0F")) /* PCI interrupt link */
|
||||
Name(_UID, 4)
|
||||
|
||||
Method(_STA, 0) {
|
||||
And(PIRD, 0x80, Local0)
|
||||
If(LEqual(Local0, 0x80)) {
|
||||
Return(0x09)
|
||||
} Else {
|
||||
Return(0x0B)
|
||||
}
|
||||
}
|
||||
|
||||
Method(_PRS) {
|
||||
Return(BUFA)
|
||||
}
|
||||
|
||||
Method(_DIS) {
|
||||
Or(PIRD, 0x80, PIRD)
|
||||
}
|
||||
|
||||
Method(_CRS) {
|
||||
And(PIRD, 0x0f, Local0)
|
||||
ShiftLeft(0x1, Local0, IRQV)
|
||||
Return(BUFB)
|
||||
}
|
||||
|
||||
Method(_SRS, 1) {
|
||||
CreateWordField(ARG0, 0x01, IRQ1)
|
||||
FindSetRightBit(IRQ1, Local0)
|
||||
Decrement(Local0)
|
||||
Store(Local0, PIRD)
|
||||
}
|
||||
}
|
||||
|
||||
Device(HPET) {
|
||||
Name(_HID, EISAID("PNP0103"))
|
||||
Name(_UID, 0)
|
||||
@@ -373,389 +222,6 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, "Xen", "HVM", 0)
|
||||
})
|
||||
}
|
||||
|
||||
Method(_PRT,0) {
|
||||
If(PICD) {
|
||||
Return(PRTA)
|
||||
}
|
||||
Return (PRTP)
|
||||
}
|
||||
|
||||
Name(PRTP, Package() {
|
||||
/* Device 1, INTA - INTD */
|
||||
Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 2, INTA - INTD */
|
||||
Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 3, INTA - INTD */
|
||||
Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 4, INTA - INTD */
|
||||
Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 5, INTA - INTD */
|
||||
Package(){0x0005ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0005ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0005ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0005ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 6, INTA - INTD */
|
||||
Package(){0x0006ffff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0006ffff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0006ffff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0006ffff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 7, INTA - INTD */
|
||||
Package(){0x0007ffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0007ffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0007ffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0007ffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 8, INTA - INTD */
|
||||
Package(){0x0008ffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0008ffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0008ffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0008ffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 9, INTA - INTD */
|
||||
Package(){0x0009ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0009ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0009ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0009ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 10, INTA - INTD */
|
||||
Package(){0x000affff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x000affff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x000affff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x000affff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 11, INTA - INTD */
|
||||
Package(){0x000bffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x000bffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x000bffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x000bffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 12, INTA - INTD */
|
||||
Package(){0x000cffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x000cffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x000cffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x000cffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 13, INTA - INTD */
|
||||
Package(){0x000dffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x000dffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x000dffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x000dffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 14, INTA - INTD */
|
||||
Package(){0x000effff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x000effff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x000effff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x000effff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 15, INTA - INTD */
|
||||
Package(){0x000fffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x000fffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x000fffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x000fffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 16, INTA - INTD */
|
||||
Package(){0x0010ffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0010ffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0010ffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0010ffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 17, INTA - INTD */
|
||||
Package(){0x0011ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0011ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0011ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0011ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 18, INTA - INTD */
|
||||
Package(){0x0012ffff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0012ffff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0012ffff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0012ffff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 19, INTA - INTD */
|
||||
Package(){0x0013ffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0013ffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0013ffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0013ffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 20, INTA - INTD */
|
||||
Package(){0x0014ffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0014ffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0014ffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0014ffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 21, INTA - INTD */
|
||||
Package(){0x0015ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0015ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0015ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0015ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 22, INTA - INTD */
|
||||
Package(){0x0016ffff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0016ffff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0016ffff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0016ffff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 23, INTA - INTD */
|
||||
Package(){0x0017ffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0017ffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0017ffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0017ffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 24, INTA - INTD */
|
||||
Package(){0x0018ffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x0018ffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0018ffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0018ffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 25, INTA - INTD */
|
||||
Package(){0x0019ffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x0019ffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x0019ffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x0019ffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 26, INTA - INTD */
|
||||
Package(){0x001affff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x001affff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x001affff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x001affff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 27, INTA - INTD */
|
||||
Package(){0x001bffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x001bffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x001bffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x001bffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
|
||||
/* Device 28, INTA - INTD */
|
||||
Package(){0x001cffff, 0, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x001cffff, 1, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x001cffff, 2, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x001cffff, 3, \_SB.PCI0.LNKD, 0},
|
||||
|
||||
/* Device 29, INTA - INTD */
|
||||
Package(){0x001dffff, 0, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x001dffff, 1, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x001dffff, 2, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x001dffff, 3, \_SB.PCI0.LNKA, 0},
|
||||
|
||||
/* Device 30, INTA - INTD */
|
||||
Package(){0x001effff, 0, \_SB.PCI0.LNKC, 0},
|
||||
Package(){0x001effff, 1, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x001effff, 2, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x001effff, 3, \_SB.PCI0.LNKB, 0},
|
||||
|
||||
/* Device 31, INTA - INTD */
|
||||
Package(){0x001fffff, 0, \_SB.PCI0.LNKD, 0},
|
||||
Package(){0x001fffff, 1, \_SB.PCI0.LNKA, 0},
|
||||
Package(){0x001fffff, 2, \_SB.PCI0.LNKB, 0},
|
||||
Package(){0x001fffff, 3, \_SB.PCI0.LNKC, 0},
|
||||
})
|
||||
|
||||
Name(PRTA, Package() {
|
||||
/* Device 1, INTA - INTD */
|
||||
Package(){0x0001ffff, 0, 0, 20},
|
||||
Package(){0x0001ffff, 1, 0, 21},
|
||||
Package(){0x0001ffff, 2, 0, 22},
|
||||
Package(){0x0001ffff, 3, 0, 23},
|
||||
|
||||
/* Device 2, INTA - INTD */
|
||||
Package(){0x0002ffff, 0, 0, 24},
|
||||
Package(){0x0002ffff, 1, 0, 25},
|
||||
Package(){0x0002ffff, 2, 0, 26},
|
||||
Package(){0x0002ffff, 3, 0, 27},
|
||||
|
||||
/* Device 3, INTA - INTD */
|
||||
Package(){0x0003ffff, 0, 0, 28},
|
||||
Package(){0x0003ffff, 1, 0, 29},
|
||||
Package(){0x0003ffff, 2, 0, 30},
|
||||
Package(){0x0003ffff, 3, 0, 31},
|
||||
|
||||
/* Device 4, INTA - INTD */
|
||||
Package(){0x0004ffff, 0, 0, 32},
|
||||
Package(){0x0004ffff, 1, 0, 33},
|
||||
Package(){0x0004ffff, 2, 0, 34},
|
||||
Package(){0x0004ffff, 3, 0, 35},
|
||||
|
||||
/* Device 5, INTA - INTD */
|
||||
Package(){0x0005ffff, 0, 0, 36},
|
||||
Package(){0x0005ffff, 1, 0, 37},
|
||||
Package(){0x0005ffff, 2, 0, 38},
|
||||
Package(){0x0005ffff, 3, 0, 39},
|
||||
|
||||
/* Device 6, INTA - INTD */
|
||||
Package(){0x0006ffff, 0, 0, 40},
|
||||
Package(){0x0006ffff, 1, 0, 41},
|
||||
Package(){0x0006ffff, 2, 0, 42},
|
||||
Package(){0x0006ffff, 3, 0, 43},
|
||||
|
||||
/* Device 7, INTA - INTD */
|
||||
Package(){0x0007ffff, 0, 0, 44},
|
||||
Package(){0x0007ffff, 1, 0, 45},
|
||||
Package(){0x0007ffff, 2, 0, 46},
|
||||
Package(){0x0007ffff, 3, 0, 47},
|
||||
|
||||
/* Device 8, INTA - INTD */
|
||||
Package(){0x0008ffff, 0, 0, 17},
|
||||
Package(){0x0008ffff, 1, 0, 18},
|
||||
Package(){0x0008ffff, 2, 0, 19},
|
||||
Package(){0x0008ffff, 3, 0, 20},
|
||||
|
||||
/* Device 9, INTA - INTD */
|
||||
Package(){0x0009ffff, 0, 0, 21},
|
||||
Package(){0x0009ffff, 1, 0, 22},
|
||||
Package(){0x0009ffff, 2, 0, 23},
|
||||
Package(){0x0009ffff, 3, 0, 24},
|
||||
|
||||
/* Device 10, INTA - INTD */
|
||||
Package(){0x000affff, 0, 0, 25},
|
||||
Package(){0x000affff, 1, 0, 26},
|
||||
Package(){0x000affff, 2, 0, 27},
|
||||
Package(){0x000affff, 3, 0, 28},
|
||||
|
||||
/* Device 11, INTA - INTD */
|
||||
Package(){0x000bffff, 0, 0, 29},
|
||||
Package(){0x000bffff, 1, 0, 30},
|
||||
Package(){0x000bffff, 2, 0, 31},
|
||||
Package(){0x000bffff, 3, 0, 32},
|
||||
|
||||
/* Device 12, INTA - INTD */
|
||||
Package(){0x000cffff, 0, 0, 33},
|
||||
Package(){0x000cffff, 1, 0, 34},
|
||||
Package(){0x000cffff, 2, 0, 35},
|
||||
Package(){0x000cffff, 3, 0, 36},
|
||||
|
||||
/* Device 13, INTA - INTD */
|
||||
Package(){0x000dffff, 0, 0, 37},
|
||||
Package(){0x000dffff, 1, 0, 38},
|
||||
Package(){0x000dffff, 2, 0, 39},
|
||||
Package(){0x000dffff, 3, 0, 40},
|
||||
|
||||
/* Device 14, INTA - INTD */
|
||||
Package(){0x000effff, 0, 0, 41},
|
||||
Package(){0x000effff, 1, 0, 42},
|
||||
Package(){0x000effff, 2, 0, 43},
|
||||
Package(){0x000effff, 3, 0, 44},
|
||||
|
||||
/* Device 15, INTA - INTD */
|
||||
Package(){0x000fffff, 0, 0, 45},
|
||||
Package(){0x000fffff, 1, 0, 46},
|
||||
Package(){0x000fffff, 2, 0, 47},
|
||||
Package(){0x000fffff, 3, 0, 16},
|
||||
|
||||
/* Device 16, INTA - INTD */
|
||||
Package(){0x0010ffff, 0, 0, 18},
|
||||
Package(){0x0010ffff, 1, 0, 19},
|
||||
Package(){0x0010ffff, 2, 0, 20},
|
||||
Package(){0x0010ffff, 3, 0, 21},
|
||||
|
||||
/* Device 17, INTA - INTD */
|
||||
Package(){0x0011ffff, 0, 0, 22},
|
||||
Package(){0x0011ffff, 1, 0, 23},
|
||||
Package(){0x0011ffff, 2, 0, 24},
|
||||
Package(){0x0011ffff, 3, 0, 25},
|
||||
|
||||
/* Device 18, INTA - INTD */
|
||||
Package(){0x0012ffff, 0, 0, 26},
|
||||
Package(){0x0012ffff, 1, 0, 27},
|
||||
Package(){0x0012ffff, 2, 0, 28},
|
||||
Package(){0x0012ffff, 3, 0, 29},
|
||||
|
||||
/* Device 19, INTA - INTD */
|
||||
Package(){0x0013ffff, 0, 0, 30},
|
||||
Package(){0x0013ffff, 1, 0, 31},
|
||||
Package(){0x0013ffff, 2, 0, 32},
|
||||
Package(){0x0013ffff, 3, 0, 33},
|
||||
|
||||
/* Device 20, INTA - INTD */
|
||||
Package(){0x0014ffff, 0, 0, 34},
|
||||
Package(){0x0014ffff, 1, 0, 35},
|
||||
Package(){0x0014ffff, 2, 0, 36},
|
||||
Package(){0x0014ffff, 3, 0, 37},
|
||||
|
||||
/* Device 21, INTA - INTD */
|
||||
Package(){0x0015ffff, 0, 0, 38},
|
||||
Package(){0x0015ffff, 1, 0, 39},
|
||||
Package(){0x0015ffff, 2, 0, 40},
|
||||
Package(){0x0015ffff, 3, 0, 41},
|
||||
|
||||
/* Device 22, INTA - INTD */
|
||||
Package(){0x0016ffff, 0, 0, 42},
|
||||
Package(){0x0016ffff, 1, 0, 43},
|
||||
Package(){0x0016ffff, 2, 0, 44},
|
||||
Package(){0x0016ffff, 3, 0, 45},
|
||||
|
||||
/* Device 23, INTA - INTD */
|
||||
Package(){0x0017ffff, 0, 0, 46},
|
||||
Package(){0x0017ffff, 1, 0, 47},
|
||||
Package(){0x0017ffff, 2, 0, 16},
|
||||
Package(){0x0017ffff, 3, 0, 17},
|
||||
|
||||
/* Device 24, INTA - INTD */
|
||||
Package(){0x0018ffff, 0, 0, 19},
|
||||
Package(){0x0018ffff, 1, 0, 20},
|
||||
Package(){0x0018ffff, 2, 0, 21},
|
||||
Package(){0x0018ffff, 3, 0, 22},
|
||||
|
||||
/* Device 25, INTA - INTD */
|
||||
Package(){0x0019ffff, 0, 0, 23},
|
||||
Package(){0x0019ffff, 1, 0, 24},
|
||||
Package(){0x0019ffff, 2, 0, 25},
|
||||
Package(){0x0019ffff, 3, 0, 26},
|
||||
|
||||
/* Device 26, INTA - INTD */
|
||||
Package(){0x001affff, 0, 0, 27},
|
||||
Package(){0x001affff, 1, 0, 28},
|
||||
Package(){0x001affff, 2, 0, 29},
|
||||
Package(){0x001affff, 3, 0, 30},
|
||||
|
||||
/* Device 27, INTA - INTD */
|
||||
Package(){0x001bffff, 0, 0, 31},
|
||||
Package(){0x001bffff, 1, 0, 32},
|
||||
Package(){0x001bffff, 2, 0, 33},
|
||||
Package(){0x001bffff, 3, 0, 34},
|
||||
|
||||
/* Device 28, INTA - INTD */
|
||||
Package(){0x001cffff, 0, 0, 35},
|
||||
Package(){0x001cffff, 1, 0, 36},
|
||||
Package(){0x001cffff, 2, 0, 37},
|
||||
Package(){0x001cffff, 3, 0, 38},
|
||||
|
||||
/* Device 29, INTA - INTD */
|
||||
Package(){0x001dffff, 0, 0, 39},
|
||||
Package(){0x001dffff, 1, 0, 40},
|
||||
Package(){0x001dffff, 2, 0, 41},
|
||||
Package(){0x001dffff, 3, 0, 42},
|
||||
|
||||
/* Device 30, INTA - INTD */
|
||||
Package(){0x001effff, 0, 0, 43},
|
||||
Package(){0x001effff, 1, 0, 44},
|
||||
Package(){0x001effff, 2, 0, 45},
|
||||
Package(){0x001effff, 3, 0, 46},
|
||||
|
||||
/* Device 31, INTA - INTD */
|
||||
Package(){0x001fffff, 0, 0, 47},
|
||||
Package(){0x001fffff, 1, 0, 16},
|
||||
Package(){0x001fffff, 2, 0, 17},
|
||||
Package(){0x001fffff, 3, 0, 18},
|
||||
})
|
||||
|
||||
Device (ISA)
|
||||
{
|
||||
Name (_ADR, 0x00010000) /* device 1, fn 0 */
|
||||
|
||||
+7722
-7724
File diff suppressed because it is too large.
Load diff
@@ -65,7 +65,7 @@ static void slt_tree(unsigned int s, unsigned int e)
|
||||
|
||||
int main(void)
|
||||
{
|
||||
unsigned int slot;
|
||||
unsigned int slot, dev, intx, link;
|
||||
|
||||
/**** DSDT DefinitionBlock start ****/
|
||||
/* (we append to existing DSDT definition block) */
|
||||
@@ -75,6 +75,72 @@ int main(void)
|
||||
/**** PCI0 start ****/
|
||||
push_block("Scope", "\\_SB.PCI0");
|
||||
|
||||
/*** PCI-ISA link definitions ***/
|
||||
/* BUFA: List of ISA IRQs available for linking to PCI INTx. */
|
||||
stmt("Name", "BUFA, ResourceTemplate() { "
|
||||
"IRQ(Level, ActiveLow, Shared) { 5, 10, 11 } }");
|
||||
/* BUFB: IRQ descriptor for returning from link-device _CRS methods. */
|
||||
stmt("Name", "BUFB, Buffer() { "
|
||||
"0x23, 0x00, 0x00, 0x18, " /* IRQ descriptor */
|
||||
"0x79, 0 }"); /* End tag, null checksum */
|
||||
stmt("CreateWordField", "BUFB, 0x01, IRQV");
|
||||
/* Create four PCI-ISA link devices: LNKA, LNKB, LNKC, LNKD. */
|
||||
for ( link = 0; link < 4; link++ )
|
||||
{
|
||||
push_block("Device", "LNK%c", 'A'+link);
|
||||
stmt("Name", "_HID, EISAID(\"PNP0C0F\")"); /* PCI interrupt link */
|
||||
stmt("Name", "_UID, %u", link+1);
|
||||
push_block("Method", "_STA, 0");
|
||||
push_block("If", "And(PIR%c, 0x80)", 'A'+link);
|
||||
stmt("Return", "0x09");
|
||||
pop_block();
|
||||
push_block("Else", NULL);
|
||||
stmt("Return", "0x0B");
|
||||
pop_block();
|
||||
pop_block();
|
||||
push_block("Method", "_PRS");
|
||||
stmt("Return", "BUFA");
|
||||
pop_block();
|
||||
push_block("Method", "_DIS");
|
||||
stmt("Or", "PIR%c, 0x80, PIR%c", 'A'+link, 'A'+link);
|
||||
pop_block();
|
||||
push_block("Method", "_CRS");
|
||||
stmt("And", "PIR%c, 0x0f, Local0", 'A'+link);
|
||||
stmt("ShiftLeft", "0x1, Local0, IRQV");
|
||||
stmt("Return", "BUFB");
|
||||
pop_block();
|
||||
push_block("Method", "_SRS, 1");
|
||||
stmt("CreateWordField", "ARG0, 0x01, IRQ1");
|
||||
stmt("FindSetRightBit", "IRQ1, Local0");
|
||||
stmt("Decrement", "Local0");
|
||||
stmt("Store", "Local0, PIR%c", 'A'+link);
|
||||
pop_block();
|
||||
pop_block();
|
||||
}
|
||||
|
||||
/*** PCI interrupt routing definitions***/
|
||||
/* _PRT: Method to return routing table. */
|
||||
push_block("Method", "_PRT, 0");
|
||||
push_block("If", "PICD");
|
||||
stmt("Return", "PRTA");
|
||||
pop_block();
|
||||
stmt("Return", "PRTP");
|
||||
pop_block();
|
||||
/* PRTP: PIC routing table (via ISA links). */
|
||||
printf("Name(PRTP, Package() {\n");
|
||||
for ( dev = 1; dev < 32; dev++ )
|
||||
for ( intx = 0; intx < 4; intx++ ) /* INTA-D */
|
||||
printf("Package(){0x%04xffff, %u, \\_SB.PCI0.LNK%c, 0},\n",
|
||||
dev, intx, 'A'+((dev+intx)&3));
|
||||
printf("})\n");
|
||||
/* PRTA: APIC routing table (via non-legacy IOAPIC GSIs). */
|
||||
printf("Name(PRTA, Package() {\n");
|
||||
for ( dev = 1; dev < 32; dev++ )
|
||||
for ( intx = 0; intx < 4; intx++ ) /* INTA-D */
|
||||
printf("Package(){0x%04xffff, %u, 0, %u},\n",
|
||||
dev, intx, ((dev*4+dev/8+intx)&31)+16);
|
||||
printf("})\n");
|
||||
|
||||
/*
|
||||
* Each PCI hotplug slot needs at least two methods to handle
|
||||
* the ACPI event:
|
||||
|
||||