Add support for USB mice.
[seabios.git] / src / acpi-dsdt.dsl
index 905d58bff95429180c4a7109da0505fd8096d69b..cc31112494cf5349c96d076aa30afc6d040cb258 100644 (file)
@@ -58,13 +58,98 @@ DefinitionBlock (
 #define prt_slot2(nr) prt_slot(nr, LNKB, LNKC, LNKD, LNKA)
 #define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
                prt_slot0(0x0000),
-               prt_slot1(0x0001),
+               /* Device 1 is power mgmt device, and can only use irq 9 */
+               Package() { 0x0001ffff, 0, 0, 9 },
+               Package() { 0x0001ffff, 1, LNKB, 0 },
+               Package() { 0x0001ffff, 2, LNKC, 0 },
+               Package() { 0x0001ffff, 3, LNKD, 0 },
                prt_slot2(0x0002),
                prt_slot3(0x0003),
                prt_slot0(0x0004),
                prt_slot1(0x0005),
+               prt_slot2(0x0006),
+               prt_slot3(0x0007),
+               prt_slot0(0x0008),
+               prt_slot1(0x0009),
+               prt_slot2(0x000a),
+               prt_slot3(0x000b),
+               prt_slot0(0x000c),
+               prt_slot1(0x000d),
+               prt_slot2(0x000e),
+               prt_slot3(0x000f),
+               prt_slot0(0x0010),
+               prt_slot1(0x0011),
+               prt_slot2(0x0012),
+               prt_slot3(0x0013),
+               prt_slot0(0x0014),
+               prt_slot1(0x0015),
+               prt_slot2(0x0016),
+               prt_slot3(0x0017),
+               prt_slot0(0x0018),
+               prt_slot1(0x0019),
+               prt_slot2(0x001a),
+               prt_slot3(0x001b),
+               prt_slot0(0x001c),
+               prt_slot1(0x001d),
+               prt_slot2(0x001e),
+               prt_slot3(0x001f),
             })
 
+            OperationRegion(PCST, SystemIO, 0xae00, 0x08)
+            Field (PCST, DWordAcc, NoLock, WriteAsZeros)
+            {
+                PCIU, 32,
+                PCID, 32,
+            }
+
+            OperationRegion(SEJ, SystemIO, 0xae08, 0x04)
+            Field (SEJ, DWordAcc, NoLock, WriteAsZeros)
+            {
+                B0EJ, 32,
+            }
+
+#define hotplug_slot(name, nr) \
+            Device (S##name) {                    \
+               Name (_ADR, nr##0000)              \
+               Method (_EJ0,1) {                  \
+                    Store(ShiftLeft(1, nr), B0EJ) \
+                    Return (0x0)                  \
+               }                                  \
+               Name (_SUN, name)                  \
+            }
+
+           hotplug_slot(1, 0x0001)
+           hotplug_slot(2, 0x0002)
+           hotplug_slot(3, 0x0003)
+           hotplug_slot(4, 0x0004)
+           hotplug_slot(5, 0x0005)
+           hotplug_slot(6, 0x0006)
+           hotplug_slot(7, 0x0007)
+           hotplug_slot(8, 0x0008)
+           hotplug_slot(9, 0x0009)
+           hotplug_slot(10, 0x000a)
+           hotplug_slot(11, 0x000b)
+           hotplug_slot(12, 0x000c)
+           hotplug_slot(13, 0x000d)
+           hotplug_slot(14, 0x000e)
+           hotplug_slot(15, 0x000f)
+           hotplug_slot(16, 0x0010)
+           hotplug_slot(17, 0x0011)
+           hotplug_slot(18, 0x0012)
+           hotplug_slot(19, 0x0013)
+           hotplug_slot(20, 0x0014)
+           hotplug_slot(21, 0x0015)
+           hotplug_slot(22, 0x0016)
+           hotplug_slot(23, 0x0017)
+           hotplug_slot(24, 0x0018)
+           hotplug_slot(25, 0x0019)
+           hotplug_slot(26, 0x001a)
+           hotplug_slot(27, 0x001b)
+           hotplug_slot(28, 0x001c)
+           hotplug_slot(29, 0x001d)
+           hotplug_slot(30, 0x001e)
+           hotplug_slot(31, 0x001f)
+
             Name (_CRS, ResourceTemplate ()
             {
                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
@@ -110,6 +195,25 @@ DefinitionBlock (
                     ,, , AddressRangeMemory, TypeStatic)
             })
         }
