Index: dsdt.dsl
===================================================================
--- dsdt.dsl	(revision 0)
+++ dsdt.dsl	(revision 0)
@@ -0,0 +1,5984 @@
+/*
+ * Intel ACPI Component Architecture
+ * AML Disassembler version 20061109
+ *
+ * Disassembly of DSDT.dat, Tue Mar  3 19:30:33 2009
+ *
+ *
+ * Original Table Header:
+ *     Signature        "DSDT"
+ *     Length           0x00004C8E (19598)
+ *     Revision         0x01
+ *     OEM ID           "GBT   "
+ *     OEM Table ID     "NVDAACPI"
+ *     OEM Revision     0x00001000 (4096)
+ *     Creator ID       "MSFT"
+ *     Creator Revision 0x0100000C (16777228)
+ */
+DefinitionBlock ("DSDT.aml", "DSDT", 1, "GBT   ", "NVDAACPI", 0x00001000)
+{
+    Scope (\_PR)
+    {
+        Processor (\_PR.C000, 0x00, 0x00000000, 0x00) {}
+        Processor (\_PR.C001, 0x01, 0x00000000, 0x00) {}
+        Processor (\_PR.C002, 0x02, 0x00000000, 0x00) {}
+        Processor (\_PR.C003, 0x03, 0x00000000, 0x00) {}
+    }
+
+    Name (\_S0, Package (0x04)
+    {
+        0x00, 
+        0x00, 
+        0x00, 
+        0x00
+    })
+    Name (\_S1, Package (0x04)
+    {
+        0x01, 
+        0x00, 
+        0x00, 
+        0x00
+    })
+    Name (\_S4, Package (0x04)
+    {
+        0x06, 
+        0x00, 
+        0x00, 
+        0x00
+    })
+    Name (\_S5, Package (0x04)
+    {
+        0x07, 
+        0x00, 
+        0x00, 
+        0x00
+    })
+    OperationRegion (\DEBG, SystemIO, 0x80, 0x01)
+    Field (\DEBG, ByteAcc, NoLock, Preserve)
+    {
+        DBG1,   8
+    }
+
+    OperationRegion (KBC, SystemIO, 0x64, 0x01)
+    Field (KBC, ByteAcc, NoLock, Preserve)
+    {
+        KCMD,   8
+    }
+
+    OperationRegion (KBCD, SystemIO, 0x60, 0x01)
+    Field (KBCD, ByteAcc, NoLock, Preserve)
+    {
+        KDAT,   8
+    }
+
+    OperationRegion (AWYM, SystemMemory, 0x000FFFEA, 0x01)
+    Field (AWYM, ByteAcc, NoLock, Preserve)
+    {
+            ,   1, 
+            ,   1, 
+        AWYE,   1, 
+            ,   1, 
+            ,   1, 
+            ,   1, 
+            ,   1, 
+                Offset (0x01)
+    }
+
+    OperationRegion (EXTM, SystemMemory, 0x000FF830, 0x10)
+    Field (EXTM, WordAcc, NoLock, Preserve)
+    {
+        ROM1,   16, 
+        RMS1,   16, 
+        ROM2,   16, 
+        RMS2,   16, 
+        ROM3,   16, 
+        RMS3,   16, 
+        AMEM,   32
+    }
+
+    OperationRegion (\PM1S, SystemIO, 0x1000, 0x02)
+    Field (\PM1S, ByteAcc, NoLock, Preserve)
+    {
+                Offset (0x01), 
+        PBTS,   1, 
+            ,   1, 
+        RTCS,   1, 
+            ,   3, 
+        PEWS,   1, 
+        WAKS,   1
+    }
+
+    OperationRegion (\PM1E, SystemIO, 0x1002, 0x02)
+    Field (\PM1E, ByteAcc, NoLock, Preserve)
+    {
+            ,   14, 
+        PEWK,   1, 
+                Offset (0x02)
+    }
+
+    OperationRegion (\APA4, SystemIO, 0x10A4, 0x04)
+    Field (\APA4, ByteAcc, NoLock, Preserve)
+    {
+                Offset (0x02), 
+        LCTM,   1, 
+        LCNM,   1
+    }
+
+    OperationRegion (ELCR, SystemIO, 0x04D0, 0x02)
+    Field (ELCR, ByteAcc, NoLock, Preserve)
+    {
+        ELC1,   8, 
+        ELC2,   8
+    }
+
+    OperationRegion (\STUS, SystemIO, 0x1400, 0x04)
+    Field (\STUS, ByteAcc, NoLock, Preserve)
+    {
+        G_ST,   32
+    }
+
+    OperationRegion (\GPS0, SystemIO, 0x1020, 0x04)
+    Field (\GPS0, ByteAcc, NoLock, Preserve)
+    {
+        GS00,   8, 
+        GS01,   8, 
+        GS02,   8, 
+        GS03,   8
+    }
+
+    OperationRegion (\SMIC, SystemIO, 0x142E, 0x01)
+    Field (\SMIC, ByteAcc, NoLock, Preserve)
+    {
+        SCP,    8
+    }
+
+    OperationRegion (\GP1, SystemIO, 0x14C0, 0x32)
+    Field (\GP1, ByteAcc, NoLock, Preserve)
+    {
+        GP00,   8, 
+        GP01,   8, 
+        GP02,   8, 
+        GP03,   8, 
+        GP04,   8, 
+        GP05,   8, 
+        GP06,   8, 
+        GP07,   8, 
+        GP08,   8, 
+        GP09,   8, 
+        GP10,   8, 
+        GP11,   8, 
+        GP12,   8, 
+        GP13,   8, 
+        GP14,   8, 
+        GP15,   8, 
+        GP16,   8, 
+        GP17,   8, 
+        GP18,   8, 
+        GP19,   8, 
+        GP20,   8, 
+        GP21,   8, 
+        GP22,   8, 
+                Offset (0x18), 
+        GP24,   8, 
+        GP25,   8, 
+        GP26,   8, 
+        GP27,   8, 
+        GP28,   8, 
+        GP29,   8, 
+        GP30,   8, 
+        GP31,   8, 
+        GP32,   8, 
+        GP33,   8, 
+        GP34,   8, 
+        GP35,   8, 
+        GP36,   8, 
+        GP37,   8, 
+        GP38,   8, 
+        GP39,   8, 
+        GT40,   8, 
+        GP41,   8, 
+        GP42,   8, 
+        GP43,   8, 
+        GP44,   8, 
+        GP45,   8, 
+        GP46,   8, 
+        GP47,   8, 
+        GP48,   8, 
+        GP49,   8
+    }
+
+    Name (OSFX, 0x01)
+    Name (OSFL, 0x01)
+    Method (STRC, 2, NotSerialized)
+    {
+        If (LNotEqual (SizeOf (Arg0), SizeOf (Arg1)))
+        {
+            Return (0x00)
+        }
+
+        Add (SizeOf (Arg0), 0x01, Local0)
+        Name (BUF0, Buffer (Local0) {})
+        Name (BUF1, Buffer (Local0) {})
+        Store (Arg0, BUF0)
+        Store (Arg1, BUF1)
+        While (Local0)
+        {
+            Decrement (Local0)
+            If (LNotEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (
+                BUF1, Local0))))
+            {
+                Return (Zero)
+            }
+        }
+
+        Return (One)
+    }
+
+    OperationRegion (INFO, SystemMemory, 0x000FF840, 0x02)
+    Field (INFO, ByteAcc, NoLock, Preserve)
+    {
+        KBDI,   1, 
+        RTCW,   1, 
+        PS2F,   1, 
+        IRFL,   2, 
+        DISE,   1, 
+        SSHU,   1
+    }
+
+    Scope (\)
+    {
+        Name (PICF, 0x00)
+        Method (_PIC, 1, NotSerialized)
+        {
+            Store (Arg0, PICF)
+        }
+    }
+
+    Name (SID4, 0x00)
+    Name (SLG0, 0x00)
+    Name (SLG1, 0x00)
+    Name (SLG2, 0x00)
+    Name (SLG3, 0x00)
+    Name (SLG4, 0x00)
+    Name (SLG5, 0x00)
+    Name (SLG6, 0x00)
+    Name (SLG7, 0x00)
+    Name (SLG8, 0x00)
+    Name (SLG9, 0x00)
+    Name (SLGA, 0x00)
+    Name (SID5, 0x00)
+    Name (SSM0, 0x00)
+    Name (SSM1, 0x00)
+    Name (SSM2, 0x00)
+    Name (SSM3, 0x00)
+    Name (SSM4, 0x00)
+    Name (SUA0, 0x00)
+    Name (SUB0, 0x00)
+    Name (SX, 0x00)
+    Name (SFLG, 0x00)
+    Name (SID0, 0x00)
+    Name (SID1, 0x00)
+    Name (SID2, 0x00)
+    Name (SID3, 0x00)
+    Method (\_PTS, 1, NotSerialized)
+    {
+        Store (Arg0, Local0)
+        Store (Local0, SX)
+        Or (Arg0, 0xF0, Local0)
+        Store (Local0, DBG1)
+        OSTP ()
+        Store (\_SB.PCI0.IDE0.ID20, SID0)
+        Store (\_SB.PCI0.IDE0.IDTS, SID1)
+        Store (\_SB.PCI0.IDE0.IDTP, SID2)
+        Store (\_SB.PCI0.IDE0.ID22, SID3)
+        Store (\_SB.PCI0.IDE0.UMSS, SID4)
+        Store (\_SB.PCI0.IDE0.UMSP, SID5)
+        If (LEqual (Arg0, 0x01)) {}
+        If (LEqual (Arg0, 0x03))
+        {
+            Store (0x00, LCTM)
+            Store (0x00, LCNM)
+        }
+
+        If (LEqual (Arg0, 0x04)) {}
+        If (LEqual (Arg0, 0x05))
+        {
+            If (LNotEqual (OSFL, 0x00))
+            {
+                Sleep (0x01F4)
+            }
+        }
+    }
+
+    Method (\_WAK, 1, NotSerialized)
+    {
+        Store (0xFF, DBG1)
+        Store (0x00, SFLG)
+        If (LEqual (RTCW, 0x00))
+        {
+            Notify (\_SB.PWRB, 0x02)
+        }
+
+        Notify (\_SB.PCI0.USB0, 0x00)
+        If (LGreaterEqual (OSFL, 0x01))
+        {
+            Store (0x00, \_SB.PCI0.SMB0.SMPM)
+        }
+    }
+
+    Scope (\_SI)
+    {
+        Method (_MSG, 1, NotSerialized)
+        {
+            Store ("==== MSG Working ====", Debug)
+        }
+
+        Method (_SST, 1, NotSerialized)
+        {
+            Store ("==== SST Working ====", Debug)
+        }
+    }
+
+    Scope (\_GPE)
+    {
+        Method (_L11, 0, NotSerialized)
+        {
+            Store (0x02, GS02)
+            If (LNotEqual (PEV0, 0xFFFF))
+            {
+                If (PES0)
+                {
+                    While (PES0)
+                    {
+                        Store (0x01, PES0)
+                    }
+
+                    Notify (\_SB.PCI0.XVR0, 0x02)
+                }
+            }
+
+            If (LNotEqual (PEV1, 0xFFFF))
+            {
+                If (PES1)
+                {
+                    While (PES1)
+                    {
+                        Store (0x01, PES1)
+                    }
+
+                    Notify (\_SB.PCI0.XVR1, 0x02)
+                }
+            }
+
+            If (LNotEqual (PEV2, 0xFFFF))
+            {
+                If (PES2)
+                {
+                    While (PES2)
+                    {
+                        Store (0x01, PES2)
+                    }
+
+                    Notify (\_SB.PCI0.XVR2, 0x02)
+                }
+            }
+
+            If (LNotEqual (PEV3, 0xFFFF))
+            {
+                If (PES3)
+                {
+                    While (PES3)
+                    {
+                        Store (0x01, PES3)
+                    }
+
+                    Notify (\_SB.PCI0.XVR3, 0x02)
+                }
+            }
+
+            If (LNotEqual (PEV4, 0xFFFF))
+            {
+                If (PES4)
+                {
+                    While (PES4)
+                    {
+                        Store (0x01, PES4)
+                    }
+
+                    Notify (\_SB.PCI0.XVR4, 0x02)
+                }
+            }
+
+            If (LNotEqual (PEV5, 0xFFFF))
+            {
+                If (PES5)
+                {
+                    While (PES5)
+                    {
+                        Store (0x01, PES5)
+                    }
+
+                    Notify (\_SB.PCI0.XVR5, 0x02)
+                }
+            }
+        }
+
+        Method (_L00, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.HUB0, 0x02)
+        }
+
+        Method (_L03, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.UAR1, 0x02)
+        }
+
+        Method (_L0B, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.MMAC, 0x02)
+        }
+
+        Method (_L0D, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.USB0, 0x02)
+        }
+
+        Method (_L05, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.USB2, 0x02)
+        }
+
+        Method (_L15, 0, NotSerialized)
+        {
+            Notify (\_SB.PCI0.AZAD, 0x02)
+        }
+    }
+
+    Scope (\_SB)
+    {
+        Device (\AWY)
+        {
+            Name (_HID, "AWY0001")
+            Method (_STA, 0, NotSerialized)
+            {
+                If (AWYE)
+                {
+                    Return (0x0F)
+                }
+
+                Return (0x00)
+            }
+
+            Method (SMOD, 1, NotSerialized)
+            {
+            }
+        }
+
+        Device (PWRB)
+        {
+            Name (_HID, EisaId ("PNP0C0C"))
+            Method (_STA, 0, NotSerialized)
+            {
+                Return (0x0B)
+            }
+        }
+
+        Device (PCI0)
+        {
+            Name (_HID, EisaId ("PNP0A08"))
+            Name (_CID, 0x030AD041)
+            Name (_ADR, 0x00)
+            Name (_UID, 0x01)
+            Name (_BBN, 0x00)
+            Name (PCIA, 0x00)
+            Method (_REG, 2, NotSerialized)
+            {
+                If (LEqual (Arg0, 0x02))
+                {
+                    Store (Arg1, PCIA)
+                }
+            }
+
+            OperationRegion (BRCR, PCI_Config, 0xEC, 0x04)
+            Scope (\)
+            {
+                Field (\_SB.PCI0.BRCR, ByteAcc, NoLock, Preserve)
+                {
+                    GPUB,   32
+                }
+            }
+
+            Device (MBIO)
+            {
+                Name (_HID, EisaId ("PNP0C02"))
+                Name (_UID, 0x05)
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF0, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x1000,             // Range Minimum
+                            0x1000,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        IO (Decode16,
+                            0x1080,             // Range Minimum
+                            0x1080,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        IO (Decode16,
+                            0x1400,             // Range Minimum
+                            0x1400,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        IO (Decode16,
+                            0x1480,             // Range Minimum
+                            0x1480,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        IO (Decode16,
+                            0x1800,             // Range Minimum
+                            0x1800,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        IO (Decode16,
+                            0x1880,             // Range Minimum
+                            0x1880,             // Range Maximum
+                            0x01,               // Alignment
+                            0x80,               // Length
+                            )
+                        Memory32Fixed (ReadWrite,
+                            0xA0000000,         // Address Base
+                            0x00000000,         // Address Length
+                            _Y00)
+                    })
+                    CreateDWordField (BUF0, \_SB.PCI0.MBIO._CRS._Y00._BAS, BRAB)
+                    CreateDWordField (BUF0, \_SB.PCI0.MBIO._CRS._Y00._LEN, BRAL)
+                    Store (GPUB, Local0)
+                    And (Local0, 0xFFFF0000, Local0)
+                    ShiftLeft (Local0, 0x08, Local0)
+                    If (Local0)
+                    {
+                        Store (Local0, BRAB)
+                        Store (0x10000000, BRAL)
+                    }
+
+                    Return (BUF0)
+                }
+            }
+
+            Name (NATA, Package (0x01)
+            {
+                0x00040000
+            })
+            Method (SS3D, 0, NotSerialized)
+            {
+                If (LEqual (OSFL, 0x02))
+                {
+                    Return (0x02)
+                }
+                Else
+                {
+                    Return (0x03)
+                }
+            }
+
+            Method (_STA, 0, NotSerialized)
+            {
+                Return (0x0F)
+            }
+
+            OperationRegion (LDT3, PCI_Config, 0x6C, 0x04)
+            Field (LDT3, DWordAcc, NoLock, Preserve)
+            {
+                UCFG,   32
+            }
+
+            Method (_CRS, 0, NotSerialized)
+            {
+                Name (BUF0, ResourceTemplate ()
+                {
+                    WordBusNumber (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode,
+                        0x0000,             // Granularity
+                        0x0000,             // Range Minimum
+                        0x00FF,             // Range Maximum
+                        0x0000,             // Translation Offset
+                        0x0100,             // Length
+                        ,, )
+                    IO (Decode16,
+                        0x0CF8,             // Range Minimum
+                        0x0CF8,             // Range Maximum
+                        0x01,               // Alignment
+                        0x08,               // Length
+                        )
+                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
+                        0x0000,             // Granularity
+                        0x0000,             // Range Minimum
+                        0x0CF7,             // Range Maximum
+                        0x0000,             // Translation Offset
+                        0x0CF8,             // Length
+                        ,, , TypeStatic)
+                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
+                        0x0000,             // Granularity
+                        0x0D00,             // Range Minimum
+                        0xFFFF,             // Range Maximum
+                        0x0000,             // Translation Offset
+                        0xF300,             // Length
+                        ,, , TypeStatic)
+                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
+                        0x00000000,         // Granularity
+                        0x000A0000,         // Range Minimum
+                        0x000BFFFF,         // Range Maximum
+                        0x00000000,         // Translation Offset
+                        0x00020000,         // Length
+                        ,, , AddressRangeMemory, TypeStatic)
+                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
+                        0x00000000,         // Granularity
+                        0x000C0000,         // Range Minimum
+                        0x000DFFFF,         // Range Maximum
+                        0x00000000,         // Translation Offset
+                        0x00020000,         // Length
+                        ,, , AddressRangeMemory, TypeStatic)
+                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
+                        0x00000000,         // Granularity
+                        0x00100000,         // Range Minimum
+                        0xFEBFFFFF,         // Range Maximum
+                        0x00000000,         // Translation Offset
+                        0xFFF00000,         // Length
+                        ,, _Y01, AddressRangeMemory, TypeStatic)
+                })
+                CreateDWordField (BUF0, \_SB.PCI0._CRS._Y01._MIN, TCMM)
+                CreateDWordField (BUF0, \_SB.PCI0._CRS._Y01._LEN, TOMM)
+                Add (AMEM, 0x00010000, TCMM)
+                Subtract (0xFEC00000, TCMM, TOMM)
+                Return (BUF0)
+            }
+
+            Name (PICM, Package (0x23)
+            {
+                Package (0x04)
+                {
+                    0x0001FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LSMB, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0001FFFF, 
+                    0x01, 
+                    \_SB.PCI0.LPMU, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0002FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LUBA, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0002FFFF, 
+                    0x01, 
+                    \_SB.PCI0.LUB2, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0008FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LMAC, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0006FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LP2P, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0006FFFF, 
+                    0x01, 
+                    \_SB.PCI0.LAZA, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0004FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LIDE, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x00, 
+                    \_SB.PCI0.LSID, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x01, 
+                    \_SB.PCI0.LFID, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x02, 
+                    \_SB.PCI0.LSA2, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x00, 
+                    \_SB.PCI0.LNK7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x01, 
+                    \_SB.PCI0.LNK8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x02, 
+                    \_SB.PCI0.LNK5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x03, 
+                    \_SB.PCI0.LNK6, 
+                    0x00
+                }
+            })
+            Name (APIC, Package (0x23)
+            {
+                Package (0x04)
+                {
+                    0x0001FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APCS, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0001FFFF, 
+                    0x01, 
+                    \_SB.PCI0.APMU, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0002FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APCF, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0002FFFF, 
+                    0x01, 
+                    \_SB.PCI0.APCL, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0008FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APCH, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0006FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APCM, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0006FFFF, 
+                    0x01, 
+                    \_SB.PCI0.AAZA, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0004FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APCZ, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x00, 
+                    \_SB.PCI0.APSI, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x01, 
+                    \_SB.PCI0.APSJ, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x0005FFFF, 
+                    0x02, 
+                    \_SB.PCI0.ASA2, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000FFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000EFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000DFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000CFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000BFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x00, 
+                    \_SB.PCI0.APC7, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x01, 
+                    \_SB.PCI0.APC8, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x02, 
+                    \_SB.PCI0.APC5, 
+                    0x00
+                }, 
+
+                Package (0x04)
+                {
+                    0x000AFFFF, 
+                    0x03, 
+                    \_SB.PCI0.APC6, 
+                    0x00
+                }
+            })
+            Method (_PRT, 0, NotSerialized)
+            {
+                If (LNot (PICF))
+                {
+                    Return (PICM)
+                }
+                Else
+                {
+                    Return (APIC)
+                }
+            }
+
+            Device (HUB0)
+            {
+                Name (_ADR, 0x00060000)
+                Method (_STA, 0, NotSerialized)
+                {
+                    Return (0x0F)
+                }
+
+                Name (PICM, Package (0x14)
+                {
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x00, 
+                        \_SB.PCI0.LNK3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x01, 
+                        \_SB.PCI0.LNK4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x02, 
+                        \_SB.PCI0.LNK1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x03, 
+                        \_SB.PCI0.LNK2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x00, 
+                        \_SB.PCI0.LNK4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x01, 
+                        \_SB.PCI0.LNK1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x02, 
+                        \_SB.PCI0.LNK2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x03, 
+                        \_SB.PCI0.LNK3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x00, 
+                        \_SB.PCI0.LNK1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x01, 
+                        \_SB.PCI0.LNK2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x02, 
+                        \_SB.PCI0.LNK3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x03, 
+                        \_SB.PCI0.LNK4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x00, 
+                        \_SB.PCI0.LNK2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x01, 
+                        \_SB.PCI0.LNK3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x02, 
+                        \_SB.PCI0.LNK4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x03, 
+                        \_SB.PCI0.LNK1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x00, 
+                        \_SB.PCI0.LNK3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x01, 
+                        \_SB.PCI0.LNK4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x02, 
+                        \_SB.PCI0.LNK1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x03, 
+                        \_SB.PCI0.LNK2, 
+                        0x00
+                    }
+                })
+                Name (APIC, Package (0x14)
+                {
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x00, 
+                        \_SB.PCI0.APC3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x01, 
+                        \_SB.PCI0.APC4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x02, 
+                        \_SB.PCI0.APC1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0006FFFF, 
+                        0x03, 
+                        \_SB.PCI0.APC2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x00, 
+                        \_SB.PCI0.APC4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x01, 
+                        \_SB.PCI0.APC1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x02, 
+                        \_SB.PCI0.APC2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0007FFFF, 
+                        0x03, 
+                        \_SB.PCI0.APC3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x00, 
+                        \_SB.PCI0.APC1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x01, 
+                        \_SB.PCI0.APC2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x02, 
+                        \_SB.PCI0.APC3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0008FFFF, 
+                        0x03, 
+                        \_SB.PCI0.APC4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x00, 
+                        \_SB.PCI0.APC2, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x01, 
+                        \_SB.PCI0.APC3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x02, 
+                        \_SB.PCI0.APC4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x0009FFFF, 
+                        0x03, 
+                        \_SB.PCI0.APC1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x00, 
+                        \_SB.PCI0.APC3, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x01, 
+                        \_SB.PCI0.APC4, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x02, 
+                        \_SB.PCI0.APC1, 
+                        0x00
+                    }, 
+
+                    Package (0x04)
+                    {
+                        0x000AFFFF, 
+                        0x03, 
+                        \_SB.PCI0.APC2, 
+                        0x00
+                    }
+                })
+                Method (_PRT, 0, NotSerialized)
+                {
+                    If (LNot (PICF))
+                    {
+                        Return (PICM)
+                    }
+                    Else
+                    {
+                        Return (APIC)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x00, 
+                    0x05
+                })
+            }
+
+            Device (SAT1)
+            {
+                Name (_ADR, 0x00050000)
+                Device (PRI0)
+                {
+                    Name (_ADR, 0x00)
+                    Name (SPTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SPTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SPTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (0x90, SMIP)
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Device (SEC0)
+                {
+                    Name (_ADR, 0x01)
+                    Name (SSTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SSTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SSTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (0x90, SMIP)
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Method (DRMP, 0, NotSerialized)
+                {
+                    Return (\_SB.PCI0.NVRB.R_S0)
+                }
+            }
+
+            Device (SAT2)
+            {
+                Name (_ADR, 0x00050001)
+                Device (PRI0)
+                {
+                    Name (_ADR, 0x00)
+                    Name (SPTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SPTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SPTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (0x90, SMIP)
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Device (SEC0)
+                {
+                    Name (_ADR, 0x01)
+                    Name (SSTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SSTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SSTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (0x90, SMIP)
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Method (DRMP, 0, NotSerialized)
+                {
+                    Return (\_SB.PCI0.NVRB.R_S1)
+                }
+            }
+
+            Device (SAT3)
+            {
+                Name (_ADR, 0x00050002)
+                Device (PRI0)
+                {
+                    Name (_ADR, 0x00)
+                    Name (SPTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SPTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SPTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Device (SEC0)
+                {
+                    Name (_ADR, 0x01)
+                    Name (SSTM, Buffer (0x14)
+                    {
+                        /* 0000 */    0x78, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
+                        /* 0008 */    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 
+                        /* 0010 */    0x13, 0x00, 0x00, 0x00
+                    })
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (SSTM)
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        Store (Arg0, SSTM)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Store (Buffer (0x07)
+                                {
+                                    0x03, 0x46, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                                }, Local0)
+                            Return (Local0)
+                        }
+                    }
+                }
+
+                Method (DRMP, 0, NotSerialized)
+                {
+                    Return (\_SB.PCI0.NVRB.R_S2)
+                }
+            }
+
+            Device (IDE0)
+            {
+                Name (_ADR, 0x00040000)
+                OperationRegion (A090, PCI_Config, 0x50, 0x18)
+                Field (A090, DWordAcc, NoLock, Preserve)
+                {
+                    ID20,   16, 
+                            Offset (0x08), 
+                    IDTS,   16, 
+                    IDTP,   16, 
+                    ID22,   32, 
+                    UMSS,   16, 
+                    UMSP,   16
+                }
+
+                Name (IDEP, Buffer (0x14) {})
+                Name (IDES, Buffer (0x14) {})
+                Method (GTM, 1, NotSerialized)
+                {
+                    If (LEqual (Arg0, 0x00))
+                    {
+                        Store (IDTP, Local0)
+                        Store (UMSP, Local1)
+                        Store (IDEP, Local2)
+                    }
+                    Else
+                    {
+                        Store (IDTS, Local0)
+                        Store (UMSS, Local1)
+                        Store (IDES, Local2)
+                    }
+
+                    CreateDWordField (Local2, 0x00, PIO0)
+                    CreateDWordField (Local2, 0x04, DMA0)
+                    CreateDWordField (Local2, 0x08, PIO1)
+                    CreateDWordField (Local2, 0x0C, DMA1)
+                    CreateDWordField (Local2, 0x10, FLAG)
+                    Store (0x10, FLAG)
+                    And (Local0, 0x0F00, Local3)
+                    And (Local0, 0xF000, Local4)
+                    ShiftRight (Local3, 0x08, Local3)
+                    ShiftRight (Local4, 0x0C, Local4)
+                    Add (Local3, Local4, Local3)
+                    Multiply (Add (Local3, 0x02), 0x1E, PIO0)
+                    If (LLessEqual (PIO0, 0xB4))
+                    {
+                        Or (FLAG, 0x02, FLAG)
+                    }
+
+                    If (And (Local1, 0x4000))
+                    {
+                        Or (FLAG, 0x01, FLAG)
+                        And (Local1, 0x0700, Local3)
+                        ShiftRight (Local3, 0x08, Local3)
+                        Store (U2T (Local3), DMA0)
+                    }
+                    Else
+                    {
+                        Store (PIO0, DMA0)
+                    }
+
+                    And (Local0, 0x0F, Local3)
+                    And (Local0, 0xF0, Local4)
+                    ShiftRight (Local4, 0x04, Local4)
+                    Add (Local3, Local4, Local3)
+                    Multiply (Add (Local3, 0x02), 0x1E, PIO1)
+                    If (LLessEqual (PIO1, 0xB4))
+                    {
+                        Or (FLAG, 0x08, FLAG)
+                    }
+
+                    If (And (Local1, 0x40))
+                    {
+                        Or (FLAG, 0x04, FLAG)
+                        And (Local1, 0x07, Local3)
+                        Store (U2T (Local3), DMA1)
+                    }
+                    Else
+                    {
+                        Store (PIO1, DMA1)
+                    }
+
+                    If (LEqual (Arg0, 0x00))
+                    {
+                        Store (Local2, IDEP)
+                        Return (IDEP)
+                    }
+                    Else
+                    {
+                        Store (Local2, IDES)
+                        Return (IDES)
+                    }
+                }
+
+                Method (U2T, 1, NotSerialized)
+                {
+                    If (LEqual (Arg0, 0x00))
+                    {
+                        Return (0x3C)
+                    }
+
+                    If (LEqual (Arg0, 0x01))
+                    {
+                        Return (0x49)
+                    }
+
+                    If (LEqual (Arg0, 0x02))
+                    {
+                        Return (0x78)
+                    }
+
+                    If (LEqual (Arg0, 0x03))
+                    {
+                        Return (0x96)
+                    }
+
+                    If (LEqual (Arg0, 0x04))
+                    {
+                        Return (0x2D)
+                    }
+
+                    If (LEqual (Arg0, 0x05))
+                    {
+                        Return (0x1E)
+                    }
+
+                    If (LEqual (Arg0, 0x06))
+                    {
+                        Return (0x14)
+                    }
+
+                    Return (0x0F)
+                }
+
+                Method (T2U, 1, NotSerialized)
+                {
+                    If (LGreater (Arg0, 0x78))
+                    {
+                        Return (0x03)
+                    }
+
+                    If (LGreater (Arg0, 0x49))
+                    {
+                        Return (0x02)
+                    }
+
+                    If (LGreater (Arg0, 0x3C))
+                    {
+                        Return (0x01)
+                    }
+
+                    If (LGreater (Arg0, 0x2D))
+                    {
+                        Return (0x00)
+                    }
+
+                    If (LGreater (Arg0, 0x1E))
+                    {
+                        Return (0x04)
+                    }
+
+                    If (LGreater (Arg0, 0x14))
+                    {
+                        Return (0x05)
+                    }
+
+                    If (LGreater (Arg0, 0x0F))
+                    {
+                        Return (0x06)
+                    }
+
+                    Return (0x07)
+                }
+
+                Method (T2D, 1, NotSerialized)
+                {
+                    If (LGreater (Arg0, 0x01E0))
+                    {
+                        Return (0xA8)
+                    }
+
+                    If (LGreater (Arg0, 0x0186))
+                    {
+                        Return (0x77)
+                    }
+
+                    If (LGreater (Arg0, 0xF0))
+                    {
+                        Return (0x47)
+                    }
+
+                    If (LGreater (Arg0, 0xB4))
+                    {
+                        Return (0x33)
+                    }
+
+                    If (LGreater (Arg0, 0x96))
+                    {
+                        Return (0x22)
+                    }
+
+                    If (LGreater (Arg0, 0x78))
+                    {
+                        Return (0x21)
+                    }
+
+                    Return (0x20)
+                }
+
+                Method (STM, 4, NotSerialized)
+                {
+                    If (SX)
+                    {
+                        Store (SID0, ID20)
+                        Store (SID1, IDTS)
+                        Store (SID2, IDTP)
+                        Store (SID3, ID22)
+                        Store (SID4, UMSS)
+                        Store (SID5, UMSP)
+                    }
+                    Else
+                    {
+                        Store (ID20, SID0)
+                        Store (IDTS, SID1)
+                        Store (IDTP, SID2)
+                        Store (ID22, SID3)
+                        Store (UMSS, SID4)
+                        Store (UMSP, SID5)
+                    }
+
+                    Store (0x00, SX)
+                    CreateDWordField (Arg0, 0x00, PIO0)
+                    CreateDWordField (Arg0, 0x04, DMA0)
+                    CreateDWordField (Arg0, 0x08, PIO1)
+                    CreateDWordField (Arg0, 0x0C, DMA1)
+                    CreateDWordField (Arg0, 0x10, FLAG)
+                    If (LEqual (Arg3, 0x00))
+                    {
+                        Store (SID2, Local0)
+                        Store (SID5, Local1)
+                    }
+                    Else
+                    {
+                        Store (SID1, Local0)
+                        Store (SID4, Local1)
+                    }
+
+                    If (LNotEqual (PIO0, 0xFFFFFFFF))
+                    {
+                        And (Local0, 0xFF, Local0)
+                        ShiftLeft (T2D (PIO0), 0x08, Local2)
+                        Or (Local0, Local2, Local0)
+                    }
+
+                    If (LNotEqual (PIO1, 0xFFFFFFFF))
+                    {
+                        And (Local0, 0xFF00, Local0)
+                        Or (Local0, T2D (PIO1), Local0)
+                    }
+
+                    If (And (FLAG, 0x01))
+                    {
+                        And (Local1, 0xFF, Local1)
+                        ShiftLeft (T2U (DMA0), 0x08, Local2)
+                        Or (0xC000, Local2, Local2)
+                        Or (Local2, Local1, Local1)
+                    }
+                    Else
+                    {
+                        If (LNotEqual (DMA0, 0xFFFFFFFF))
+                        {
+                            And (Local0, 0xFF, Local0)
+                            ShiftLeft (T2D (DMA0), 0x08, Local2)
+                            Or (Local0, Local2, Local0)
+                        }
+                    }
+
+                    If (And (FLAG, 0x04))
+                    {
+                        And (Local1, 0xFF00, Local1)
+                        Or (0xC0, T2U (DMA1), Local2)
+                        Or (Local2, Local1, Local1)
+                    }
+                    Else
+                    {
+                        If (LNotEqual (DMA1, 0xFFFFFFFF))
+                        {
+                            And (Local0, 0xFF00, Local0)
+                            Or (Local0, T2D (DMA1), Local0)
+                        }
+                    }
+
+                    If (LEqual (Arg3, 0x00))
+                    {
+                        Store (Local0, IDTP)
+                        Store (Local1, UMSP)
+                    }
+                    Else
+                    {
+                        Store (Local0, IDTS)
+                        Store (Local1, UMSS)
+                    }
+                }
+
+                Method (GTF, 2, NotSerialized)
+                {
+                    Store (Buffer (0x07)
+                        {
+                            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
+                        }, Local0)
+                    CreateByteField (Local0, 0x01, MODE)
+                    CreateByteField (Local0, 0x05, DRIV)
+                    Store (Arg1, DRIV)
+                    If (LEqual (Arg0, 0x00))
+                    {
+                        Store (IDEP, Local1)
+                    }
+                    Else
+                    {
+                        Store (IDES, Local1)
+                    }
+
+                    CreateDWordField (Local1, 0x00, PIO0)
+                    CreateDWordField (Local1, 0x04, DMA0)
+                    CreateDWordField (Local1, 0x08, PIO1)
+                    CreateDWordField (Local1, 0x0C, DMA1)
+                    CreateDWordField (Local1, 0x10, FLGX)
+                    If (LEqual (Arg1, 0xA0))
+                    {
+                        Store (PIO0, Local2)
+                        Store (DMA0, Local3)
+                        And (FLGX, 0x01, FLGX)
+                    }
+                    Else
+                    {
+                        Store (PIO1, Local2)
+                        Store (DMA1, Local3)
+                        And (FLGX, 0x04, FLGX)
+                    }
+
+                    Store (FLGX, Local1)
+                    If (LGreater (Local2, 0x0186))
+                    {
+                        Store (0x00, Local2)
+                    }
+                    Else
+                    {
+                        If (LGreater (Local2, 0xF0))
+                        {
+                            Store (0x01, Local2)
+                        }
+                        Else
+                        {
+                            If (LGreater (Local2, 0xB4))
+                            {
+                                Store (0x02, Local2)
+                            }
+                            Else
+                            {
+                                If (LGreater (Local2, 0x78))
+                                {
+                                    Store (0x03, Local2)
+                                }
+                                Else
+                                {
+                                    Store (0x04, Local2)
+                                }
+                            }
+                        }
+                    }
+
+                    Or (0x08, Local2, MODE)
+                    Store (Local0, Local2)
+                    If (FLGX)
+                    {
+                        If (LGreater (Local3, 0x49))
+                        {
+                            Store (0x00, Local3)
+                        }
+                        Else
+                        {
+                            If (LGreater (Local3, 0x3C))
+                            {
+                                Store (0x01, Local3)
+                            }
+                            Else
+                            {
+                                If (LGreater (Local3, 0x2D))
+                                {
+                                    Store (0x02, Local3)
+                                }
+                                Else
+                                {
+                                    If (LGreater (Local3, 0x1E))
+                                    {
+                                        Store (0x03, Local3)
+                                    }
+                                    Else
+                                    {
+                                        If (LGreater (Local3, 0x14))
+                                        {
+                                            Store (0x04, Local3)
+                                        }
+                                        Else
+                                        {
+                                            If (LGreater (Local3, 0x0F))
+                                            {
+                                                Store (0x05, Local3)
+                                            }
+                                            Else
+                                            {
+                                                Store (0x06, Local3)
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                        Or (0x40, Local3, MODE)
+                    }
+                    Else
+                    {
+                        If (LEqual (Local3, 0xFFFFFFFF))
+                        {
+                            Return (Local0)
+                        }
+                        Else
+                        {
+                            If (LGreater (Local3, 0x96))
+                            {
+                                Store (0x00, Local3)
+                            }
+                            Else
+                            {
+                                If (LGreater (Local3, 0x78))
+                                {
+                                    Store (0x01, Local3)
+                                }
+                                Else
+                                {
+                                    Store (0x02, Local3)
+                                }
+                            }
+
+                            Or (0x20, Local3, MODE)
+                        }
+                    }
+
+                    Concatenate (Local0, Local2, Local1)
+                    Return (Local1)
+                }
+
+                Device (PRI0)
+                {
+                    Name (_ADR, 0x00)
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (GTM (0x00))
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        STM (Arg0, Arg1, Arg2, 0x00)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Return (GTF (0x00, 0xA0))
+                        }
+                    }
+
+                    Device (SLAV)
+                    {
+                        Name (_ADR, 0x01)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Return (GTF (0x00, 0xB0))
+                        }
+                    }
+                }
+
+                Device (SEC0)
+                {
+                    Name (_ADR, 0x01)
+                    Method (_GTM, 0, NotSerialized)
+                    {
+                        Return (GTM (0x01))
+                    }
+
+                    Method (_STM, 3, NotSerialized)
+                    {
+                        STM (Arg0, Arg1, Arg2, 0x01)
+                    }
+
+                    Device (MAST)
+                    {
+                        Name (_ADR, 0x00)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Return (GTF (0x01, 0xA0))
+                        }
+                    }
+
+                    Device (SLAV)
+                    {
+                        Name (_ADR, 0x01)
+                        Method (_GTF, 0, NotSerialized)
+                        {
+                            Return (GTF (0x01, 0xB0))
+                        }
+                    }
+                }
+
+                Method (DRMP, 0, NotSerialized)
+                {
+                    Return (\_SB.PCI0.NVRB.R_P0)
+                }
+            }
+
+            Device (XVR0)
+            {
+                Name (_ADR, 0x000F0000)
+                OperationRegion (PCV0, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR0.PCV0, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV0,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE0,   1, 
+                                Offset (0xA0), 
+                        RQD0,   16, 
+                        PES0,   1, 
+                        PEP0,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (XVR1)
+            {
+                Name (_ADR, 0x000E0000)
+                OperationRegion (PCV1, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR1.PCV1, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV1,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE1,   1, 
+                                Offset (0xA0), 
+                        RQD1,   16, 
+                        PES1,   1, 
+                        PEP1,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (XVR2)
+            {
+                Name (_ADR, 0x000D0000)
+                OperationRegion (PCV2, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR2.PCV2, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV2,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE2,   1, 
+                                Offset (0xA0), 
+                        RQD2,   16, 
+                        PES2,   1, 
+                        PEP2,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (XVR3)
+            {
+                Name (_ADR, 0x000C0000)
+                OperationRegion (PCV3, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR3.PCV3, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV3,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE3,   1, 
+                                Offset (0xA0), 
+                        RQD3,   16, 
+                        PES3,   1, 
+                        PEP3,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (XVR4)
+            {
+                Name (_ADR, 0x000B0000)
+                OperationRegion (PCV4, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR4.PCV4, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV4,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE4,   1, 
+                                Offset (0xA0), 
+                        RQD4,   16, 
+                        PES4,   1, 
+                        PEP4,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (XVR5)
+            {
+                Name (_ADR, 0x000A0000)
+                OperationRegion (PCV5, PCI_Config, 0x00, 0xFF)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.XVR5.PCV5, ByteAcc, NoLock, Preserve)
+                    {
+                        PEV5,   16, 
+                                Offset (0x9C), 
+                            ,   3, 
+                        XPE5,   1, 
+                                Offset (0xA0), 
+                        RQD5,   16, 
+                        PES5,   1, 
+                        PEP5,   1
+                    }
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x00, PEWK)
+                    }
+                    Else
+                    {
+                        Store (0x01, PEWK)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x11, 
+                    0x05
+                })
+            }
+
+            Device (SMB0)
+            {
+                Name (_ADR, 0x00010001)
+                OperationRegion (SMCF, PCI_Config, 0x48, 0x10)
+                Field (SMCF, DWordAcc, NoLock, Preserve)
+                {
+                    SMPM,   4, 
+                    SMT1,   28, 
+                    SMT2,   32
+                }
+
+                OperationRegion (SMCA, PCI_Config, 0x20, 0x08)
+                Field (SMCA, DWordAcc, NoLock, Preserve)
+                {
+                    SB1,    32, 
+                    SB2,    32
+                }
+
+                Method (SMBB, 0, NotSerialized)
+                {
+                    If (PCIA)
+                    {
+                        And (SB1, 0xFFFE, Local0)
+                    }
+                    Else
+                    {
+                        Store (0x1C00, Local0)
+                    }
+
+                    Return (Local0)
+                }
+            }
+
+            Device (LEG0)
+            {
+                Name (_ADR, 0x00010000)
+                OperationRegion (PIO0, PCI_Config, 0x04, 0x20)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.LEG0.PIO0, ByteAcc, NoLock, Preserve)
+                    {
+                        SMEN,   8, 
+                                Offset (0x0C), 
+                                Offset (0x0D), 
+                        SMIO,   8
+                    }
+                }
+
+                OperationRegion (PIRQ, PCI_Config, 0x7C, 0x0C)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.LEG0.PIRQ, AnyAcc, NoLock, Preserve)
+                    {
+                        INTA,   4, 
+                        INTB,   4, 
+                        INTC,   4, 
+                        INTD,   4, 
+                        PCEA,   4, 
+                        PCEB,   4, 
+                        PCEC,   4, 
+                        PCED,   4, 
+                        SCII,   4, 
+                        TCOI,   4, 
+                        INTF,   4, 
+                        INTQ,   4, 
+                        INTU,   4, 
+                        INTS,   4, 
+                        IS0P,   4, 
+                        ITID,   4, 
+                        INTG,   4, 
+                        INTH,   4, 
+                        INTJ,   4, 
+                        INTK,   4, 
+                        INTL,   4, 
+                        INTM,   4, 
+                        INTN,   4, 
+                        ISA2,   4
+                    }
+                }
+
+                OperationRegion (HPF0, PCI_Config, 0x74, 0x01)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.LEG0.HPF0, ByteAcc, NoLock, Preserve)
+                    {
+                            ,   2, 
+                        HPTF,   1, 
+                                Offset (0x01)
+                    }
+                }
+
+                OperationRegion (LPIO, PCI_Config, 0xA0, 0x18)
+                Scope (\)
+                {
+                    Field (\_SB.PCI0.LEG0.LPIO, ByteAcc, NoLock, Preserve)
+                    {
+                        UAIO,   8, 
+                        SNDD,   4, 
+                        MIDD,   4, 
+                        MSSD,   4, 
+                        FDCD,   2, 
+                                Offset (0x03), 
+                        PRIO,   3, 
+                            ,   1, 
+                        GEN1,   1, 
+                        GEN2,   1, 
+                        GEN3,   1, 
+                        GEN4,   1, 
+                        GAM1,   8, 
+                        GAM2,   8
+                    }
+
+                    OperationRegion (RTC2, SystemIO, 0x72, 0x02)
+                    Field (RTC2, ByteAcc, NoLock, Preserve)
+                    {
+                        CM2I,   8, 
+                        CM2D,   8
+                    }
+
+                    IndexField (CM2I, CM2D, ByteAcc, NoLock, Preserve)
+                    {
+                                Offset (0xCC), 
+                        UA1D,   8
+                    }
+
+                    Name (UARA, 0x00)
+                    Name (UARB, 0x00)
+                    Method (DISD, 1, NotSerialized)
+                    {
+                        If (LEqual (Arg0, 0x00))
+                        {
+                            Store (UARA, Local0)
+                            XOr (Local0, 0xFF, Local0)
+                            And (UAIO, Local0, UAIO)
+                        }
+
+                        If (LEqual (Arg0, 0x01))
+                        {
+                            Store (UARB, Local0)
+                            XOr (Local0, 0xFF, Local0)
+                            And (UAIO, Local0, UAIO)
+                        }
+
+                        If (LEqual (Arg0, 0x02))
+                        {
+                            Store (0x00, PRIO)
+                        }
+
+                        If (LEqual (Arg0, 0x03))
+                        {
+                            Store (0x00, FDCD)
+                        }
+
+                        If (LEqual (Arg0, 0x04))
+                        {
+                            Store (0x00, GAM1)
+                            Store (0x00, GAM2)
+                        }
+
+                        If (LEqual (Arg0, 0x05))
+                        {
+                            Store (0x00, MIDD)
+                        }
+                    }
+
+                    Method (CKIO, 2, NotSerialized)
+                    {
+                        If (LEqual (Arg1, 0x00))
+                        {
+                            Or (UARA, UARB, Local0)
+                            And (UAIO, Local0, UAIO)
+                            Store (UARA, Local0)
+                            XOr (Local0, 0xFF, Local0)
+                            And (UAIO, Local0, UAIO)
+                            If (LEqual (Arg0, 0x03F8))
+                            {
+                                Store (0x01, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x02F8))
+                            {
+                                Store (0x02, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x02E8))
+                            {
+                                Store (0x20, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x03E8))
+                            {
+                                Store (0x80, Local0)
+                            }
+
+                            Or (UAIO, Local0, UAIO)
+                            Store (Local0, UARA)
+                        }
+
+                        If (LEqual (Arg1, 0x01))
+                        {
+                            Or (UARA, UARB, Local0)
+                            And (UAIO, Local0, UAIO)
+                            Store (UARB, Local0)
+                            XOr (Local0, 0xFF, Local0)
+                            And (UAIO, Local0, UAIO)
+                            If (LEqual (Arg0, 0x03F8))
+                            {
+                                Store (0x01, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x02F8))
+                            {
+                                Store (0x02, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x02E8))
+                            {
+                                Store (0x20, Local0)
+                            }
+
+                            If (LEqual (Arg0, 0x03E8))
+                            {
+                                Store (0x80, Local0)
+                            }
+
+                            Or (UAIO, Local0, UAIO)
+                            Store (Local0, UARB)
+                        }
+
+                        If (LEqual (Arg1, 0x02))
+                        {
+                            If (LEqual (Arg0, 0x0378))
+                            {
+                                Store (0x00, PRIO)
+                                Or (PRIO, 0x01, PRIO)
+                            }
+
+                            If (LEqual (Arg0, 0x0278))
+                            {
+                                Store (0x00, PRIO)
+                                Or (PRIO, 0x02, PRIO)
+                            }
+
+                            If (LEqual (Arg0, 0x03BC))
+                            {
+                                Store (0x00, PRIO)
+                                Or (PRIO, 0x04, PRIO)
+                            }
+                        }
+
+                        If (LEqual (Arg1, 0x03))
+                        {
+                            Or (FDCD, 0x01, FDCD)
+                        }
+
+                        If (LEqual (Arg1, 0x04))
+                        {
+                            Store (0x00, GAM1)
+                            Store (0x00, GAM2)
+                            If (LEqual (Arg0, 0x0201))
+                            {
+                                Or (GAM1, 0x02, GAM1)
+                            }
+
+                            If (LEqual (Arg0, 0x0209))
+                            {
+                                Or (GAM2, 0x02, GAM2)
+                            }
+                        }
+
+                        If (LEqual (Arg1, 0x05))
+                        {
+                            Store (0x00, MIDD)
+                            If (LEqual (Arg0, 0x0300))
+                            {
+                                Or (MIDD, 0x01, MIDD)
+                            }
+
+                            If (LEqual (Arg0, 0x0330))
+                            {
+                                Or (MIDD, 0x08, MIDD)
+                            }
+                        }
+                    }
+
+                    Method (SLDM, 2, NotSerialized)
+                    {
+                    }
+
+                    Method (CLSU, 1, NotSerialized)
+                    {
+                        CreateWordField (Arg0, 0x02, UARO)
+                        If (LEqual (UARO, 0x03F8))
+                        {
+                            And (UAIO, 0xFE, UAIO)
+                        }
+
+                        If (LEqual (UARO, 0x02F8))
+                        {
+                            And (UAIO, 0xFD, UAIO)
+                        }
+
+                        If (LEqual (UARO, 0x02E8))
+                        {
+                            And (UAIO, 0xBF, UAIO)
+                        }
+
+                        If (LEqual (UARO, 0x03E8))
+                        {
+                            And (UAIO, 0x7F, UAIO)
+                        }
+                    }
+                }
+            }
+
+            Device (USB0)
+            {
+                Name (_ADR, 0x00020000)
+                Method (_S1D, 0, NotSerialized)
+                {
+                    Return (0x01)
+                }
+
+                Method (SS3D, 0, NotSerialized)
+                {
+                    If (LEqual (OSFL, 0x02))
+                    {
+                        Return (0x02)
+                    }
+                    Else
+                    {
+                        Return (0x03)
+                    }
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x0D, 
+                    0x03
+                })
+            }
+
+            Device (USB2)
+            {
+                Name (_ADR, 0x00020001)
+                OperationRegion (P020, PCI_Config, 0x49, 0x01)
+                Field (P020, AnyAcc, NoLock, Preserve)
+                {
+                    U0WK,   1
+                }
+
+                Method (_PSW, 1, NotSerialized)
+                {
+                    If (Arg0)
+                    {
+                        Store (0x01, U0WK)
+                    }
+                    Else
+                    {
+                        Store (0x00, U0WK)
+                    }
+                }
+
+                Method (_S1D, 0, NotSerialized)
+                {
+                    Return (0x01)
+                }
+
+                Method (SS3D, 0, NotSerialized)
+                {
+                    Return (0x01)
+                }
+
+                Name (_PRW, Package (0x02)
+                {
+                    0x05, 
+                    0x03
+                })
+            }
+
+            Device (AZAD)
+            {
+                Name (_ADR, 0x00060001)
+                Name (_PRW, Package (0x02)
+                {
+                    0x15, 
+                    0x05
+                })
+            }
+
+            Device (MMAC)
+            {
+                Name (_ADR, 0x00080000)
+                Name (_PRW, Package (0x02)
+                {
+                    0x0B, 
+                    0x05
+                })
+            }
+
+            Device (NVRB)
+            {
+                Name (_HID, "NVRAIDBUS")
+                OperationRegion (NVRD, SystemMemory, 0x000FFF38, 0x03)
+                Field (NVRD, ByteAcc, NoLock, Preserve)
+                {
+                    R_ST,   1, 
+                        ,   3, 
+                    R_P0,   4, 
+                    R_S0,   4, 
+                    R_S1,   4, 
+                    R_S2,   4
+                }
+
+                Name (FNVR, 0xFF)
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, FNVR)
+                }
+
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LEqual (R_ST, 0x01))
+                    {
+                        If (LEqual (FNVR, 0xFF))
+                        {
+                            Return (0x0F)
+                        }
+                        Else
+                        {
+                            Return (0x0D)
+                        }
+                    }
+                    Else
+                    {
+                        Return (0x00)
+                    }
+                }
+
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x04D2,             // Range Minimum
+                        0x04D2,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                })
+            }
+
+            Name (BUFA, ResourceTemplate ()
+            {
+                IRQ (Level, ActiveLow, Shared, )
+                    {5,7,9,10,11,14,15}
+            })
+            Name (BUFB, ResourceTemplate ()
+            {
+                IRQ (Level, ActiveLow, Shared, _Y02)
+                    {}
+            })
+            CreateWordField (BUFB, \_SB.PCI0._Y02._INT, IRQV)
+            Method (CRS, 1, NotSerialized)
+            {
+                If (Arg0)
+                {
+                    ShiftLeft (0x01, Arg0, IRQV)
+                }
+                Else
+                {
+                    Store (Zero, IRQV)
+                }
+
+                Return (BUFB)
+            }
+
+            Method (SRS, 1, NotSerialized)
+            {
+                CreateWordField (Arg0, 0x01, IRQ0)
+                FindSetRightBit (IRQ0, Local0)
+                Decrement (Local0)
+                Return (Local0)
+            }
+
+            Method (CRSA, 1, Serialized)
+            {
+                Store (Arg0, Local0)
+                If (LEqual (Arg0, 0x01))
+                {
+                    Store (0x17, Local0)
+                }
+
+                If (LEqual (Arg0, 0x02))
+                {
+                    Store (0x16, Local0)
+                }
+
+                If (LEqual (Arg0, 0x03))
+                {
+                    Store (0x10, Local0)
+                }
+
+                If (LEqual (Arg0, 0x04))
+                {
+                    Store (0x11, Local0)
+                }
+
+                If (LEqual (Arg0, 0x06))
+                {
+                    Store (0x12, Local0)
+                }
+
+                If (LEqual (Arg0, 0x08))
+                {
+                    Store (0x14, Local0)
+                }
+
+                If (LEqual (Arg0, 0x0C))
+                {
+                    Store (0x13, Local0)
+                }
+
+                If (LEqual (Arg0, 0x0D))
+                {
+                    Store (0x15, Local0)
+                }
+
+                Name (IRZ5, ResourceTemplate ()
+                {
+                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y03)
+                    {
+                        0x00000007,
+                    }
+                })
+                CreateWordField (IRZ5, \_SB.PCI0.CRSA._Y03._INT, INZ5)
+                Store (Local0, INZ5)
+                Return (IRZ5)
+            }
+
+            Method (SRSA, 1, Serialized)
+            {
+                CreateWordField (Arg0, 0x05, INZ6)
+                Store (0x08, Local0)
+                If (LEqual (INZ6, 0x10))
+                {
+                    Store (0x03, Local0)
+                }
+
+                If (LEqual (INZ6, 0x11))
+                {
+                    Store (0x04, Local0)
+                }
+
+                If (LEqual (INZ6, 0x12))
+                {
+                    Store (0x06, Local0)
+                }
+
+                If (LEqual (INZ6, 0x13))
+                {
+                    Store (0x0C, Local0)
+                }
+
+                If (LEqual (INZ6, 0x14))
+                {
+                    Store (0x08, Local0)
+                }
+
+                If (LEqual (INZ6, 0x15))
+                {
+                    Store (0x0D, Local0)
+                }
+
+                If (LEqual (INZ6, 0x16))
+                {
+                    Store (0x02, Local0)
+                }
+
+                If (LEqual (INZ6, 0x17))
+                {
+                    Store (0x01, Local0)
+                }
+
+                Return (Local0)
+            }
+
+            Device (LNK1)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x01)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTA)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTA)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTA))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTA)
+                }
+            }
+
+            Device (LNK2)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x02)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTB)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTB)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTB))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTB)
+                }
+            }
+
+            Device (LNK3)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x03)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTC)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTC)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTC))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTC)
+                }
+            }
+
+            Device (LNK4)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x04)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTD)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTD)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTD))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTD)
+                }
+            }
+
+            Device (LNK5)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x05)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (PCEA)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEA)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (PCEA))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), PCEA)
+                }
+            }
+
+            Device (LNK6)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x06)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (PCEB)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEB)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (PCEB))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), PCEB)
+                }
+            }
+
+            Device (LNK7)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x07)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (PCEC)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEC)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (PCEC))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), PCEC)
+                }
+            }
+
+            Device (LNK8)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x08)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (PCED)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCED)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (PCED))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), PCED)
+                }
+            }
+
+            Device (LP2P)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x09)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTU)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTU)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTU))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTU)
+                }
+            }
+
+            Device (LUBA)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x0A)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTG)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTG)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTG))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTG)
+                }
+            }
+
+            Device (LMAC)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x0B)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTJ)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTJ)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTJ))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTJ)
+                }
+            }
+
+            Device (LAZA)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x0D)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTK)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTK)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTK))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTK)
+                }
+            }
+
+            Device (LPMU)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x0E)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTS)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTS)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTS))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTS)
+                }
+            }
+
+            Device (LSMB)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x0F)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTF)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTF)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTF))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTF)
+                }
+            }
+
+            Device (LUB2)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x10)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTQ)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTQ)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTQ))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTQ)
+                }
+            }
+
+            Device (LIDE)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x11)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (INTN)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTN)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (INTN))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), INTN)
+                }
+            }
+
+            Device (LSID)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x12)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (ITID)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, ITID)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (ITID))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), ITID)
+                }
+            }
+
+            Device (LFID)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x13)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (IS0P)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, IS0P)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (IS0P))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), IS0P)
+                }
+            }
+
+            Device (LSA2)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x14)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (ISA2)
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFA)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, ISA2)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRS (ISA2))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRS (Arg0), ISA2)
+                }
+            }
+
+            Name (BUF1, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000010,
+                }
+            })
+            Name (BUF2, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000011,
+                }
+            })
+            Name (BUF3, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000012,
+                }
+            })
+            Name (BUF4, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000013,
+                }
+            })
+            Name (BUFF, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000014,
+                    0x00000015,
+                    0x00000016,
+                    0x00000017,
+                }
+            })
+            Name (BUFH, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x0000000B,
+                }
+            })
+            Name (BUFI, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000017,
+                }
+            })
+            Name (IRZ1, ResourceTemplate ()
+            {
+                Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
+                {
+                    0x00000007,
+                }
+            })
+            Device (APC1)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x15)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTA, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF1)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTA)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTA))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTA)
+                }
+            }
+
+            Device (APC2)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x16)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTB, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF2)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTB)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTB))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTB)
+                }
+            }
+
+            Device (APC3)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x17)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTC, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF3)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTC)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTC))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTC)
+                }
+            }
+
+            Device (APC4)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x18)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTD, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF4)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTD)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTD))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTD)
+                }
+            }
+
+            Device (APC5)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x19)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (PCEA, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF1)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEA)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (PCEA))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), PCEA)
+                }
+            }
+
+            Device (APC6)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x1A)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (PCEB, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF1)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEB)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (PCEB))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), PCEB)
+                }
+            }
+
+            Device (APC7)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x1B)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (PCEC, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF1)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCEC)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (PCEC))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), PCEC)
+                }
+            }
+
+            Device (APC8)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x1C)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (PCED, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUF1)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, PCED)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (PCED))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), PCED)
+                }
+            }
+
+            Device (APCF)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x1D)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTG, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTG)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTG))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTG)
+                }
+            }
+
+            Device (APCH)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x1E)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTJ, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTJ)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTJ))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTJ)
+                }
+            }
+
+            Device (APMU)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x20)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTS, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTS)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTS))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTS)
+                }
+            }
+
+            Device (AAZA)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x21)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTK, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTK)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTK))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTK)
+                }
+            }
+
+            Device (APCS)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x22)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTF, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTF)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTF))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTF)
+                }
+            }
+
+            Device (APCL)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x23)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTQ, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTQ)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTQ))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTQ)
+                }
+            }
+
+            Device (APCM)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x24)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTU, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTU)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTU))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTU)
+                }
+            }
+
+            Device (APCZ)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x25)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (INTN, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, INTN)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (INTN))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), INTN)
+                }
+            }
+
+            Device (APSI)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x26)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (ITID, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, ITID)
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (ITID))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), ITID)
+                }
+            }
+
+            Device (APSJ)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x27)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (IS0P, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, IS0P)
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (IS0P))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), IS0P)
+                }
+            }
+
+            Device (ASA2)
+            {
+                Name (_HID, EisaId ("PNP0C0F"))
+                Name (_UID, 0x28)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LAnd (ISA2, PICF))
+                    {
+                        Return (0x0B)
+                    }
+                    Else
+                    {
+                        Return (0x09)
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    Store (0x00, ISA2)
+                }
+
+                Method (_PRS, 0, NotSerialized)
+                {
+                    Return (BUFF)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Return (CRSA (ISA2))
+                }
+
+                Method (_SRS, 1, NotSerialized)
+                {
+                    Store (SRSA (Arg0), ISA2)
+                }
+            }
+
+            Scope (\)
+            {
+                OperationRegion (\SCPP, SystemIO, 0x142E, 0x01)
+                Field (\SCPP, ByteAcc, NoLock, Preserve)
+                {
+                    SMIP,   8
+                }
+            }
+
+            Method (\_SB.PCI0._INI, 0, NotSerialized)
+            {
+                If (STRC (\_OS, "Microsoft Windows"))
+                {
+                    Store (0x56, SMIP)
+                }
+                Else
+                {
+                    If (STRC (\_OS, "Microsoft Windows NT"))
+                    {
+                        If (CondRefOf (\_OSI, Local0))
+                        {
+                            If (\_OSI ("Windows 2001"))
+                            {
+                                Store (0x59, SMIP)
+                                Store (0x00, OSFL)
+                                Store (0x03, OSFX)
+                            }
+                        }
+                        Else
+                        {
+                            Store (0x58, SMIP)
+                            Store (0x00, OSFL)
+                        }
+                    }
+                    Else
+                    {
+                        Store (0x57, SMIP)
+                        Store (0x02, OSFL)
+                    }
+                }
+
+                Name (TEMP, 0x00)
+                Store (UA1D, TEMP)
+                And (TEMP, 0x0F, TEMP)
+                If (LEqual (TEMP, 0x01))
+                {
+                    Store (0x01, UARA)
+                }
+
+                If (LEqual (TEMP, 0x02))
+                {
+                    Store (0x02, UARA)
+                }
+
+                If (LEqual (TEMP, 0x03))
+                {
+                    Store (0x20, UARA)
+                }
+
+                If (LEqual (TEMP, 0x04))
+                {
+                    Store (0x80, UARA)
+                }
+
+                Store (UA1D, TEMP)
+                And (TEMP, 0xF0, TEMP)
+                ShiftRight (TEMP, 0x04, TEMP)
+                If (LEqual (TEMP, 0x01))
+                {
+                    Store (0x01, UARB)
+                }
+
+                If (LEqual (TEMP, 0x02))
+                {
+                    Store (0x02, UARB)
+                }
+
+                If (LEqual (TEMP, 0x03))
+                {
+                    Store (0x20, UARB)
+                }
+
+                If (LEqual (TEMP, 0x04))
+                {
+                    Store (0x80, UARB)
+                }
+            }
+
+            Scope (\)
+            {
+                Method (OSTP, 0, NotSerialized)
+                {
+                    If (LEqual (OSFL, 0x01))
+                    {
+                        Store (0x56, SMIP)
+                    }
+
+                    If (LEqual (OSFL, 0x02))
+                    {
+                        Store (0x57, SMIP)
+                    }
+
+                    If (LEqual (OSFL, 0x00))
+                    {
+                        If (LEqual (OSFX, 0x03))
+                        {
+                            Store (0x59, SMIP)
+                        }
+                        Else
+                        {
+                            Store (0x58, SMIP)
+                        }
+                    }
+
+                    If (LEqual (OSFX, 0x03))
+                    {
+                        Store (0x59, SMIP)
+                    }
+                }
+            }
+
+            Device (SYSR)
+            {
+                Name (_HID, EisaId ("PNP0C02"))
+                Name (_UID, 0x01)
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0010,             // Range Minimum
+                        0x0010,             // Range Maximum
+                        0x01,               // Alignment
+                        0x10,               // Length
+                        )
+                    IO (Decode16,
+                        0x0022,             // Range Minimum
+                        0x0022,             // Range Maximum
+                        0x01,               // Alignment
+                        0x1E,               // Length
+                        )
+                    IO (Decode16,
+                        0x0044,             // Range Minimum
+                        0x0044,             // Range Maximum
+                        0x01,               // Alignment
+                        0x1C,               // Length
+                        )
+                    IO (Decode16,
+                        0x0062,             // Range Minimum
+                        0x0062,             // Range Maximum
+                        0x01,               // Alignment
+                        0x02,               // Length
+                        )
+                    IO (Decode16,
+                        0x0065,             // Range Minimum
+                        0x0065,             // Range Maximum
+                        0x01,               // Alignment
+                        0x0B,               // Length
+                        )
+                    IO (Decode16,
+                        0x0074,             // Range Minimum
+                        0x0074,             // Range Maximum
+                        0x01,               // Alignment
+                        0x0C,               // Length
+                        )
+                    IO (Decode16,
+                        0x0091,             // Range Minimum
+                        0x0091,             // Range Maximum
+                        0x01,               // Alignment
+                        0x03,               // Length
+                        )
+                    IO (Decode16,
+                        0x00A2,             // Range Minimum
+                        0x00A2,             // Range Maximum
+                        0x01,               // Alignment
+                        0x1E,               // Length
+                        )
+                    IO (Decode16,
+                        0x00E0,             // Range Minimum
+                        0x00E0,             // Range Maximum
+                        0x01,               // Alignment
+                        0x10,               // Length
+                        )
+                    IO (Decode16,
+                        0x04D0,             // Range Minimum
+                        0x04D0,             // Range Maximum
+                        0x01,               // Alignment
+                        0x02,               // Length
+                        )
+                    IO (Decode16,
+                        0x0800,             // Range Minimum
+                        0x0800,             // Range Maximum
+                        0x01,               // Alignment
+                        0x80,               // Length
+                        )
+                    IO (Decode16,
+                        0x0295,             // Range Minimum
+                        0x0295,             // Range Maximum
+                        0x01,               // Alignment
+                        0x80,               // Length
+                        )
+                    IO (Decode16,
+                        0x0290,             // Range Minimum
+                        0x0290,             // Range Maximum
+                        0x01,               // Alignment
+                        0x05,               // Length
+                        )
+                })
+            }
+
+            Device (PIC)
+            {
+                Name (_HID, EisaId ("PNP0000"))
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0020,             // Range Minimum
+                        0x0020,             // Range Maximum
+                        0x01,               // Alignment
+                        0x02,               // Length
+                        )
+                    IO (Decode16,
+                        0x00A0,             // Range Minimum
+                        0x00A0,             // Range Maximum
+                        0x01,               // Alignment
+                        0x02,               // Length
+                        )
+                    IRQNoFlags ()
+                        {2}
+                })
+            }
+
+            Device (DMA1)
+            {
+                Name (_HID, EisaId ("PNP0200"))
+                Name (_CRS, ResourceTemplate ()
+                {
+                    DMA (Compatibility, BusMaster, Transfer8, )
+                        {4}
+                    IO (Decode16,
+                        0x0000,             // Range Minimum
+                        0x0000,             // Range Maximum
+                        0x01,               // Alignment
+                        0x10,               // Length
+                        )
+                    IO (Decode16,
+                        0x0080,             // Range Minimum
+                        0x0080,             // Range Maximum
+                        0x01,               // Alignment
+                        0x11,               // Length
+                        )
+                    IO (Decode16,
+                        0x0094,             // Range Minimum
+                        0x0094,             // Range Maximum
+                        0x01,               // Alignment
+                        0x0C,               // Length
+                        )
+                    IO (Decode16,
+                        0x00C0,             // Range Minimum
+                        0x00C0,             // Range Maximum
+                        0x01,               // Alignment
+                        0x20,               // Length
+                        )
+                })
+            }
+
+            Device (TMR)
+            {
+                Name (_HID, EisaId ("PNP0100"))
+                Name (ATT5, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0040,             // Range Minimum
+                        0x0040,             // Range Maximum
+                        0x00,               // Alignment
+                        0x04,               // Length
+                        )
+                    IRQNoFlags ()
+                        {0}
+                })
+                Name (ATT6, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0040,             // Range Minimum
+                        0x0040,             // Range Maximum
+                        0x00,               // Alignment
+                        0x04,               // Length
+                        )
+                })
+                Method (_CRS, 0, NotSerialized)
+                {
+                    If (LGreaterEqual (OSFX, 0x03))
+                    {
+                        If (HPTF)
+                        {
+                            Return (ATT6)
+                        }
+                        Else
+                        {
+                            Return (ATT5)
+                        }
+                    }
+                    Else
+                    {
+                        Return (ATT5)
+                    }
+                }
+            }
+
+            Device (HPET)
+            {
+                Name (_HID, EisaId ("PNP0103"))
+                Name (ATT3, ResourceTemplate ()
+                {
+                    IRQNoFlags ()
+                        {0}
+                    IRQNoFlags ()
+                        {8}
+                    Memory32Fixed (ReadWrite,
+                        0xFEFFFC00,         // Address Base
+                        0x00000400,         // Address Length
+                        )
+                })
+                Name (ATT4, ResourceTemplate ()
+                {
+                })
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LGreaterEqual (OSFX, 0x03))
+                    {
+                        If (HPTF)
+                        {
+                            Return (0x0F)
+                        }
+                        Else
+                        {
+                            Return (0x00)
+                        }
+                    }
+                    Else
+                    {
+                        Return (0x00)
+                    }
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    If (LGreaterEqual (OSFX, 0x03))
+                    {
+                        If (HPTF)
+                        {
+                            Return (ATT3)
+                        }
+                        Else
+                        {
+                            Return (ATT4)
+                        }
+                    }
+                    Else
+                    {
+                        Return (ATT4)
+                    }
+                }
+            }
+
+            Device (RTC)
+            {
+                Name (_HID, EisaId ("PNP0B00"))
+                Name (ATT0, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0070,             // Range Minimum
+                        0x0070,             // Range Maximum
+                        0x00,               // Alignment
+                        0x04,               // Length
+                        )
+                    IRQNoFlags ()
+                        {8}
+                })
+                Name (ATT1, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0070,             // Range Minimum
+                        0x0070,             // Range Maximum
+                        0x00,               // Alignment
+                        0x04,               // Length
+                        )
+                })
+                Method (_CRS, 0, NotSerialized)
+                {
+                    If (LGreaterEqual (OSFX, 0x03))
+                    {
+                        If (HPTF)
+                        {
+                            Return (ATT1)
+                        }
+                        Else
+                        {
+                            Return (ATT0)
+                        }
+                    }
+                    Else
+                    {
+                        Return (ATT0)
+                    }
+                }
+            }
+
+            Device (SPKR)
+            {
+                Name (_HID, EisaId ("PNP0800"))
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0061,             // Range Minimum
+                        0x0061,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                })
+            }
+
+            Device (COPR)
+            {
+                Name (_HID, EisaId ("PNP0C04"))
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x00F0,             // Range Minimum
+                        0x00F0,             // Range Maximum
+                        0x01,               // Alignment
+                        0x10,               // Length
+                        )
+                    IRQNoFlags ()
+                        {13}
+                })
+            }
+
+            Scope (\)
+            {
+                OperationRegion (WIN1, SystemIO, 0x2E, 0x02)
+                Field (WIN1, ByteAcc, NoLock, Preserve)
+                {
+                    INDP,   8, 
+                    DATP,   8
+                }
+
+                OperationRegion (GPIO, SystemIO, 0x0800, 0x05)
+                Field (GPIO, ByteAcc, NoLock, Preserve)
+                {
+                    GO01,   8, 
+                    GO02,   8, 
+                    GO03,   8, 
+                    GO04,   8, 
+                    GO05,   8
+                }
+
+                IndexField (INDP, DATP, ByteAcc, NoLock, Preserve)
+                {
+                            Offset (0x02), 
+                    CFG,    8, 
+                            Offset (0x07), 
+                    LDN,    8, 
+                            Offset (0x20), 
+                    IDHI,   8, 
+                    IDLO,   8, 
+                    POWC,   8, 
+                            Offset (0x30), 
+                    ACTR,   8, 
+                            Offset (0x60), 
+                    IOAH,   8, 
+                    IOAL,   8, 
+                    IO2H,   8, 
+                    IO2L,   8, 
+                            Offset (0x70), 
+                    INTR,   8, 
+                            Offset (0x72), 
+                    INT1,   8, 
+                            Offset (0x74), 
+                    DMCH,   8, 
+                            Offset (0xC0), 
+                    GP40,   8, 
+                            Offset (0xF0), 
+                    OPT1,   8, 
+                    OPT2,   8, 
+                    OPT3,   8, 
+                    OPT4,   8
+                }
+
+                Method (ENFG, 0, NotSerialized)
+                {
+                    Store (0x87, INDP)
+                    Store (0x01, INDP)
+                    Store (0x55, INDP)
+                    Store (0x55, INDP)
+                }
+
+                Method (EXFG, 0, NotSerialized)
+                {
+                    Store (0x02, CFG)
+                }
+
+                Method (GSRG, 1, NotSerialized)
+                {
+                    Store (Arg0, INDP)
+                    Return (DATP)
+                }
+
+                Method (SSRG, 2, NotSerialized)
+                {
+                    Store (Arg0, INDP)
+                    Store (Arg1, DATP)
+                }
+            }
+
+            Device (FDC0)
+            {
+                Name (_HID, EisaId ("PNP0700"))
+                Method (_STA, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (Zero, LDN)
+                    If (ACTR)
+                    {
+                        EXFG ()
+                        Return (0x0F)
+                    }
+                    Else
+                    {
+                        If (LOr (IOAH, IOAL))
+                        {
+                            EXFG ()
+                            Return (0x0D)
+                        }
+                        Else
+                        {
+                            EXFG ()
+                            Return (0x00)
+                        }
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x00, LDN)
+                    Store (Zero, ACTR)
+                    SLDM (DMCH, 0x04)
+                    EXFG ()
+                    DISD (0x03)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF0, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x03F0,             // Range Minimum
+                            0x03F0,             // Range Maximum
+                            0x01,               // Alignment
+                            0x06,               // Length
+                            _Y04)
+                        IO (Decode16,
+                            0x03F7,             // Range Minimum
+                            0x03F7,             // Range Maximum
+                            0x01,               // Alignment
+                            0x01,               // Length
+                            )
+                        IRQNoFlags ()
+                            {6}
+                        DMA (Compatibility, NotBusMaster, Transfer8, )
+                            {2}
+                    })
+                    CreateByteField (BUF0, \_SB.PCI0.FDC0._CRS._Y04._MIN, IOLO)
+                    CreateByteField (BUF0, 0x03, IOHI)
+                    CreateByteField (BUF0, \_SB.PCI0.FDC0._CRS._Y04._MAX, IORL)
+                    CreateByteField (BUF0, 0x05, IORH)
+                    ENFG ()
+                    EXFG ()
+                    Return (BUF0)
+                }
+
+                Name (_PRS, ResourceTemplate ()
+                {
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x03F0,             // Range Minimum
+                            0x03F0,             // Range Maximum
+                            0x01,               // Alignment
+                            0x06,               // Length
+                            )
+                        IO (Decode16,
+                            0x03F7,             // Range Minimum
+                            0x03F7,             // Range Maximum
+                            0x01,               // Alignment
+                            0x01,               // Length
+                            )
+                        IRQNoFlags ()
+                            {6}
+                        DMA (Compatibility, NotBusMaster, Transfer8, )
+                            {2}
+                    }
+                    EndDependentFn ()
+                })
+                Method (_SRS, 1, NotSerialized)
+                {
+                    CreateByteField (Arg0, 0x02, IOLO)
+                    CreateByteField (Arg0, 0x03, IOHI)
+                    CreateWordField (Arg0, 0x02, IOAD)
+                    CreateWordField (Arg0, 0x19, IRQW)
+                    CreateByteField (Arg0, 0x1C, DMAV)
+                    ENFG ()
+                    Store (Zero, LDN)
+                    Store (One, ACTR)
+                    SLDM (DMCH, DMCH)
+                    CKIO (IOAD, 0x03)
+                    EXFG ()
+                }
+            }
+
+            Device (UAR1)
+            {
+                Name (_HID, EisaId ("PNP0501"))
+                Name (_UID, 0x01)
+                Method (_STA, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x01, LDN)
+                    If (ACTR)
+                    {
+                        EXFG ()
+                        Return (0x0F)
+                    }
+                    Else
+                    {
+                        If (LOr (IOAH, IOAL))
+                        {
+                            EXFG ()
+                            Return (0x0D)
+                        }
+                        Else
+                        {
+                            EXFG ()
+                            Return (0x00)
+                        }
+                    }
+
+                    EXFG ()
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x01, LDN)
+                    Store (Zero, ACTR)
+                    EXFG ()
+                    DISD (0x00)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF1, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x0000,             // Range Minimum
+                            0x0000,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            _Y05)
+                        IRQNoFlags (_Y06)
+                            {}
+                    })
+                    CreateByteField (BUF1, \_SB.PCI0.UAR1._CRS._Y05._MIN, IOLO)
+                    CreateByteField (BUF1, 0x03, IOHI)
+                    CreateByteField (BUF1, \_SB.PCI0.UAR1._CRS._Y05._MAX, IORL)
+                    CreateByteField (BUF1, 0x05, IORH)
+                    CreateWordField (BUF1, \_SB.PCI0.UAR1._CRS._Y06._INT, IRQW)
+                    ENFG ()
+                    Store (0x01, LDN)
+                    Store (IOAL, IOLO)
+                    Store (IOAL, IORL)
+                    Store (IOAH, IOHI)
+                    Store (IOAH, IORH)
+                    Store (One, Local0)
+                    ShiftLeft (Local0, INTR, IRQW)
+                    EXFG ()
+                    Return (BUF1)
+                }
+
+                Name (_PRS, ResourceTemplate ()
+                {
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x03F8,             // Range Minimum
+                            0x03F8,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x02F8,             // Range Minimum
+                            0x02F8,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x03E8,             // Range Minimum
+                            0x03E8,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x02E8,             // Range Minimum
+                            0x02E8,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    EndDependentFn ()
+                })
+                Method (_SRS, 1, NotSerialized)
+                {
+                    CreateByteField (Arg0, 0x02, IOLO)
+                    CreateByteField (Arg0, 0x03, IOHI)
+                    CreateWordField (Arg0, 0x02, IOAD)
+                    CreateWordField (Arg0, 0x09, IRQW)
+                    ENFG ()
+                    Store (0x01, LDN)
+                    Store (One, ACTR)
+                    Store (IOLO, IOAL)
+                    Store (IOHI, IOAH)
+                    FindSetRightBit (IRQW, Local0)
+                    Subtract (Local0, 0x01, INTR)
+                    EXFG ()
+                    CKIO (IOAD, 0x00)
+                }
+            }
+
+            Device (LPT1)
+            {
+                Name (_HID, EisaId ("PNP0400"))
+                Method (_STA, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x03, LDN)
+                    And (OPT1, 0x02, Local0)
+                    If (LNotEqual (Local0, 0x02))
+                    {
+                        If (ACTR)
+                        {
+                            EXFG ()
+                            Return (0x0F)
+                        }
+                        Else
+                        {
+                            If (LOr (IOAH, IOAL))
+                            {
+                                EXFG ()
+                                Return (0x0D)
+                            }
+                            Else
+                            {
+                                EXFG ()
+                                Return (0x00)
+                            }
+                        }
+                    }
+                    Else
+                    {
+                        EXFG ()
+                        Return (0x00)
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (Zero, ACTR)
+                    EXFG ()
+                    DISD (0x02)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF5, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x0000,             // Range Minimum
+                            0x0000,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            _Y07)
+                        IRQNoFlags (_Y08)
+                            {}
+                    })
+                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y07._MIN, IOLO)
+                    CreateByteField (BUF5, 0x03, IOHI)
+                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y07._MAX, IORL)
+                    CreateByteField (BUF5, 0x05, IORH)
+                    CreateByteField (BUF5, \_SB.PCI0.LPT1._CRS._Y07._LEN, IOLE)
+                    CreateWordField (BUF5, \_SB.PCI0.LPT1._CRS._Y08._INT, IRQW)
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (IOAL, IOLO)
+                    Store (IOLO, IORL)
+                    Store (IOAH, IOHI)
+                    Store (IOHI, IORH)
+                    If (LEqual (IOLO, 0xBC))
+                    {
+                        Store (0x04, IOLE)
+                    }
+                    Else
+                    {
+                        Store (0x08, IOLE)
+                    }
+
+                    Store (One, Local0)
+                    Store (INTR, Local5)
+                    ShiftLeft (Local0, Local5, IRQW)
+                    EXFG ()
+                    Return (BUF5)
+                }
+
+                Name (_PRS, ResourceTemplate ()
+                {
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x0378,             // Range Minimum
+                            0x0378,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x0278,             // Range Minimum
+                            0x0278,             // Range Maximum
+                            0x01,               // Alignment
+                            0x08,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x03BC,             // Range Minimum
+                            0x03BC,             // Range Maximum
+                            0x01,               // Alignment
+                            0x04,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                    }
+                    EndDependentFn ()
+                })
+                Method (_SRS, 1, NotSerialized)
+                {
+                    CreateByteField (Arg0, 0x02, IOLO)
+                    CreateByteField (Arg0, 0x03, IOHI)
+                    CreateWordField (Arg0, 0x02, IOAD)
+                    CreateByteField (Arg0, 0x04, IORL)
+                    CreateByteField (Arg0, 0x05, IORH)
+                    CreateWordField (Arg0, 0x09, IRQW)
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (One, ACTR)
+                    Store (IOLO, IOAL)
+                    Store (IOHI, IOAH)
+                    FindSetLeftBit (IRQW, Local0)
+                    Subtract (Local0, 0x01, Local0)
+                    Store (Local0, INTR)
+                    EXFG ()
+                    CKIO (IOAD, 0x02)
+                }
+            }
+
+            Device (ECP1)
+            {
+                Name (_HID, EisaId ("PNP0401"))
+                Method (_STA, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x03, LDN)
+                    And (OPT1, 0x02, Local0)
+                    If (LEqual (Local0, 0x02))
+                    {
+                        If (ACTR)
+                        {
+                            EXFG ()
+                            Return (0x0F)
+                        }
+                        Else
+                        {
+                            If (LOr (IOAH, IOAL))
+                            {
+                                EXFG ()
+                                Return (0x0D)
+                            }
+                            Else
+                            {
+                                EXFG ()
+                                Return (0x00)
+                            }
+                        }
+                    }
+                    Else
+                    {
+                        EXFG ()
+                        Return (0x00)
+                    }
+                }
+
+                Method (_DIS, 0, NotSerialized)
+                {
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (Zero, ACTR)
+                    SLDM (DMCH, 0x04)
+                    EXFG ()
+                    DISD (0x02)
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF6, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x0000,             // Range Minimum
+                            0x0000,             // Range Maximum
+                            0x01,               // Alignment
+                            0x04,               // Length
+                            _Y09)
+                        IO (Decode16,
+                            0x0000,             // Range Minimum
+                            0x0000,             // Range Maximum
+                            0x01,               // Alignment
+                            0x04,               // Length
+                            _Y0A)
+                        IRQNoFlags (_Y0B)
+                            {}
+                        DMA (Compatibility, NotBusMaster, Transfer8, _Y0C)
+                            {}
+                    })
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y09._MIN, IOLO)
+                    CreateByteField (BUF6, 0x03, IOHI)
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y09._MAX, IORL)
+                    CreateByteField (BUF6, 0x05, IORH)
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y09._LEN, IOLE)
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0A._MIN, IOEL)
+                    CreateByteField (BUF6, 0x0B, IOEH)
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0A._MAX, IOML)
+                    CreateByteField (BUF6, 0x0D, IOMH)
+                    CreateWordField (BUF6, \_SB.PCI0.ECP1._CRS._Y0B._INT, IRQW)
+                    CreateByteField (BUF6, \_SB.PCI0.ECP1._CRS._Y0C._DMA, DMAC)
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (IOAL, Local2)
+                    Store (Local2, IOLO)
+                    Store (IOAH, Local3)
+                    Store (Local3, IOHI)
+                    Or (Local3, 0x04, Local3)
+                    Store (Local3, IOEH)
+                    Store (Local3, IOMH)
+                    Store (IOLO, IORL)
+                    Store (IOLO, IOEL)
+                    Store (IOLO, IOML)
+                    Store (IOHI, IORH)
+                    If (LEqual (IOLO, 0xBC))
+                    {
+                        Store (0x04, IOLE)
+                    }
+                    Else
+                    {
+                        Store (0x08, IOLE)
+                    }
+
+                    Store (One, Local0)
+                    Store (INTR, Local5)
+                    ShiftLeft (Local0, Local5, IRQW)
+                    Store (One, Local0)
+                    Store (DMCH, Local5)
+                    ShiftLeft (Local0, Local5, DMAC)
+                    EXFG ()
+                    Return (BUF6)
+                }
+
+                Name (_PRS, ResourceTemplate ()
+                {
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x0378,             // Range Minimum
+                            0x0378,             // Range Maximum
+                            0x00,               // Alignment
+                            0x08,               // Length
+                            )
+                        IO (Decode16,
+                            0x0778,             // Range Minimum
+                            0x0778,             // Range Maximum
+                            0x00,               // Alignment
+                            0x04,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                        DMA (Compatibility, NotBusMaster, Transfer8, )
+                            {0,1,3}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x0278,             // Range Minimum
+                            0x0278,             // Range Maximum
+                            0x00,               // Alignment
+                            0x08,               // Length
+                            )
+                        IO (Decode16,
+                            0x0678,             // Range Minimum
+                            0x0678,             // Range Maximum
+                            0x00,               // Alignment
+                            0x04,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                        DMA (Compatibility, NotBusMaster, Transfer8, )
+                            {0,1,3}
+                    }
+                    StartDependentFnNoPri ()
+                    {
+                        IO (Decode16,
+                            0x03BC,             // Range Minimum
+                            0x03BC,             // Range Maximum
+                            0x00,               // Alignment
+                            0x04,               // Length
+                            )
+                        IO (Decode16,
+                            0x07BC,             // Range Minimum
+                            0x07BC,             // Range Maximum
+                            0x00,               // Alignment
+                            0x04,               // Length
+                            )
+                        IRQNoFlags ()
+                            {3,4,5,7,9,10,11,12}
+                        DMA (Compatibility, NotBusMaster, Transfer8, )
+                            {0,1,3}
+                    }
+                    EndDependentFn ()
+                })
+                Method (_SRS, 1, NotSerialized)
+                {
+                    CreateByteField (Arg0, 0x02, IOLO)
+                    CreateByteField (Arg0, 0x03, IOHI)
+                    CreateWordField (Arg0, 0x02, IOAD)
+                    CreateWordField (Arg0, 0x11, IRQW)
+                    CreateByteField (Arg0, 0x14, DMAC)
+                    ENFG ()
+                    Store (0x03, LDN)
+                    Store (One, ACTR)
+                    Store (IOLO, IOAL)
+                    Store (IOHI, IOAH)
+                    FindSetLeftBit (IRQW, Local0)
+                    Subtract (Local0, 0x01, Local0)
+                    Store (Local0, INTR)
+                    FindSetLeftBit (DMAC, Local1)
+                    Store (DMCH, Local0)
+                    Subtract (Local1, 0x01, DMCH)
+                    SLDM (Local0, DMCH)
+                    EXFG ()
+                    CKIO (IOAD, 0x02)
+                }
+            }
+
+            OperationRegion (KBCT, SystemIO, 0x60, 0x05)
+            Field (KBCT, ByteAcc, NoLock, Preserve)
+            {
+                P060,   8, 
+                        Offset (0x04), 
+                P064,   8
+            }
+
+            Device (PS2M)
+            {
+                Name (_HID, EisaId ("PNP0F13"))
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LEqual (PS2F, 0x00))
+                    {
+                        Return (0x0F)
+                    }
+                    Else
+                    {
+                        Return (0x00)
+                    }
+                }
+
+                Method (_CRS, 0, NotSerialized)
+                {
+                    Name (BUF1, ResourceTemplate ()
+                    {
+                        IRQNoFlags ()
+                            {12}
+                    })
+                    Name (BUF2, ResourceTemplate ()
+                    {
+                        IO (Decode16,
+                            0x0060,             // Range Minimum
+                            0x0060,             // Range Maximum
+                            0x01,               // Alignment
+                            0x01,               // Length
+                            )
+                        IO (Decode16,
+                            0x0064,             // Range Minimum
+                            0x0064,             // Range Maximum
+                            0x01,               // Alignment
+                            0x01,               // Length
+                            )
+                        IRQNoFlags ()
+                            {12}
+                    })
+                    If (LEqual (KBDI, 0x01))
+                    {
+                        If (LEqual (OSFL, 0x02))
+                        {
+                            Return (BUF1)
+                        }
+
+                        If (LEqual (OSFL, 0x01))
+                        {
+                            Return (BUF1)
+                        }
+                        Else
+                        {
+                            Return (BUF2)
+                        }
+                    }
+                    Else
+                    {
+                        Return (BUF1)
+                    }
+                }
+            }
+
+            Device (PS2K)
+            {
+                Name (_HID, EisaId ("PNP0303"))
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LEqual (KBDI, 0x01))
+                    {
+                        Return (0x00)
+                    }
+                    Else
+                    {
+                        Return (0x0F)
+                    }
+                }
+
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0060,             // Range Minimum
+                        0x0060,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                    IO (Decode16,
+                        0x0064,             // Range Minimum
+                        0x0064,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                    IRQNoFlags ()
+                        {1}
+                })
+            }
+
+            Device (PSMR)
+            {
+                Name (_HID, EisaId ("PNP0C02"))
+                Name (_UID, 0x03)
+                Method (_STA, 0, NotSerialized)
+                {
+                    If (LEqual (KBDI, 0x00))
+                    {
+                        Return (0x00)
+                    }
+
+                    If (LEqual (PS2F, 0x00))
+                    {
+                        If (LEqual (OSFL, 0x02))
+                        {
+                            Return (0x0F)
+                        }
+
+                        If (LEqual (OSFL, 0x01))
+                        {
+                            Return (0x0F)
+                        }
+
+                        Return (0x00)
+                    }
+
+                    Return (0x00)
+                }
+
+                Name (_CRS, ResourceTemplate ()
+                {
+                    IO (Decode16,
+                        0x0060,             // Range Minimum
+                        0x0060,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                    IO (Decode16,
+                        0x0064,             // Range Minimum
+                        0x0064,             // Range Maximum
+                        0x01,               // Alignment
+                        0x01,               // Length
+                        )
+                })
+            }
+
+            Method (\_SB.PCI0.UAR1._PRW, 0, NotSerialized)
+            {
+                Return (Package (0x02)
+                {
+                    0x03, 
+                    0x05
+                })
+            }
+        }
+
+        Device (MEM)
+        {
+            Name (_HID, EisaId ("PNP0C01"))
+            Method (_CRS, 0, NotSerialized)
+            {
+                Name (BUF0, ResourceTemplate ()
+                {
+                    Memory32Fixed (ReadWrite,
+                        0x000F0000,         // Address Base
+                        0x00004000,         // Address Length
+                        _Y0E)
+                    Memory32Fixed (ReadWrite,
+                        0x000F4000,         // Address Base
+                        0x00004000,         // Address Length
+                        _Y0F)
+                    Memory32Fixed (ReadWrite,
+                        0x000F8000,         // Address Base
+                        0x00004000,         // Address Length
+                        _Y10)
+                    Memory32Fixed (ReadWrite,
+                        0x000FC000,         // Address Base
+                        0x00004000,         // Address Length
+                        _Y11)
+                    Memory32Fixed (ReadWrite,
+                        0x00000000,         // Address Base
+                        0x00010000,         // Address Length
+                        _Y0D)
+                    Memory32Fixed (ReadWrite,
+                        0xFFFF0000,         // Address Base
+                        0x00010000,         // Address Length
+                        )
+                    Memory32Fixed (ReadWrite,
+                        0x00000000,         // Address Base
+                        0x000A0000,         // Address Length
+                        )
+                    Memory32Fixed (ReadWrite,
+                        0x00100000,         // Address Base
+                        0x00000000,         // Address Length
+                        _Y12)
+                    Memory32Fixed (ReadWrite,
+                        0xFEC00000,         // Address Base
+                        0x00001000,         // Address Length
+                        )
+                    Memory32Fixed (ReadWrite,
+                        0xFEE00000,         // Address Base
+                        0x00001000,         // Address Length
+                        )
+                })
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y0D._BAS, ACMM)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._BAS, RMA1)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y0E._LEN, RSS1)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._BAS, RMA2)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y0F._LEN, RSS2)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y10._BAS, RMA3)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y10._LEN, RSS3)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y11._BAS, RMA4)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y11._LEN, RSS4)
+                CreateDWordField (BUF0, \_SB.MEM._CRS._Y12._LEN, EXTM)
+                Subtract (AMEM, 0x00100000, EXTM)
+                If (LNotEqual (ROM1, Zero))
+                {
+                    Store (RMA1, RMA2)
+                    ShiftLeft (ROM1, 0x08, Local0)
+                    Store (Local0, RMA1)
+                    ShiftLeft (RMS1, 0x08, Local0)
+                    Store (Local0, RSS1)
+                    Store (0x8000, RSS2)
+                }
+
+                If (LNotEqual (ROM2, Zero))
+                {
+                    Store (RMA2, RMA3)
+                    ShiftLeft (ROM2, 0x08, Local0)
+                    Store (Local0, RMA2)
+                    ShiftLeft (RMS2, 0x08, Local0)
+                    Store (Local0, RSS2)
+                    Store (0xC000, RSS3)
+                }
+
+                If (LNotEqual (ROM3, Zero))
+                {
+                    Store (RMA3, RMA4)
+                    ShiftLeft (ROM3, 0x08, Local0)
+                    Store (Local0, RMA3)
+                    ShiftLeft (RMS3, 0x08, Local0)
+                    Store (Local0, RSS3)
+                    Store (0x00010000, RSS4)
+                }
+
+                Store (AMEM, ACMM)
+                Return (BUF0)
+            }
+        }
+
+        Device (\_SB.PCI0.EXPL)
+        {
+            Name (_HID, EisaId ("PNP0C02"))
+            Name (_UID, 0x04)
+            Method (_CRS, 0, NotSerialized)
+            {
+                Name (BUF0, ResourceTemplate ()
+                {
+                    Memory32Fixed (ReadWrite,
+                        0xF0000000,         // Address Base
+                        0x08000000,         // Address Length
+                        )
+                })
+                Return (BUF0)
+            }
+        }
+    }
+}
+
Index: Options.lb
===================================================================
--- Options.lb	(revision 3968)
+++ Options.lb	(working copy)
@@ -169,7 +169,7 @@
 default HAVE_MP_TABLE=1
 
 ## ACPI tables will be included
