[SeaBIOS] [PATCH 18/20] acpi: move isa devices to separate file

Gerd Hoffmann kraxel at redhat.com
Tue Nov 27 10:21:09 CET 2012


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 at 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




More information about the SeaBIOS mailing list