Stuff them parameterized into #defines, so we can (a) reuse them for q35 and (b) don't duplicate the serial line.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- src/acpi-dsdt-isa.dsl | 113 ++++++++++++++++++++++++++++++++ src/acpi-dsdt.dsl | 171 +++---------------------------------------------- 2 files changed, 122 insertions(+), 162 deletions(-) create mode 100644 src/acpi-dsdt-isa.dsl
diff --git a/src/acpi-dsdt-isa.dsl b/src/acpi-dsdt-isa.dsl new file mode 100644 index 0000000..ee8194d --- /dev/null +++ b/src/acpi-dsdt-isa.dsl @@ -0,0 +1,113 @@ +#define ISA_DEVICE_RTC(_name) \ + Device (_name) \ + { \ + Name (_HID, EisaId ("PNP0B00")) \ + Name (_CRS, ResourceTemplate () \ + { \ + IO (Decode16, 0x0070, 0x0070, 0x10, 0x02) \ + IRQNoFlags () {8} \ + IO (Decode16, 0x0072, 0x0072, 0x02, 0x06) \ + }) \ + } + +#define ISA_DEVICE_PS2_KBD(_name) \ + Device (KBD) \ + { \ + Name (_HID, EisaId ("PNP0303")) \ + Method (_STA, 0, NotSerialized) \ + { \ + Return (0x0f) \ + } \ + Name (_CRS, ResourceTemplate () \ + { \ + IO (Decode16, 0x0060, 0x0060, 0x01, 0x01) \ + IO (Decode16, 0x0064, 0x0064, 0x01, 0x01) \ + IRQNoFlags () { 1 } \ + }) \ + } + +#define ISA_DEVICE_PS2_MOUSE(_name) \ + Device (MOU) \ + { \ + Name (_HID, EisaId ("PNP0F13")) \ + Method (_STA, 0, NotSerialized) \ + { \ + Return (0x0f) \ + } \ + Name (_CRS, ResourceTemplate () \ + { \ + IRQNoFlags () {12} \ + }) \ + } + +#define ISA_DEVICE_FLOPPY(_name, _enable) \ + Device (_name) \ + { \ + Name (_HID, EisaId ("PNP0700")) \ + Method (_STA, 0, NotSerialized) \ + { \ + Store (_enable, Local0) \ + If (LEqual (Local0, 0)) \ + { \ + Return (0x00) \ + } \ + Else \ + { \ + Return (0x0F) \ + } \ + } \ + Name (_CRS, ResourceTemplate () \ + { \ + IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04) \ + IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01) \ + IRQNoFlags () {6} \ + DMA (Compatibility, NotBusMaster, Transfer8) {2} \ + }) \ + } + +#define ISA_DEVICE_PARALLEL(_name, _enable, _port, _irq) \ + Device (_name) \ + { \ + Name (_HID, EisaId ("PNP0400")) \ + Method (_STA, 0, NotSerialized) \ + { \ + Store (_enable, Local0) \ + If (LEqual (Local0, 0)) \ + { \ + Return (0x00) \ + } \ + Else \ + { \ + Return (0x0F) \ + } \ + } \ + Name (_CRS, ResourceTemplate () \ + { \ + IO (Decode16, _port, _port, 0x08, 0x08) \ + IRQNoFlags () { _irq } \ + }) \ + } + +#define ISA_DEVICE_SERIAL(_name, _enable, _port, _irq) \ + Device (_name) \ + { \ + Name (_HID, EisaId ("PNP0501")) \ + Name (_UID, 0x01) \ + Method (_STA, 0, NotSerialized) \ + { \ + Store (_enable, Local0) \ + If (LEqual (Local0, 0)) \ + { \ + Return (0x00) \ + } \ + Else \ + { \ + Return (0x0F) \ + } \ + } \ + Name (_CRS, ResourceTemplate () \ + { \ + IO (Decode16, _port, _port, 0x00, 0x08) \ + IRQNoFlags () { _irq } \ + }) \ + } diff --git a/src/acpi-dsdt.dsl b/src/acpi-dsdt.dsl index abc3d41..7e1f683 100644 --- a/src/acpi-dsdt.dsl +++ b/src/acpi-dsdt.dsl @@ -162,180 +162,27 @@ DefinitionBlock ( * SuperIO devices (kbd, mouse, etc.) ****************************************************************/
+#include "acpi-dsdt-isa.dsl" + Scope(_SB.PCI0.ISA) { /* Real-time clock */ - Device (RTC) - { - Name (_HID, EisaId ("PNP0B00")) - Name (_CRS, ResourceTemplate () - { - IO (Decode16, 0x0070, 0x0070, 0x10, 0x02) - IRQNoFlags () {8} - IO (Decode16, 0x0072, 0x0072, 0x02, 0x06) - }) - } + ISA_DEVICE_RTC(RTC)
/* Keyboard seems to be important for WinXP install */ - Device (KBD) - { - Name (_HID, EisaId ("PNP0303")) - Method (_STA, 0, NotSerialized) - { - Return (0x0f) - } - - Method (_CRS, 0, NotSerialized) - { - Name (TMP, ResourceTemplate () - { - IO (Decode16, - 0x0060, // Address Range Minimum - 0x0060, // Address Range Maximum - 0x01, // Address Alignment - 0x01, // Address Length - ) - IO (Decode16, - 0x0064, // Address Range Minimum - 0x0064, // Address Range Maximum - 0x01, // Address Alignment - 0x01, // Address Length - ) - IRQNoFlags () - {1} - }) - Return (TMP) - } - } + ISA_DEVICE_PS2_KBD(KBD)
/* PS/2 mouse */ - Device (MOU) - { - Name (_HID, EisaId ("PNP0F13")) - Method (_STA, 0, NotSerialized) - { - Return (0x0f) - } - - Method (_CRS, 0, NotSerialized) - { - Name (TMP, ResourceTemplate () - { - IRQNoFlags () {12} - }) - Return (TMP) - } - } + ISA_DEVICE_PS2_MOUSE(MOU)
/* PS/2 floppy controller */ - Device (FDC0) - { - Name (_HID, EisaId ("PNP0700")) - Method (_STA, 0, NotSerialized) - { - Store (_SB.PCI0.PX13.FDEN, Local0) - If (LEqual (Local0, 0)) - { - Return (0x00) - } - Else - { - Return (0x0F) - } - } - Method (_CRS, 0, NotSerialized) - { - Name (BUF0, ResourceTemplate () - { - IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04) - IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01) - IRQNoFlags () {6} - DMA (Compatibility, NotBusMaster, Transfer8) {2} - }) - Return (BUF0) - } - } + ISA_DEVICE_FLOPPY(FDC0, _SB.PCI0.PX13.FDEN)
/* Parallel port */ - Device (LPT) - { - Name (_HID, EisaId ("PNP0400")) - Method (_STA, 0, NotSerialized) - { - Store (_SB.PCI0.PX13.LPEN, Local0) - If (LEqual (Local0, 0)) - { - Return (0x00) - } - Else - { - Return (0x0F) - } - } - Method (_CRS, 0, NotSerialized) - { - Name (BUF0, ResourceTemplate () - { - IO (Decode16, 0x0378, 0x0378, 0x08, 0x08) - IRQNoFlags () {7} - }) - Return (BUF0) - } - } + ISA_DEVICE_PARALLEL(LPT, _SB.PCI0.PX13.LPEN, 0x0378, 7)
/* Serial Ports */ - Device (COM1) - { - Name (_HID, EisaId ("PNP0501")) - Name (_UID, 0x01) - Method (_STA, 0, NotSerialized) - { - Store (_SB.PCI0.PX13.CAEN, Local0) - If (LEqual (Local0, 0)) - { - Return (0x00) - } - Else - { - Return (0x0F) - } - } - Method (_CRS, 0, NotSerialized) - { - Name (BUF0, ResourceTemplate () - { - IO (Decode16, 0x03F8, 0x03F8, 0x00, 0x08) - IRQNoFlags () {4} - }) - Return (BUF0) - } - } - - Device (COM2) - { - Name (_HID, EisaId ("PNP0501")) - Name (_UID, 0x02) - Method (_STA, 0, NotSerialized) - { - Store (_SB.PCI0.LPC.CBEN, Local0) - If (LEqual (Local0, 0)) - { - Return (0x00) - } - Else - { - Return (0x0F) - } - } - Method (_CRS, 0, NotSerialized) - { - Name (BUF0, ResourceTemplate () - { - IO (Decode16, 0x02F8, 0x02F8, 0x00, 0x08) - IRQNoFlags () {3} - }) - Return (BUF0) - } - } + ISA_DEVICE_SERIAL(COM1, _SB.PCI0.PX13.CAEN, 0x03F8, 4) + ISA_DEVICE_SERIAL(COM2, _SB.PCI0.PX13.CBEN, 0x02F8, 3) }