-default HAVE_ACPI_TABLES=0
+default HAVE_ACPI_TABLES=1
 
 ##
 ## Build code to export a CMOS option table
Index: acpi_tables.c
===================================================================
--- acpi_tables.c	(revision 0)
+++ acpi_tables.c	(revision 0)
@@ -0,0 +1,140 @@
+#include <console/console.h>
+#include <string.h>
+#include <arch/acpi.h>
+#include <arch/smp/mpspec.h>
+#include <device/device.h>
+#include <device/pci_ids.h>
+#include <device/pci_def.h>
+
+
+extern unsigned char AmlCode[];
+
+unsigned long acpi_fill_mcfg(unsigned long current)
+{
+        /*device_t dev;
+        struct resource *res;
+
+        dev = dev_find_device(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_MCP55_PCI, 0);
+        if (!dev)
+                return current;
+
+        res = find_resource(dev, 0x90);
+        if (res) {
+                current += acpi_create_mcfg_mmconfig((acpi_mcfg_mmconfig_t *)current, res->base, 0x0, 0x0, 0xff); //acpi.c
+        }*/
+        return current;
+}
+
+unsigned long acpi_fill_madt(unsigned long current)
+{
+	unsigned long apic_addr;
+	device_t dev;
+
+	/* create all subtables for processors */
+	current = acpi_create_madt_lapics(current);
+
+	dev = dev_find_slot(0x0, PCI_DEVFN(0x1,0));
+	if (dev) {
+		apic_addr = pci_read_config32(dev, PCI_BASE_ADDRESS_1) & ~0xf;
+		current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *) current, 2,
+						   apic_addr, 0);
+	}
+	
+	dev = dev_find_slot(0x18, PCI_DEVFN(0x0,1));
+	if (dev) {
+		apic_addr = pci_read_config32(dev, PCI_BASE_ADDRESS_0) & ~0xf;
+		current += acpi_create_madt_ioapic((acpi_madt_ioapic_t *) current, 2,
+						   apic_addr, 0);
+	}
+
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) current, 0, 0, 2, 0x0);
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) current, 0, 9, 9, 0xd);
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) current, 0, 14, 14, 0x5);
+	current += acpi_create_madt_irqoverride((acpi_madt_irqoverride_t *) current, 0, 15, 15, 0x5);
+	
+	current = acpi_create_madt_lapic_nmis(current, 0, 1);
+}
+
+
+/*unsigned long acpi_fill_ssdt_generator(unsigned long current, char *oem_table_id) {
+	k8acpi_write_vars();
+	amd_model_fxx_generate_powernow(0, 0, 0);
+	return (unsigned long) (acpigen_get_current());
+}*/
+
+
+unsigned long write_acpi_tables(unsigned long start)
+{
+	unsigned long current;
+	acpi_rsdp_t *rsdp;
+	acpi_srat_t *srat;
+	acpi_rsdt_t *rsdt;
+	acpi_mcfg_t *mcfg;
+	acpi_hpet_t *hpet;
+	acpi_madt_t *madt;
+	acpi_fadt_t *fadt;
+	acpi_facs_t *facs;
+	acpi_header_t *dsdt;
+
+	/* Align ACPI tables to 16 byte. */
+	start = (start + 0x0f) & -0x10;
+	current = start;
+
+	printk_info("ACPI: Writing ACPI tables at %lx...\n", start);
+
+	/* We need at least an RSDP and an RSDT table. */
+	rsdp = (acpi_rsdp_t *) current;
+	current += sizeof(acpi_rsdp_t);
+	rsdt = (acpi_rsdt_t *) current;
+	current += sizeof(acpi_rsdt_t);
+
+	/* Clear all table memory. */
+	memset((void *) start, 0, current - start);
+
+	acpi_write_rsdp(rsdp, rsdt);
+	acpi_write_rsdt(rsdt);
+
+	/* We explicitly add these tables later on: */
+	printk_debug("ACPI:     * FACS\n");
+	facs = (acpi_facs_t *) current;
+	current += sizeof(acpi_facs_t);
+	acpi_create_facs(facs);
+
+	dsdt = (acpi_header_t *) current;
+	current += ((acpi_header_t *) AmlCode)->length;
+	memcpy((void *) dsdt, (void *) AmlCode,
+	       ((acpi_header_t *) AmlCode)->length);
+	dsdt->checksum = 0;	/* Don't trust iasl to get this right. */
+	dsdt->checksum = acpi_checksum(dsdt, dsdt->length);
+	printk_debug("ACPI:     * DSDT @ %08x Length %x\n", dsdt,
+		     dsdt->length);
+	printk_debug("ACPI:     * FADT\n");
+
+	fadt = (acpi_fadt_t *) current;
+	current += sizeof(acpi_fadt_t);
+
+	acpi_create_fadt(fadt, facs, dsdt);
+	acpi_add_table(rsdt, fadt);
+
+	/* If we want to use HPET timers Linux wants it in MADT. */
+	printk_debug("ACPI:    * MADT\n");
+	madt = (acpi_madt_t *) current;
+	acpi_create_madt(madt);
+	current += madt->header.length;
+	acpi_add_table(rsdt, madt);
+	printk_debug("ACPI:    * MCFG\n");
+	mcfg = (acpi_mcfg_t *) current;
+	acpi_create_mcfg(mcfg);
+	current += mcfg->header.length;
+	acpi_add_table(rsdt, mcfg);
+
+	printk_debug("ACPI:    * SRAT\n");
+	srat = (acpi_srat_t *) current;
+	acpi_create_srat(srat);
+	current += srat->header.length;
+	acpi_add_table(rsdt, srat);
+
+	printk_info("ACPI: done.\n");
+	return current;
+}
+//edc
Index: fadt.c
===================================================================
--- fadt.c	(revision 0)
+++ fadt.c	(revision 0)
@@ -0,0 +1,159 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2004 Nick Barker <nick.barker9@btinternet.com>
+ * Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ */
+
+#include <console/console.h>
+#include <string.h>
+#include <arch/acpi.h>
+#include <../../../southbridge/nvidia/mcp55/chip.h>
+#include <../../../southbridge/nvidia/mcp55/mcp55_early_setup_ss.h>
+#include <../../../southbridge/nvidia/mcp55/mcp55_smbus.h>
+
+extern unsigned pm_base;
+
+/**
+ * Create the Fixed ACPI Description Tables (FADT) for this board.
+ */
+void acpi_create_fadt(acpi_fadt_t *fadt, acpi_facs_t *facs, void *dsdt)
+{
+	acpi_header_t *header = &(fadt->header);
+
+	memset((void *) fadt, 0, sizeof(acpi_fadt_t));
+	memcpy(header->signature, "FACP", 4);
+	header->length = 74;
+	header->revision = 1;
+	memcpy(header->oem_id, "GBT", 6);
+	memcpy(header->oem_table_id, "NVDAACPI ", 8);
+	memcpy(header->asl_compiler_id, "NVDA", 4);
+	header->asl_compiler_revision = "01010101";
+	
+	printk_info("ACPI: pm_base: %u...\n", pm_base);
+	
+	fadt->firmware_ctrl = facs;
+	fadt->dsdt = dsdt;
+	fadt->preferred_pm_profile = 1;
+	fadt->sci_int = 9;
+	fadt->smi_cmd = 0x142e;
+	fadt->acpi_enable = 0xa1;
+	fadt->acpi_disable = 0xa0;
+	fadt->s4bios_req = 0x0;
+	fadt->pstate_cnt = 0x0;
+
+	fadt->pm1a_evt_blk = pm_base;
+	fadt->pm1b_evt_blk = 0x1;
+	fadt->pm1a_cnt_blk = pm_base + 0x4;
+	fadt->pm1b_cnt_blk = 0x0;
+	fadt->pm2_cnt_blk = pm_base + 0x1c;
+	fadt->pm_tmr_blk = pm_base + 0x8;
+	fadt->gpe0_blk = pm_base + 0x20;
+	fadt->gpe1_blk = pm_base + 0x4a0;
+
+	fadt->pm1_evt_len = 4;
+	fadt->pm1_cnt_len = 2;
+	fadt->pm2_cnt_len = 1;
+	fadt->pm_tmr_len = 4;
+	fadt->gpe0_blk_len = 8;
+	fadt->gpe1_blk_len = 10;
+	fadt->gpe1_base = 20;
+	fadt->cst_cnt = 0;
+	fadt->p_lvl2_lat = 0x65;
+	fadt->p_lvl3_lat = 0x3e9;
+	fadt->flush_size = 0;
+	fadt->flush_stride = 0;
+	fadt->duty_offset = 1;
+	fadt->duty_width = 3;	
+	fadt->day_alrm = 0x7d;
+	fadt->mon_alrm = 0x7e;
+	fadt->century = 0x32;
+	
+	fadt->iapc_boot_arch = 0x1;
+	
+	fadt->flags = 0x4a5;
+	fadt->reset_reg.space_id = 0;
+	fadt->reset_reg.bit_width = 0;
+	fadt->reset_reg.bit_offset = 0;
+	fadt->reset_reg.resv = 0;
+	fadt->reset_reg.addrl = 0x0;
+	fadt->reset_reg.addrh = 0x0;
+
+	fadt->reset_value = 0;
+	fadt->x_firmware_ctl_l = facs;
+	fadt->x_firmware_ctl_h = 0;
+	fadt->x_dsdt_l = dsdt;
+	fadt->x_dsdt_h = 0;
+
+	fadt->x_pm1a_evt_blk.space_id = 1;
+	fadt->x_pm1a_evt_blk.bit_width = 4;
+	fadt->x_pm1a_evt_blk.bit_offset = 0;
+	fadt->x_pm1a_evt_blk.resv = 0;
+	fadt->x_pm1a_evt_blk.addrl = pm_base;
+	fadt->x_pm1a_evt_blk.addrh = 0x0;
+
+	fadt->x_pm1b_evt_blk.space_id = 1;
+	fadt->x_pm1b_evt_blk.bit_width = 4;
+	fadt->x_pm1b_evt_blk.bit_offset = 0;
+	fadt->x_pm1b_evt_blk.resv = 0;
+	fadt->x_pm1b_evt_blk.addrl = 0x0;
+	fadt->x_pm1b_evt_blk.addrh = 0x0;
+
+	fadt->x_pm1a_cnt_blk.space_id = 1;
+	fadt->x_pm1a_cnt_blk.bit_width = 2;
+	fadt->x_pm1a_cnt_blk.bit_offset = 0;
+	fadt->x_pm1a_cnt_blk.resv = 0;
+	fadt->x_pm1a_cnt_blk.addrl = pm_base + 0x4;
+	fadt->x_pm1a_cnt_blk.addrh = 0x0;
+
+	fadt->x_pm1b_cnt_blk.space_id = 1;
+	fadt->x_pm1b_cnt_blk.bit_width = 2;
+	fadt->x_pm1b_cnt_blk.bit_offset = 0;
+	fadt->x_pm1b_cnt_blk.resv = 0;
+	fadt->x_pm1b_cnt_blk.addrl = 0x0;
+	fadt->x_pm1b_cnt_blk.addrh = 0x0;
+
+	fadt->x_pm2_cnt_blk.space_id = 1;
+	fadt->x_pm2_cnt_blk.bit_width = 0;
+	fadt->x_pm2_cnt_blk.bit_offset = 0;
+	fadt->x_pm2_cnt_blk.resv = 0;
+	fadt->x_pm2_cnt_blk.addrl = pm_base + 0x1c;
+	fadt->x_pm2_cnt_blk.addrh = 0x0;
+
+	fadt->x_pm_tmr_blk.space_id = 1;
+	fadt->x_pm_tmr_blk.bit_width = 4;
+	fadt->x_pm_tmr_blk.bit_offset = 0;
+	fadt->x_pm_tmr_blk.resv = 0;
+	fadt->x_pm_tmr_blk.addrl = pm_base + 0x8;
+	fadt->x_pm_tmr_blk.addrh = 0x0;
+
+	fadt->x_gpe0_blk.space_id = 1;
+	fadt->x_gpe0_blk.bit_width = 0;
+	fadt->x_gpe0_blk.bit_offset = 0;
+	fadt->x_gpe0_blk.resv = 0;
+	fadt->x_gpe0_blk.addrl = pm_base + 0x20;
+	fadt->x_gpe0_blk.addrh = 0x0;
+
+	fadt->x_gpe1_blk.space_id = 1;
+	fadt->x_gpe1_blk.bit_width = 0;
+	fadt->x_gpe1_blk.bit_offset = 0;
+	fadt->x_gpe1_blk.resv = 0;
+	fadt->x_gpe1_blk.addrl = pm_base + 0x4a0;
+	fadt->x_gpe1_blk.addrh = 0x0;
+
+	header->checksum = acpi_checksum((void *) fadt, sizeof(acpi_fadt_t));
+}
Index: Config.lb
===================================================================
--- Config.lb	(revision 3968)
+++ Config.lb	(working copy)
@@ -109,7 +109,22 @@
     end
 end
 
+##
+##	experimental acpi support
+##
+if HAVE_ACPI_TABLES
 
+        object acpi_tables.o
+	object fadt.o
+	makerule dsdt.c
+		depends "$(MAINBOARD)/dsdt.dsl"
+		action  "iasl -p $(PWD)/dsdt -tc $(MAINBOARD)/dsdt.dsl"
+		action  "mv dsdt.hex dsdt.c"
+	end
+        object ./dsdt.o
+end
+
+
 ##
 ## Build our 16 bit and 32 bit coreboot entry code
 ##