+
+        Device(HPET) {
+            Name(_HID,  EISAID("PNP0103"))
+            Name(_UID, 0)
+            Method (_STA, 0, NotSerialized) {
+                    Return(0x0F)
+            }
+            Name(_CRS, ResourceTemplate() {
+                DWordMemory(
+                    ResourceConsumer, PosDecode, MinFixed, MaxFixed,
+                    NonCacheable, ReadWrite,
+                    0x00000000,
+                    0xFED00000,
+                    0xFED003FF,
+                    0x00000000,
+                    0x00000400 /* 1K memory: FED00000 - FED003FF */
+                )
+            })
+        }
     }
 
     Scope(\_SB.PCI0) {
@@ -340,8 +444,8 @@ DefinitionBlock (
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 1)
                 Name(_PRS, ResourceTemplate(){
-                    IRQ (Level, ActiveHigh, Shared)
-                        { 5, 9, 10, 11 }
+                    Interrupt (, Level, ActiveHigh, Shared)
+                        { 5, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
                 {
@@ -360,14 +464,14 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        IRQ (Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveHigh, Shared)
                             {1}
                     })
-                    CreateWordField (PRR0, 0x01, TMP)
+                    CreateDWordField (PRR0, 0x05, TMP)
                     Store (PRQ0, Local0)
                     If (LLess (Local0, 0x80))
                     {
-                        ShiftLeft (One, Local0, TMP)
+                        Store (Local0, TMP)
                     }
                     Else
                     {
@@ -377,18 +481,16 @@ DefinitionBlock (
                 }
                 Method (_SRS, 1, NotSerialized)
                 {
-                    CreateWordField (Arg0, 0x01, TMP)
-                    FindSetRightBit (TMP, Local0)
-                    Decrement (Local0)
-                    Store (Local0, PRQ0)
+                    CreateDWordField (Arg0, 0x05, TMP)
+                    Store (TMP, PRQ0)
                 }
         }
         Device(LNKB){
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 2)
                 Name(_PRS, ResourceTemplate(){
-                    IRQ (Level, ActiveHigh, Shared)
-                        { 5, 9, 10, 11 }
+                    Interrupt (, Level, ActiveHigh, Shared)
+                        { 5, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
                 {
@@ -407,14 +509,14 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        IRQ (Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveHigh, Shared)
                             {1}
                     })
-                    CreateWordField (PRR0, 0x01, TMP)
+                    CreateDWordField (PRR0, 0x05, TMP)
                     Store (PRQ1, Local0)
                     If (LLess (Local0, 0x80))
                     {
-                        ShiftLeft (One, Local0, TMP)
+                        Store (Local0, TMP)
                     }
                     Else
                     {
@@ -424,18 +526,16 @@ DefinitionBlock (
                 }
                 Method (_SRS, 1, NotSerialized)
                 {
-                    CreateWordField (Arg0, 0x01, TMP)
-                    FindSetRightBit (TMP, Local0)
-                    Decrement (Local0)
-                    Store (Local0, PRQ1)
+                    CreateDWordField (Arg0, 0x05, TMP)
+                    Store (TMP, PRQ1)
                 }
         }
         Device(LNKC){
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 3)
                 Name(_PRS, ResourceTemplate(){
-                    IRQ (Level, ActiveHigh, Shared)
-                        { 5, 9, 10, 11 }
+                    Interrupt (, Level, ActiveHigh, Shared)
+                        { 5, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
                 {
@@ -454,14 +554,14 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        IRQ (Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveHigh, Shared)
                             {1}
                     })
-                    CreateWordField (PRR0, 0x01, TMP)
+                    CreateDWordField (PRR0, 0x05, TMP)
                     Store (PRQ2, Local0)
                     If (LLess (Local0, 0x80))
                     {
-                        ShiftLeft (One, Local0, TMP)
+                        Store (Local0, TMP)
                     }
                     Else
                     {
@@ -471,18 +571,16 @@ DefinitionBlock (
                 }
                 Method (_SRS, 1, NotSerialized)
                 {
-                    CreateWordField (Arg0, 0x01, TMP)
-                    FindSetRightBit (TMP, Local0)
-                    Decrement (Local0)
-                    Store (Local0, PRQ2)
+                    CreateDWordField (Arg0, 0x05, TMP)
+                    Store (TMP, PRQ2)
                 }
         }
         Device(LNKD){
                 Name(_HID, EISAID("PNP0C0F"))     // PCI interrupt link
                 Name(_UID, 4)
                 Name(_PRS, ResourceTemplate(){
-                    IRQ (Level, ActiveHigh, Shared)
-                        { 5, 9, 10, 11 }
+                    Interrupt (, Level, ActiveHigh, Shared)
+                        { 5, 10, 11 }
                 })
                 Method (_STA, 0, NotSerialized)
                 {
@@ -501,14 +599,14 @@ DefinitionBlock (
                 {
                     Name (PRR0, ResourceTemplate ()
                     {
-                        IRQ (Level, ActiveHigh, Shared)
+                        Interrupt (, Level, ActiveHigh, Shared)
                             {1}
                     })
-                    CreateWordField (PRR0, 0x01, TMP)
+                    CreateDWordField (PRR0, 0x05, TMP)
                     Store (PRQ3, Local0)
                     If (LLess (Local0, 0x80))
                     {
-                        ShiftLeft (One, Local0, TMP)
+                        Store (Local0, TMP)
                     }
                     Else
                     {
@@ -518,10 +616,8 @@ DefinitionBlock (
                 }
                 Method (_SRS, 1, NotSerialized)
                 {
-                    CreateWordField (Arg0, 0x01, TMP)
-                    FindSetRightBit (TMP, Local0)
-                    Decrement (Local0)
-                    Store (Local0, PRQ3)
+                    CreateDWordField (Arg0, 0x05, TMP)
+                    Store (TMP, PRQ3)
                 }
         }
     }
@@ -551,4 +647,101 @@ DefinitionBlock (
         Zero,  /* reserved */
         Zero   /* reserved */
     })
+
+    Scope (\_GPE)
+    {
+        Name(_HID, "ACPI0006")
+
+        Method(_L00) {
+            Return(0x01)
+        }
+
+#define gen_pci_hotplug(nr)                                       \
+            If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) {          \
+                Notify(\_SB.PCI0.S##nr, 1)                        \
+            }                                                     \
+            If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) {          \
+                Notify(\_SB.PCI0.S##nr, 3)                        \
+            }
+
+        Method(_L01) {
+            gen_pci_hotplug(1)
+            gen_pci_hotplug(2)
+            gen_pci_hotplug(3)
+            gen_pci_hotplug(4)
+            gen_pci_hotplug(5)
+            gen_pci_hotplug(6)
+            gen_pci_hotplug(7)
+            gen_pci_hotplug(8)
+            gen_pci_hotplug(9)
+            gen_pci_hotplug(10)
+            gen_pci_hotplug(11)
+            gen_pci_hotplug(12)
+            gen_pci_hotplug(13)
+            gen_pci_hotplug(14)
+            gen_pci_hotplug(15)
+            gen_pci_hotplug(16)
+            gen_pci_hotplug(17)
+            gen_pci_hotplug(18)
+            gen_pci_hotplug(19)
+            gen_pci_hotplug(20)
+            gen_pci_hotplug(21)
+            gen_pci_hotplug(22)
+            gen_pci_hotplug(23)
+            gen_pci_hotplug(24)
+            gen_pci_hotplug(25)
+            gen_pci_hotplug(26)
+            gen_pci_hotplug(27)
+            gen_pci_hotplug(28)
+            gen_pci_hotplug(29)
+            gen_pci_hotplug(30)
+            gen_pci_hotplug(31)
+
+            Return (0x01)
+
+        }
+        Method(_L02) {
+            Return(0x01)
+        }
+        Method(_L03) {
+            Return(0x01)
+        }
+        Method(_L04) {
+            Return(0x01)
+        }
+        Method(_L05) {
+            Return(0x01)
+        }
+        Method(_L06) {
+            Return(0x01)
+        }
+        Method(_L07) {
+            Return(0x01)
+        }
+        Method(_L08) {
+            Return(0x01)
+        }
+        Method(_L09) {
+            Return(0x01)
+        }
+        Method(_L0A) {
+            Return(0x01)
+        }
+        Method(_L0B) {
+            Return(0x01)
+        }
+        Method(_L0C) {
+            Return(0x01)
+        }
+        Method(_L0D) {
+            Return(0x01)
+        }
+        Method(_L0E) {
+            Return(0x01)
+        }
+        Method(_L0F) {
+            Return(0x01)
+        }
+    }
+
 }