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(a)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)
}
--
1.7.1