All pastes #293602 Raw Edit

Mine

public text v1 · immutable
#293602 ·published 2006-12-27 19:25 UTC
rendered paste body
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20060608
 *
 * Disassembly of dsdt.aml, Wed Dec 27 10:24:21 2006
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000030F2 (12530)
 *     Revision         0x01
 *     OEM ID           "DELL"
 *     OEM Table ID     "dt_ex"
 *     OEM Revision     0x00001000 (4096)
 *     Creator ID       "MSFT"
 *     Creator Revision 0x0100000D (16777229)
 */
DefinitionBlock ("dsdt.aml", "DSDT", 1, "DELL", "dt_ex", 0x00001000)
{
    Method (DBIN, 0, NotSerialized)
    {
        Noop
    }

    Scope (\)
    {
        Device (\_SB.VBTN)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_PRW, Package (0x02)
            {
                0x01, 
                0x04
            })
        }

        OperationRegion (\SSTS, SystemIO, 0x0828, 0x01)
        Field (\SSTS, ByteAcc, NoLock, WriteAsZeros)
        {
            TSTS,   1
        }

        OperationRegion (\SACT, SystemIO, 0x082A, 0x01)
        Field (\SACT, ByteAcc, NoLock, WriteAsZeros)
        {
                ,   2, 
            TPOL,   1
        }
    }

    Scope (\_GPE)
    {
        Method (_L00, 0, NotSerialized)
        {
            Store (0x00, TPOL)
            Store (0x01, TSTS)
            Notify (\_SB.VBTN, 0x02)
        }
    }

    Scope (\_SB)
    {
        Method (_INI, 0, NotSerialized)
        {
            If (CondRefOf (_OSI, Local0))
            {
                If (\_OSI ("Windows 2001"))
                {
                    Store (0x04, MSOS)
                }
            }
        }
    }

    Scope (\)
    {
        Name (MSOS, 0x00)
        Mutex (MTX, 0x01)
        Method (CMRD, 1, NotSerialized)
        {
            Acquire (SMIM, 0xFFFF)
            Store (Arg0, Local0)
            And (Local0, 0x7F, Local0)
            Store (Local0, SMID)
            Store (0x84, SMIC)
            Store (0x85, SMIC)
            Store (SMID, Local0)
            Release (SMIM)
            Return (Local0)
        }

        Method (CMWR, 2, NotSerialized)
        {
            Acquire (SMIM, 0xFFFF)
            Store (Arg0, Local0)
            Or (Local0, 0x80, Local0)
            Store (Local0, SMID)
            Store (0x84, SMIC)
            Store (Arg1, SMID)
            Store (0x85, SMIC)
            Release (SMIM)
        }

        Method (GCKB, 0, NotSerialized)
        {
            Return (And (0x20, CMRD (0x26)))
        }

        Method (GCMS, 0, NotSerialized)
        {
            Return (And (0x40, CMRD (0x6F)))
        }

        Method (GCON, 0, NotSerialized)
        {
            Return (And (0x04, CMRD (0x55)))
        }

        Method (GCUC, 0, NotSerialized)
        {
            Return (XOr (0x01, CMRD (0x22)))
        }

        Method (GCS1, 0, NotSerialized)
        {
            Return (And (0x03, CMRD (0x25)))
        }

        Method (GCS2, 0, NotSerialized)
        {
            Return (And (0x0C, CMRD (0x25)))
        }

        Method (GCFD, 0, NotSerialized)
        {
            Return (And (0x18, CMRD (0x55)))
        }

        Method (GCPP, 0, NotSerialized)
        {
            Return (And (0x70, CMRD (0x23)))
        }

        Method (GCTP, 0, NotSerialized)
        {
            Return (And (0x40, CMRD (0x22)))
        }

        Method (GCNC, 0, NotSerialized)
        {
            Return (And (0x03, CMRD (0x59)))
        }

        Method (HACK, 0, NotSerialized)
        {
            If (LEqual (MSOS, 0x04))
            {
                Store (CMRD (0x6F), Local0)
                Or (Local0, 0x04, Local0)
                CMWR (0x6F, Local0)
                Return (One)
            }
            Else
            {
                Store (CMRD (0x6F), Local0)
                And (Local0, 0xFB, Local0)
                CMWR (0x6F, Local0)
            }

            Add (SizeOf (\_OS), 0x01, Local0)
            Store (Local0, Local1)
            Name (BUF0, Buffer (Local0) {})
            Name (BUF1, Buffer (Local0) {})
            Name (OSNT, 0x01)
            Name (OS98, 0x01)
            Store (\_OS, BUF0)
            Store ("Microsoft Windows NT", BUF1)
            While (Local0)
            {
                Decrement (Local0)
                If (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, 
                    Local0)))) {}
                Else
                {
                    Store (0x00, OSNT)
                }
            }

            If (OSNT)
            {
                Store (0x03, MSOS)
                Return (One)
            }
            Else
            {
                Store ("Microsoft Windows", BUF1)
                While (Local1)
                {
                    Decrement (Local1)
                    If (LEqual (DerefOf (Index (BUF0, Local1)), DerefOf (Index (BUF1, 
                        Local1)))) {}
                    Else
                    {
                        Store (0x00, OS98)
                    }
                }

                If (OS98)
                {
                    Store (0x01, MSOS)
                    Return (Zero)
                }
                Else
                {
                    Store (0x02, MSOS)
                    Return (Zero)
                }
            }
        }

        Method (ISLI, 0, NotSerialized)
        {
            If (CondRefOf (_OSI, Local0))
            {
                If (\_OSI ("Linux"))
                {
                    Return (One)
                }
                Else
                {
                    Return (Zero)
                }
            }
            Else
            {
                Return (Zero)
            }
        }
    }

    Scope (\_SB)
    {
    }

    OperationRegion (CMS, SystemIO, 0x70, 0x02)
    Field (CMS, ByteAcc, NoLock, Preserve)
    {
        CMSI,   8, 
        CMSD,   8
    }

    OperationRegion (SMIR, SystemIO, 0xB2, 0x02)
    Field (SMIR, ByteAcc, NoLock, Preserve)
    {
        SMIC,   8, 
        SMID,   8
    }

    OperationRegion (PM1R, SystemIO, 0x0800, 0x04)
    Field (PM1R, ByteAcc, NoLock, Preserve)
    {
        PMS1,   8, 
        PMS2,   8, 
        PME1,   8, 
        PME2,   8
    }

    OperationRegion (GLBC, SystemIO, 0x0828, 0x06)
    Field (GLBC, ByteAcc, NoLock, Preserve)
    {
        THRP,   8, 
        GLBT,   8, 
        EOS,    8, 
        LIDP,   8, 
        THME,   8, 
        RIEN,   8
    }

    OperationRegion (PXY0, SystemIO, 0x0929, 0x01)
    Field (PXY0, ByteAcc, NoLock, Preserve)
    {
            ,   1, 
        CHAS,   3, 
                Offset (0x01)
    }

    OperationRegion (SIO, SystemIO, 0x2E, 0x02)
    Field (SIO, ByteAcc, NoLock, Preserve)
    {
        SIOI,   8, 
        SIOD,   8
    }

    OperationRegion (PMES, SystemIO, 0x0C00, 0x01)
    Field (PMES, ByteAcc, NoLock, Preserve)
    {
        GSTS,   8
    }

    Mutex (SMIM, 0x01)
    Method (SMI2, 1, NotSerialized)
    {
        Acquire (SMIM, 0xFFFF)
        Store (Arg0, SMIC)
        Store (SMIC, Local0)
        Store (SMID, Local0)
        ShiftLeft (Local0, 0x08, Local0)
        Add (SMIC, Local0, Local0)
        Release (SMIM)
        Return (Local0)
    }

    Method (SMI4, 1, NotSerialized)
    {
        Add (Arg0, 0x01, Local0)
        Store (SMI2 (Arg0), Local2)
        Store (SMI2 (Local0), Local1)
        ShiftLeft (Local1, 0x10, Local1)
        Add (Local1, Local2, Local0)
        Return (Local0)
    }

    Method (GTMR, 0, NotSerialized)
    {
        Return (SMI4 (0x78))
    }

    Method (GTML, 0, NotSerialized)
    {
        Return (SMI4 (0x74))
    }

    Method (GTMH, 0, NotSerialized)
    {
        Return (SMI4 (0x76))
    }

    Method (GTOM, 0, NotSerialized)
    {
        Return (SMI4 (0x81))
    }

    Method (GUSB, 0, NotSerialized)
    {
        If (ISLI ())
        {
            Return (0x00)
        }
        Else
        {
            Return (SMI2 (0xBA))
        }
    }

    Scope (\_PR)
    {
        Processor (CPU0, 0x01, 0x00000810, 0x06) {}
        Processor (CPU1, 0x02, 0x00000000, 0x00) {}
    }

    Scope (\)
    {
        Name (SSTX, 0x00)
        Method (\_PTS, 1, NotSerialized)
        {
            PSKM (Arg0)
        }
    }

    Method (\_GPE._L08, 0, NotSerialized)
    {
        GPKM ()
        If (Not (LEqual (SSTX, 0x01)))
        {
            Notify (\_SB.VBTN, 0x02)
        }

        Notify (\_SB.PCI0.ISA.KBD, 0x02)
    }

    Method (\_GPE._L09, 0, NotSerialized)
    {
        XOr (GLBT, 0x02, GLBT)
        Or (PME2, 0x01, PME2)
        If (LEqual (\_SB.PCI0.PCI2.XME2 (), 0x01))
        {
            Notify (\_SB.PCI0.PCI2, 0x02)
        }

        If (LEqual (\_SB.PCI0.PCI3.XME3 (), 0x01))
        {
            Notify (\_SB.PCI0.PCI3, 0x02)
        }

        If (LEqual (\_SB.PCI0.PCI4.XME4 (), 0x01))
        {
            Notify (\_SB.PCI0.PCI4, 0x02)
        }
    }

    Method (\_WAK, 1, NotSerialized)
    {
        If (LEqual (Arg0, 0x04))
        {
            GUSB ()
        }

        If (Or (And (PMS2, 0x01), Or (And (LNot (HACK ()), 
            And (GLBT, 0x11)), And (LNot (HACK ()), And (THRP, 0x18
            )))))
        {
            Notify (\_SB.VBTN, 0x02)
        }

        Return (Zero)
    }

    Scope (\_SI)
    {
        Method (_SST, 1, NotSerialized)
        {
            Store (Arg0, SSTX)
            If (LEqual (Arg0, 0x03))
            {
                And (LED2, 0xFD, LED2)
            }

            If (LEqual (Arg0, 0x01))
            {
                Or (LED2, 0x02, LED2)
            }
        }
    }

    Scope (\_SB)
    {
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x04)
            Name (_ADR, 0x00)
            Name (_PRW, Package (0x02)
            {
                0x0D, 
                0x05
            })
            Method (_S1D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (HACK ())
                {
                    Return (0x03)
                }
                Else
                {
                    Return (0x02)
                }
            }

            Name (PIC0, Package (0x0C)
            {
                Package (0x04)
                {
                    0x0001FFFF, 
                    0x00, 
                    LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x00, 
                    LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x01, 
                    LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x02, 
                    LNKE, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001EFFFF, 
                    0x00, 
                    LNKH, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x00, 
                    LNKF, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x01, 
                    LNKG, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x02, 
                    LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x03, 
                    LNKH, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001CFFFF, 
                    0x00, 
                    LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001CFFFF, 
                    0x01, 
                    LNKB, 
                    0x00
                }
            })
            Name (API0, Package (0x0C)
            {
                Package (0x04)
                {
                    0x0001FFFF, 
                    0x00, 
                    0x00, 
                    0x10
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    0x00, 
                    0x10
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x00, 
                    0x00, 
                    0x10
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x01, 
                    0x00, 
                    0x11
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x02, 
                    0x00, 
                    0x14
                }, 

                Package (0x04)
                {
                    0x001EFFFF, 
                    0x00, 
                    0x00, 
                    0x17
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x00, 
                    0x00, 
                    0x15
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x01, 
                    0x00, 
                    0x16
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x02, 
                    0x00, 
                    0x12
                }, 

                Package (0x04)
                {
                    0x001DFFFF, 
                    0x03, 
                    0x00, 
                    0x17
                }, 

                Package (0x04)
                {
                    0x001CFFFF, 
                    0x00, 
                    0x00, 
                    0x10
                }, 

                Package (0x04)
                {
                    0x001CFFFF, 
                    0x01, 
                    0x00, 
                    0x11
                }
            })
            Device (PCI1)
            {
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S4D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S5D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_ADR, 0, NotSerialized)
                {
                    Store (0x001E0000, Local0)
                    Return (Local0)
                }

                Name (_UID, 0x07)
                Name (_PRW, Package (0x02)
                {
                    0x0B, 
                    0x05
                })
                Name (PIC1, Package (0x11)
                {
                    Package (0x04)
                    {
                        0x0007FFFF, 
                        0x00, 
                        LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x00, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x01, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x02, 
                        LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x03, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x00, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x01, 
                        LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x02, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x03, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x00, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x01, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x02, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x03, 
                        LNKD, 
                        0x00
                    }
                })
                Name (API1, Package (0x11)
                {
                    Package (0x04)
                    {
                        0x0007FFFF, 
                        0x00, 
                        0x00, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        0x00, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x00, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x01, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x02, 
                        0x00, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x03, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x00, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x01, 
                        0x00, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x02, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x03, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x00, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x01, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x02, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x03, 
                        0x00, 
                        0x13
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Store (API1, Local0)
                    If (LNot (PICF))
                    {
                        Store (PIC1, Local0)
                    }

                    Return (Local0)
                }
            }

            Device (PCI2)
            {
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S4D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S5D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_ADR, 0, NotSerialized)
                {
                    Store (0x001C0000, Local0)
                    Return (Local0)
                }

                Name (_UID, 0x16)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x05
                })
                OperationRegion (RSTS, PCI_Config, 0x60, 0x04)
                Field (RSTS, ByteAcc, NoLock, Preserve)
                {
                    PID0,   8, 
                    PID1,   8, 
                    PMXS,   8, 
                    PNUS,   8
                }

                Method (XME2, 0, NotSerialized)
                {
                    Store (PMXS, Local0)
                    And (Local0, 0x01, Local0)
                    Store (Local0, PMXS)
                    Return (Local0)
                }

                Name (PIC2, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        LNKD, 
                        0x00
                    }
                })
                Name (API2, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        0x00, 
                        0x13
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Store (API2, Local0)
                    If (LNot (PICF))
                    {
                        Store (PIC2, Local0)
                    }

                    Return (Local0)
                }
            }

            Device (PCI3)
            {
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S4D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S5D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_ADR, 0, NotSerialized)
                {
                    Store (0x001C0001, Local0)
                    Return (Local0)
                }

                Name (_UID, 0x18)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x05
                })
                OperationRegion (RSTS, PCI_Config, 0x60, 0x04)
                Field (RSTS, ByteAcc, NoLock, Preserve)
                {
                    PID0,   8, 
                    PID1,   8, 
                    PMXS,   8, 
                    PNUS,   8
                }

                Method (XME3, 0, NotSerialized)
                {
                    Store (PMXS, Local0)
                    And (Local0, 0x01, Local0)
                    Store (Local0, PMXS)
                    Return (Local0)
                }

                Name (PIC3, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        LNKD, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        LNKA, 
                        0x00
                    }
                })
                Name (API3, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        0x00, 
                        0x13
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        0x00, 
                        0x10
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Store (API3, Local0)
                    If (LNot (PICF))
                    {
                        Store (PIC3, Local0)
                    }

                    Return (Local0)
                }
            }

            Device (PCI4)
            {
                Method (_S1D, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_S3D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S4D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_S5D, 0, NotSerialized)
                {
                    If (HACK ())
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x02)
                    }
                }

                Method (_ADR, 0, NotSerialized)
                {
                    Store (0x00010000, Local0)
                    Return (Local0)
                }

                Name (_UID, 0x19)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x05
                })
                OperationRegion (RSTS, PCI_Config, 0xC0, 0x04)
                Field (RSTS, ByteAcc, NoLock, Preserve)
                {
                    PID0,   8, 
                    PID1,   8, 
                    PMXS,   8, 
                    PNUS,   8
                }

                Method (XME4, 0, NotSerialized)
                {
                    Store (PMXS, Local0)
                    And (Local0, 0x01, Local0)
                    Store (Local0, PMXS)
                    Return (Local0)
                }

                Name (PIC4, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        LNKD, 
                        0x00
                    }
                })
                Name (API4, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        0x00, 
                        0x10
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        0x00, 
                        0x11
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        0x00, 
                        0x12
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        0x00, 
                        0x13
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Store (API4, Local0)
                    If (LNot (PICF))
                    {
                        Store (PIC4, Local0)
                    }

                    Return (Local0)
                }
            }
        }
    }

    Scope (\)
    {
        Method (\_GPE._L03, 0, NotSerialized)
        {
            If (Not (LEqual (SSTX, 0x01)))
            {
                Notify (\_SB.VBTN, 0x02)
            }

            Sleep (0x14)
            XOr (THRP, 0x08, THRP)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0.USB0, 0x02)
        }

        Method (\_GPE._L04, 0, NotSerialized)
        {
            If (Not (LEqual (SSTX, 0x01)))
            {
                Notify (\_SB.VBTN, 0x02)
            }

            Sleep (0x14)
            XOr (THRP, 0x10, THRP)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0.USB1, 0x02)
        }

        Method (\_GPE._L0C, 0, NotSerialized)
        {
            If (Not (LEqual (SSTX, 0x01)))
            {
                Notify (\_SB.VBTN, 0x02)
            }

            Sleep (0x14)
            XOr (GLBT, 0x10, GLBT)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0.USB2, 0x02)
        }

        Method (\_GPE._L0E, 0, NotSerialized)
        {
            If (Not (LEqual (SSTX, 0x01)))
            {
                Notify (\_SB.VBTN, 0x02)
            }

            Sleep (0x14)
            XOr (GLBT, 0x40, GLBT)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0.USB3, 0x02)
        }

        Method (\_GPE._L0D, 0, NotSerialized)
        {
            If (Not (LEqual (SSTX, 0x01)))
            {
                Notify (\_SB.VBTN, 0x02)
            }

            Sleep (0x14)
            XOr (GLBT, 0x20, GLBT)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0, 0x02)
        }

        Method (\_GPE._L0B, 0, NotSerialized)
        {
            XOr (GLBT, 0x08, GLBT)
            Or (PME2, 0x01, PME2)
            Notify (\_SB.PCI0.PCI1, 0x02)
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (ISA)
        {
            Name (_ADR, 0x001F0000)
            Name (_UID, 0x0A)
            OperationRegion (P40C, PCI_Config, 0x60, 0x04)
            OperationRegion (P41C, PCI_Config, 0x68, 0x04)
            Device (MBIO)
            {
                Name (_HID, EisaId ("PNP0C01"))
                Name (_UID, 0x0B)
                Method (_CRS, 0, NotSerialized)
                {
                    Name (MIO1, ResourceTemplate ()
                    {
                        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,
                            0x00E0,             // Range Minimum
                            0x00E0,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x60,               // Length
                            )
                        IO (Decode16,
                            0x0C00,             // Range Minimum
                            0x0C00,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0860,             // Range Minimum
                            0x0860,             // Range Maximum
                            0x01,               // Alignment
                            0xA0,               // Length
                            )
                    })
                    Name (MIO2, 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
                            )
                        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,
                            0x00E0,             // Range Minimum
                            0x00E0,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x60,               // Length
                            )
                        IO (Decode16,
                            0x0C00,             // Range Minimum
                            0x0C00,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0860,             // Range Minimum
                            0x0860,             // Range Maximum
                            0x01,               // Alignment
                            0xA0,               // Length
                            )
                    })
                    If (Or (GCKB (), GCMS ()))
                    {
                        Return (MIO1)
                    }
                    Else
                    {
                        Return (MIO2)
                    }
                }
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Device (USB0)
        {
            Name (_ADR, 0x001D0000)
            Name (_UID, 0x05)
            Name (_PRW, Package (0x02)
            {
                0x03, 
                0x03
            })
            OperationRegion (UPC1, PCI_Config, 0xC1, 0x01)
            Field (UPC1, ByteAcc, NoLock, Preserve)
            {
                LEGK,   8
            }

            Method (_INI, 0, NotSerialized)
            {
                If (HACK ()) {}
                Else
                {
                    Store (LEGK, Local0)
                    And (Local0, 0x60, Local0)
                    Or (Local0, 0x20, Local0)
                    Store (Local0, LEGK)
                }

                GUSB ()
            }

            Method (_STA, 0, NotSerialized)
            {
                If (GCUC ())
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_S1D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (HACK ())
                {
                    Return (0x03)
                }
                Else
                {
                    Return (0x02)
                }
            }
        }

        Device (USB1)
        {
            Name (_ADR, 0x001D0001)
            Name (_UID, 0x06)
            Name (_PRW, Package (0x02)
            {
                0x04, 
                0x03
            })
            OperationRegion (UPC1, PCI_Config, 0xC1, 0x01)
            Field (UPC1, ByteAcc, NoLock, Preserve)
            {
                LEGK,   8
            }

            Method (_INI, 0, NotSerialized)
            {
                If (HACK ()) {}
                Else
                {
                    Store (LEGK, Local0)
                    And (Local0, 0x60, Local0)
                    Or (Local0, 0x20, Local0)
                    Store (Local0, LEGK)
                }
            }

            Method (_STA, 0, NotSerialized)
            {
                If (GCUC ())
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_S1D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (HACK ())
                {
                    Return (0x03)
                }
                Else
                {
                    Return (0x02)
                }
            }
        }

        Device (USB2)
        {
            Name (_ADR, 0x001D0002)
            Name (_UID, 0x14)
            Name (_PRW, Package (0x02)
            {
                0x0C, 
                0x03
            })
            OperationRegion (UPC1, PCI_Config, 0xC1, 0x01)
            Field (UPC1, ByteAcc, NoLock, Preserve)
            {
                LEGK,   8
            }

            Method (_INI, 0, NotSerialized)
            {
                If (HACK ()) {}
                Else
                {
                    Store (LEGK, Local0)
                    And (Local0, 0x60, Local0)
                    Or (Local0, 0x20, Local0)
                    Store (Local0, LEGK)
                }
            }

            Method (_STA, 0, NotSerialized)
            {
                If (GCUC ())
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_S1D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (HACK ())
                {
                    Return (0x03)
                }
                Else
                {
                    Return (0x02)
                }
            }
        }

        Device (USB3)
        {
            Name (_ADR, 0x001D0003)
            Name (_UID, 0x15)
            Name (_PRW, Package (0x02)
            {
                0x0E, 
                0x03
            })
            OperationRegion (UPC1, PCI_Config, 0xC1, 0x01)
            Field (UPC1, ByteAcc, NoLock, Preserve)
            {
                LEGK,   8
            }

            Method (_INI, 0, NotSerialized)
            {
                If (HACK ()) {}
                Else
                {
                    Store (LEGK, Local0)
                    And (Local0, 0x60, Local0)
                    Or (Local0, 0x20, Local0)
                    Store (Local0, LEGK)
                }
            }

            Method (_STA, 0, NotSerialized)
            {
                If (GCUC ())
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_S1D, 0, NotSerialized)
            {
                Return (0x01)
            }

            Method (_S3D, 0, NotSerialized)
            {
                If (HACK ())
                {
                    Return (0x03)
                }
                Else
                {
                    Return (0x02)
                }
            }
        }
    }

    Scope (\)
    {
        Name (PICF, 0x00)
        Method (_PIC, 1, NotSerialized)
        {
            Store (Arg0, PICF)
        }
    }

    Scope (\_SB.PCI0)
    {
        Method (_PRT, 0, NotSerialized)
        {
            Store (API0, Local0)
            If (LNot (PICF))
            {
                Store (PIC0, Local0)
            }

            Return (Local0)
        }

        Method (_CRS, 0, NotSerialized)
        {
            Name (MEMP, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, 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
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _X00, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xDFFFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _X01, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinNotFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xF0000000,         // Range Minimum
                    0xFEBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0EC00000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
            })
            CreateDWordField (MEMP, \_SB.PCI0._CRS._X00._MIN, PMIN)
            CreateDWordField (MEMP, \_SB.PCI0._CRS._X00._MAX, PMAX)
            CreateDWordField (MEMP, \_SB.PCI0._CRS._X00._LEN, PLEN)
            If (LNot (HACK ()))
            {
                Store (0x000C8000, PMIN)
                Store (0x000DFFFF, PMAX)
                Store (0x00018000, PLEN)
            }

            CreateDWordField (MEMP, \_SB.PCI0._CRS._X01._MIN, MEMM)
            CreateDWordField (MEMP, \_SB.PCI0._CRS._X01._LEN, MEML)
            Store (GTOM (), MEMM)
            Subtract (0xDFFFFFFF, MEMM, MEML)
            Increment (MEML)
            Return (MEMP)
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (DMA)
        {
            Name (_HID, EisaId ("PNP0200"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (DMAB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0080,             // Range Minimum
                        0x0080,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x0000,             // Range Minimum
                        0x0000,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x00C0,             // Range Minimum
                        0x00C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    DMA (Compatibility, NotBusMaster, Transfer16, )
                        {4}
                })
                Return (DMAB)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (FPU)
        {
            Name (_HID, EisaId ("PNP0C04"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (FPUB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x00F0,             // Range Minimum
                        0x00F0,             // Range Maximum
                        0x01,               // Alignment
                        0x10,               // Length
                        )
                    IRQNoFlags ()
                        {13}
                })
                Return (FPUB)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (PIC)
        {
            Name (_HID, EisaId ("PNP0000"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (PICB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0020,             // Range Minimum
                        0x0020,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x00A0,             // Range Minimum
                        0x00A0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x04D0,             // Range Minimum
                        0x04D0,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IRQNoFlags ()
                        {2}
                })
                Return (PICB)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (SPK)
        {
            Name (_HID, EisaId ("PNP0800"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (SPKB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0061,             // Range Minimum
                        0x0061,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                })
                Return (SPKB)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (RTC)
        {
            Name (_HID, EisaId ("PNP0B00"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (RTCB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0070,             // Range Minimum
                        0x0070,             // Range Maximum
                        0x01,               // Alignment
                        0x10,               // Length
                        )
                    IRQNoFlags ()
                        {8}
                })
                Return (RTCB)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (TMR)
        {
            Name (_HID, EisaId ("PNP0100"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (TMRB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0040,             // Range Minimum
                        0x0040,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                    IRQNoFlags ()
                        {0}
                })
                Return (TMRB)
            }
        }
    }

    Scope (\_SB)
    {
        Field (\_SB.PCI0.ISA.P40C, ByteAcc, NoLock, Preserve)
        {
            PRQ0,   8, 
            PRQ1,   8, 
            PRQ2,   8, 
            PRQ3,   8
        }

        Field (\_SB.PCI0.ISA.P41C, ByteAcc, NoLock, Preserve)
        {
            PRQ4,   8, 
            PRQ5,   8, 
            PRQ6,   8, 
            PRQ7,   8
        }

        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0C)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ0, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ0, 0x80, PRQ0)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR0, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X02)
                        {4}
                })
                CreateWordField (PRR0, \_SB.LNKA._CRS._X02._INT, IQR)
                Store (PRQ0, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR0)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ0)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0D)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ1, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ1, 0x80, PRQ1)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR1, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X03)
                        {4}
                })
                CreateWordField (PRR1, \_SB.LNKB._CRS._X03._INT, IQR)
                Store (PRQ1, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR1)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ1)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0E)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ2, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ2, 0x80, PRQ2)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR2, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X04)
                        {4}
                })
                CreateWordField (PRR2, \_SB.LNKC._CRS._X04._INT, IQR)
                Store (PRQ2, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR2)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ2)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x0F)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ3, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ3, 0x80, PRQ3)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR3, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X05)
                        {4}
                })
                CreateWordField (PRR3, \_SB.LNKD._CRS._X05._INT, IQR)
                Store (PRQ3, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR3)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ3)
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x10)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ4, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ4, 0x80, PRQ4)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR4, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X06)
                        {4}
                })
                CreateWordField (PRR4, \_SB.LNKE._CRS._X06._INT, IQR)
                Store (PRQ4, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR4)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ4)
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x11)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ5, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ5, 0x80, PRQ5)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR5, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X07)
                        {4}
                })
                CreateWordField (PRR5, \_SB.LNKF._CRS._X07._INT, IQR)
                Store (PRQ5, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR5)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ5)
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x12)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ6, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ6, 0x80, PRQ6)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR6, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X08)
                        {4}
                })
                CreateWordField (PRR6, \_SB.LNKG._CRS._X08._INT, IQR)
                Store (PRQ6, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR6)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ6)
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x13)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,6,7,9,10,11,12,15}
            })
            Method (_STA, 0, NotSerialized)
            {
                Store (0x0B, Local0)
                If (And (0x80, PRQ7, Local1))
                {
                    Store (0x09, Local0)
                }

                Return (Local0)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Or (PRQ7, 0x80, PRQ7)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PRR7, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _X09)
                        {4}
                })
                CreateWordField (PRR7, \_SB.LNKH._CRS._X09._INT, IQR)
                Store (PRQ7, Local0)
                If (LGreaterEqual (Local0, 0x80))
                {
                    Store (Zero, IQR)
                }
                Else
                {
                    ShiftLeft (One, Local0, IQR)
                }

                Return (PRR7)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IQR)
                FindSetRightBit (IQR, Local0)
                Decrement (Local0)
                Store (Local0, PRQ7)
            }
        }
    }

    Scope (\_SB)
    {
        Device (MEM1)
        {
            Name (_HID, EisaId ("PNP0C01"))
            Name (_UID, 0x01)
            Method (_CRS, 0, NotSerialized)
            {
                Name (MMB1, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x000A0000,         // Address Length
                        _X0A)
                    Memory32Fixed (ReadWrite,
                        0x00100000,         // Address Base
                        0x00000000,         // Address Length
                        _X0B)
                    Memory32Fixed (ReadWrite,
                        0x01000000,         // Address Base
                        0x00000000,         // Address Length
                        _X0C)
                    Memory32Fixed (ReadOnly,
                        0x00000000,         // Address Base
                        0x00000000,         // Address Length
                        _X0D)
                    Memory32Fixed (ReadWrite,
                        0xFEC00000,         // Address Base
                        0x00100000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFEE00000,         // Address Base
                        0x00100000,         // Address Length
                        )
                    Memory32Fixed (ReadOnly,
                        0xFED20000,         // Address Base
                        0x00080000,         // Address Length
                        )
                    Memory32Fixed (ReadOnly,
                        0xFFB00000,         // Address Base
                        0x00100000,         // Address Length
                        )
                    Memory32Fixed (ReadOnly,
                        0xFFC00000,         // Address Base
                        0x00400000,         // Address Length
                        )
                })
                CreateDWordField (MMB1, \_SB.MEM1._CRS._X0A._LEN, MEMR)
                CreateDWordField (MMB1, \_SB.MEM1._CRS._X0B._LEN, MEML)
                CreateDWordField (MMB1, \_SB.MEM1._CRS._X0C._LEN, MEMH)
                Store (GTMR (), MEMR)
                Store (GTML (), MEML)
                Store (GTMH (), MEMH)
                CreateDWordField (MMB1, \_SB.MEM1._CRS._X0D._BAS, SBML)
                CreateDWordField (MMB1, \_SB.MEM1._CRS._X0D._LEN, SBMR)
                If (HACK ())
                {
                    Store (0x000C0000, SBML)
                    Store (0x00040000, SBMR)
                }
                Else
                {
                    Store (0x000F0000, SBML)
                    Store (0x00010000, SBMR)
                }

                Return (MMB1)
            }
        }

        Device (MEM2)
        {
            Name (_HID, EisaId ("PNP0C02"))
            Name (_UID, 0x17)
            Method (_CRS, 0, NotSerialized)
            {
                Name (MMB2, ResourceTemplate ()
                {
                    Memory32Fixed (ReadOnly,
                        0xE0000000,         // Address Base
                        0x10000000,         // Address Length
                        )
                    Memory32Fixed (ReadOnly,
                        0xFEDA0000,         // Address Base
                        0x0000D000,         // Address Length
                        )
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0200,             // Range Minimum
                        0x0200,             // Range Maximum
                        0x10,               // Alignment
                        0x78,               // Length
                        )
                    IO (Decode16,
                        0x0280,             // Range Minimum
                        0x0280,             // Range Maximum
                        0x10,               // Alignment
                        0x68,               // Length
                        )
                    IO (Decode16,
                        0x02F0,             // Range Minimum
                        0x02F0,             // Range Maximum
                        0x10,               // Alignment
                        0x08,               // Length
                        )
                    IO (Decode16,
                        0x0300,             // Range Minimum
                        0x0300,             // Range Maximum
                        0x10,               // Alignment
                        0x78,               // Length
                        )
                    IO (Decode16,
                        0x0380,             // Range Minimum
                        0x0380,             // Range Maximum
                        0x10,               // Alignment
                        0x3C,               // Length
                        )
                    IO (Decode16,
                        0x03C0,             // Range Minimum
                        0x03C0,             // Range Maximum
                        0x10,               // Alignment
                        0x28,               // Length
                        )
                    IO (Decode16,
                        0x03F6,             // Range Minimum
                        0x03F6,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IO (Decode16,
                        0x0400,             // Range Minimum
                        0x0400,             // Range Maximum
                        0x10,               // Alignment
                        0xD0,               // Length
                        )
                    IO (Decode16,
                        0x04D2,             // Range Minimum
                        0x04D2,             // Range Maximum
                        0x01,               // Alignment
                        0xAE,               // Length
                        )
                    IO (Decode16,
                        0x0580,             // Range Minimum
                        0x0580,             // Range Maximum
                        0x10,               // Alignment
                        0xF8,               // Length
                        )
                    IO (Decode16,
                        0x0680,             // Range Minimum
                        0x0680,             // Range Maximum
                        0x10,               // Alignment
                        0xF8,               // Length
                        )
                    IO (Decode16,
                        0x0780,             // Range Minimum
                        0x0780,             // Range Maximum
                        0x10,               // Alignment
                        0x3C,               // Length
                        )
                    IO (Decode16,
                        0x07C0,             // Range Minimum
                        0x07C0,             // Range Maximum
                        0x10,               // Alignment
                        0x40,               // Length
                        )
                    IO (Decode16,
                        0x08E0,             // Range Minimum
                        0x08E0,             // Range Maximum
                        0x10,               // Alignment
                        0x20,               // Length
                        )
                    IO (Decode16,
                        0x0900,             // Range Minimum
                        0x0900,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0A00,             // Range Minimum
                        0x0A00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0B00,             // Range Minimum
                        0x0B00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0C80,             // Range Minimum
                        0x0C80,             // Range Maximum
                        0x10,               // Alignment
                        0x30,               // Length
                        )
                    IO (Decode16,
                        0x0CC0,             // Range Minimum
                        0x0CC0,             // Range Maximum
                        0x10,               // Alignment
                        0x38,               // Length
                        )
                    IO (Decode16,
                        0x0D00,             // Range Minimum
                        0x0D00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0E00,             // Range Minimum
                        0x0E00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x0F00,             // Range Minimum
                        0x0F00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2000,             // Range Minimum
                        0x2000,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2100,             // Range Minimum
                        0x2100,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2200,             // Range Minimum
                        0x2200,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2300,             // Range Minimum
                        0x2300,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2400,             // Range Minimum
                        0x2400,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2500,             // Range Minimum
                        0x2500,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2600,             // Range Minimum
                        0x2600,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2700,             // Range Minimum
                        0x2700,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2800,             // Range Minimum
                        0x2800,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2900,             // Range Minimum
                        0x2900,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2A00,             // Range Minimum
                        0x2A00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2B00,             // Range Minimum
                        0x2B00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2C00,             // Range Minimum
                        0x2C00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2D00,             // Range Minimum
                        0x2D00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2E00,             // Range Minimum
                        0x2E00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x2F00,             // Range Minimum
                        0x2F00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5000,             // Range Minimum
                        0x5000,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5100,             // Range Minimum
                        0x5100,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5200,             // Range Minimum
                        0x5200,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5300,             // Range Minimum
                        0x5300,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5400,             // Range Minimum
                        0x5400,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5500,             // Range Minimum
                        0x5500,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5600,             // Range Minimum
                        0x5600,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5700,             // Range Minimum
                        0x5700,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5800,             // Range Minimum
                        0x5800,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5900,             // Range Minimum
                        0x5900,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5A00,             // Range Minimum
                        0x5A00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5B00,             // Range Minimum
                        0x5B00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5C00,             // Range Minimum
                        0x5C00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5D00,             // Range Minimum
                        0x5D00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5E00,             // Range Minimum
                        0x5E00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x5F00,             // Range Minimum
                        0x5F00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6000,             // Range Minimum
                        0x6000,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6100,             // Range Minimum
                        0x6100,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6200,             // Range Minimum
                        0x6200,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6300,             // Range Minimum
                        0x6300,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6400,             // Range Minimum
                        0x6400,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6500,             // Range Minimum
                        0x6500,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6600,             // Range Minimum
                        0x6600,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6700,             // Range Minimum
                        0x6700,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6800,             // Range Minimum
                        0x6800,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6900,             // Range Minimum
                        0x6900,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6A00,             // Range Minimum
                        0x6A00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6B00,             // Range Minimum
                        0x6B00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6C00,             // Range Minimum
                        0x6C00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6D00,             // Range Minimum
                        0x6D00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6E00,             // Range Minimum
                        0x6E00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0x6F00,             // Range Minimum
                        0x6F00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA000,             // Range Minimum
                        0xA000,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA100,             // Range Minimum
                        0xA100,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA200,             // Range Minimum
                        0xA200,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA300,             // Range Minimum
                        0xA300,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA400,             // Range Minimum
                        0xA400,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA500,             // Range Minimum
                        0xA500,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA600,             // Range Minimum
                        0xA600,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA700,             // Range Minimum
                        0xA700,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA800,             // Range Minimum
                        0xA800,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xA900,             // Range Minimum
                        0xA900,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAA00,             // Range Minimum
                        0xAA00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAB00,             // Range Minimum
                        0xAB00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAC00,             // Range Minimum
                        0xAC00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAD00,             // Range Minimum
                        0xAD00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAE00,             // Range Minimum
                        0xAE00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                    IO (Decode16,
                        0xAF00,             // Range Minimum
                        0xAF00,             // Range Maximum
                        0x10,               // Alignment
                        0xFF,               // Length
                        )
                })
                Return (MMB2)
            }
        }
    }

    Scope (\_SB)
    {
        Device (HPET)
        {
            Name (_HID, EisaId ("PNP0103"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (HBAB, ResourceTemplate ()
                {
                    Memory32Fixed (ReadOnly,
                        0xFED00000,         // Address Base
                        0x00000400,         // Address Length
                        )
                })
                Return (HBAB)
            }
        }
    }

    Scope (\)
    {
        OperationRegion (WENX, SystemIO, 0x0C0A, 0x06)
        Field (WENX, ByteAcc, NoLock, Preserve)
        {
            WEN1,   8, 
            WEN2,   8, 
            WEN3,   8, 
            WEN4,   8, 
            WEN5,   8, 
            WEN6,   8
        }

        OperationRegion (WSTX, SystemIO, 0x0C04, 0x06)
        Field (WSTX, ByteAcc, NoLock, Preserve)
        {
            WST1,   8, 
            WST2,   8, 
            WST3,   8, 
            WST4,   8, 
            WST5,   8, 
            WST6,   8
        }

        OperationRegion (LEDX, SystemIO, 0x0C5D, 0x02)
        Field (LEDX, ByteAcc, NoLock, Preserve)
        {
            LED1,   8, 
            LED2,   8
        }

        Method (PSKM, 1, NotSerialized)
        {
            If (Or (LEqual (Arg0, 0x03), LEqual (Arg0, 0x01)))
            {
                Store (0x55, SIOI)
                Store (0x07, SIOI)
                Store (0x07, SIOD)
                Store (0xF0, SIOI)
                Store (SIOD, Local0)
                Or (Local0, 0x60, SIOD)
                Store (0xAA, SIOI)
                Store (WST1, Local0)
                And (Local0, 0x18, WST1)
                Store (GSTS, Local0)
                And (Local0, 0x01, GSTS)
                Store (WEN1, Local0)
                Or (Local0, 0x18, WEN1)
            }
        }

        Method (GPKM, 0, NotSerialized)
        {
            Store (WEN1, Local0)
            And (Local0, 0xE7, WEN1)
            Store (WST1, Local0)
            And (Local0, 0x18, WST1)
            Store (GSTS, Local0)
            And (Local0, 0x01, GSTS)
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        OperationRegion (NSIO, SystemIO, 0x2E, 0x02)
        Field (NSIO, ByteAcc, NoLock, Preserve)
        {
            INDX,   8, 
            DATA,   8
        }

        IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
        {
                    Offset (0x02), 
            CFG,    8, 
                    Offset (0x07), 
            LDN,    8, 
                    Offset (0x20), 
            SIID,   8, 
                    Offset (0x30), 
            ACTR,   8, 
                    Offset (0x60), 
            IOAH,   8, 
            IOAL,   8, 
                    Offset (0x70), 
            INTR,   8, 
                    Offset (0x74), 
            DMCH,   8, 
                    Offset (0xF0), 
            OPT1,   8, 
            OPT2,   8, 
            OPT3,   8
        }

        OperationRegion (COM, PCI_Config, 0x80, 0x01)
        Field (\_SB.PCI0.ISA.COM, ByteAcc, NoLock, Preserve)
        {
            NSCA,   3, 
                ,   1, 
            NSCB,   3, 
                    Offset (0x01)
        }

        OperationRegion (FDPA, PCI_Config, 0x81, 0x01)
        Field (\_SB.PCI0.ISA.FDPA, ByteAcc, NoLock, Preserve)
        {
            LPTO,   2, 
                ,   2, 
            FDDC,   1, 
                    Offset (0x01)
        }

        Mutex (MTX, 0x01)
        Method (SIOD, 1, NotSerialized)
        {
            CSIO (0x55)
            Store (Arg0, LDN)
            CSIO (0xAA)
        }

        Method (CSIO, 1, NotSerialized)
        {
            Store (Arg0, INDX)
        }

        Device (FDC)
        {
            Name (_HID, EisaId ("PNP0700"))
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Acquire (MTX, 0xFFFF)
                SIOD (0x00)
                If (GCFD ())
                {
                    CSIO (0x55)
                    If (ACTR)
                    {
                        CSIO (0xAA)
                        Store (0x0F, RET)
                    }
                    Else
                    {
                        CSIO (0xAA)
                        Store (0x0D, RET)
                    }
                }
                Else
                {
                    CSIO (0xAA)
                    Store (0x00, RET)
                }

                Release (MTX)
                Return (RET)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Acquire (MTX, 0xFFFF)
                SIOD (0x00)
                CSIO (0x55)
                Store (Zero, INTR)
                Store (Zero, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (FDB0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x03F0,             // Range Minimum
                        0x03F0,             // Range Maximum
                        0x08,               // Alignment
                        0x06,               // Length
                        _X0E)
                    IO (Decode16,
                        0x03F7,             // Range Minimum
                        0x03F7,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        _X0F)
                    IRQNoFlags (_X10)
                        {6}
                    DMA (Compatibility, NotBusMaster, Transfer8, _X11)
                        {2}
                })
                CreateByteField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X0E._MIN, IOL0)
                CreateByteField (FDB0, 0x03, IOH0)
                CreateByteField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X0E._MAX, IOL1)
                CreateByteField (FDB0, 0x05, IOH1)
                CreateByteField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X0F._MIN, I2L0)
                CreateByteField (FDB0, 0x0B, I2H0)
                CreateByteField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X0F._MAX, I2L1)
                CreateByteField (FDB0, 0x0D, I2H1)
                CreateWordField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X10._INT, IQR)
                CreateByteField (FDB0, \_SB.PCI0.ISA.FDC._CRS._X11._DMA, DAM)
                Acquire (MTX, 0xFFFF)
                SIOD (0x00)
                CSIO (0x55)
                Store (IOAH, IOH0)
                Store (IOAH, IOH1)
                Store (IOAL, IOL0)
                Store (IOAL, IOL1)
                Store (IOAH, I2H0)
                Store (IOAH, I2H1)
                Add (IOAL, 0x07, I2L0)
                Add (IOAL, 0x07, I2L1)
                ShiftLeft (One, INTR, IQR)
                ShiftLeft (One, DMCH, DAM)
                CSIO (0xAA)
                Release (MTX)
                Return (FDB0)
            }

            Method (_PRS, 0, NotSerialized)
            {
                Name (FDB1, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03F0,             // Range Minimum
                            0x03F0,             // Range Maximum
                            0x08,               // Alignment
                            0x06,               // Length
                            )
                        IO (Decode16,
                            0x03F7,             // Range Minimum
                            0x03F7,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {6}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {2}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03F0,             // Range Minimum
                            0x03F0,             // Range Maximum
                            0x08,               // Alignment
                            0x06,               // Length
                            )
                        IO (Decode16,
                            0x03F7,             // Range Minimum
                            0x03F7,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {1,2,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0370,             // Range Minimum
                            0x0370,             // Range Maximum
                            0x08,               // Alignment
                            0x06,               // Length
                            )
                        IO (Decode16,
                            0x0377,             // Range Minimum
                            0x0377,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {1,2,3}
                    }
                    EndDependentFn ()
                })
                Return (FDB1)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x02, IOLO)
                CreateByteField (Arg0, 0x03, IOHI)
                CreateWordField (Arg0, 0x11, IQR)
                CreateByteField (Arg0, 0x14, DAM)
                Acquire (MTX, 0xFFFF)
                SIOD (0x00)
                CSIO (0x55)
                Store (IOLO, IOAL)
                Store (IOHI, IOAH)
                CSIO (0xAA)
                If (LEqual (IOLO, 0x70))
                {
                    Store (0x01, FDDC)
                }

                If (LEqual (IOLO, 0xF0))
                {
                    Store (0x00, FDDC)
                }

                CSIO (0x55)
                FindSetRightBit (IQR, Local0)
                Subtract (Local0, 0x01, INTR)
                FindSetRightBit (DAM, Local0)
                Subtract (Local0, 0x01, DMCH)
                Store (One, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }
        }

        Device (KBD)
        {
            Name (_HID, EisaId ("PNP0303"))
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Store (0x00, RET)
                If (GCKB ())
                {
                    Store (0x0F, RET)
                }

                Return (RET)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (KBDB, 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}
                })
                Return (KBDB)
            }
        }

        Device (MOU)
        {
            Name (_HID, EisaId ("PNP0F13"))
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Store (0x00, RET)
                If (GCON ())
                {
                    If (GCMS ())
                    {
                        Store (0x0F, RET)
                    }
                }

                Return (RET)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (MOUB, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {12}
                })
                Name (MOKB, 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 (GCKB ())
                {
                    Return (MOUB)
                }
                Else
                {
                    Return (MOKB)
                }
            }
        }

        Device (PRT)
        {
            Name (_HID, EisaId ("PNP0401"))
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Acquire (MTX, 0xFFFF)
                SIOD (0x03)
                If (GCPP ())
                {
                    CSIO (0x55)
                    If (ACTR)
                    {
                        CSIO (0xAA)
                        Store (0x0F, RET)
                    }
                    Else
                    {
                        CSIO (0xAA)
                        Store (0x0D, RET)
                    }
                }
                Else
                {
                    CSIO (0xAA)
                    Store (0x00, RET)
                }

                Release (MTX)
                Return (RET)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Acquire (MTX, 0xFFFF)
                SIOD (0x03)
                CSIO (0x55)
                Store (Zero, INTR)
                Store (0x04, DMCH)
                Store (Zero, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (PTB0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0378,             // Range Minimum
                        0x0378,             // Range Maximum
                        0x08,               // Alignment
                        0x08,               // Length
                        _X12)
                    IO (Decode16,
                        0x0778,             // Range Minimum
                        0x0778,             // Range Maximum
                        0x08,               // Alignment
                        0x08,               // Length
                        _X13)
                    IRQNoFlags (_X14)
                        {7}
                    DMA (Compatibility, NotBusMaster, Transfer8, _X15)
                        {}
                })
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X12._MIN, IOL0)
                CreateByteField (PTB0, 0x03, IOH0)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X12._MAX, IOL1)
                CreateByteField (PTB0, 0x05, IOH1)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X12._ALN, LALN)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X12._LEN, LLEN)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X13._MIN, I2L0)
                CreateByteField (PTB0, 0x0B, I2H0)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X13._MAX, I2L1)
                CreateByteField (PTB0, 0x0D, I2H1)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X13._ALN, HALN)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X13._LEN, HLEN)
                CreateWordField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X14._INT, IQR)
                CreateByteField (PTB0, \_SB.PCI0.ISA.PRT._CRS._X15._DMA, DAM)
                Acquire (MTX, 0xFFFF)
                SIOD (0x03)
                CSIO (0x55)
                Store (IOAH, IOH0)
                Store (IOAH, IOH1)
                Store (IOAL, IOL0)
                Store (IOAL, IOL1)
                Add (IOAH, 0x04, I2H0)
                Add (IOAH, 0x04, I2H1)
                Store (IOAL, I2L0)
                Store (IOAL, I2L1)
                ShiftLeft (One, INTR, IQR)
                ShiftLeft (One, DMCH, DAM)
                If (LEqual (IOL0, 0xBC))
                {
                    Store (0x04, LALN)
                    Store (0x04, LLEN)
                    Store (0x04, HALN)
                    Store (0x04, HLEN)
                }

                If (LEqual (DMCH, 0x04))
                {
                    Store (Zero, DAM)
                }

                If (LEqual (INTR, 0x00))
                {
                    Store (Zero, IQR)
                }

                CSIO (0xAA)
                Release (MTX)
                Return (PTB0)
            }

            Method (_PRS, 0, NotSerialized)
            {
                Name (PTB1, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0378,             // Range Minimum
                            0x0378,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0778,             // Range Minimum
                            0x0778,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {7}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0278,             // Range Minimum
                            0x0278,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0678,             // Range Minimum
                            0x0678,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {5}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0378,             // Range Minimum
                            0x0378,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0778,             // Range Minimum
                            0x0778,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0378,             // Range Minimum
                            0x0378,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0778,             // Range Minimum
                            0x0778,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {1,2,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0278,             // Range Minimum
                            0x0278,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0678,             // Range Minimum
                            0x0678,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0278,             // Range Minimum
                            0x0278,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0678,             // Range Minimum
                            0x0678,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3,4,5,6,7,12}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {1,2,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0378,             // Range Minimum
                            0x0378,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0778,             // Range Minimum
                            0x0778,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x0278,             // Range Minimum
                            0x0278,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IO (Decode16,
                            0x0678,             // Range Minimum
                            0x0678,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03BC,             // Range Minimum
                            0x03BC,             // Range Maximum
                            0x04,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x07BC,             // Range Minimum
                            0x07BC,             // Range Maximum
                            0x04,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03BC,             // Range Minimum
                            0x03BC,             // Range Maximum
                            0x04,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x07BC,             // Range Minimum
                            0x07BC,             // Range Maximum
                            0x04,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {7}
                        DMA (Compatibility, NotBusMaster, Transfer8, )
                            {}
                    }
                    EndDependentFn ()
                })
                Return (PTB1)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x02, IOLO)
                CreateByteField (Arg0, 0x03, IOHI)
                CreateWordField (Arg0, 0x11, IQR)
                CreateByteField (Arg0, 0x14, DAM)
                Acquire (MTX, 0xFFFF)
                SIOD (0x03)
                CSIO (0x55)
                Store (IOLO, IOAL)
                Store (IOHI, IOAH)
                If (LEqual (IOLO, 0xBC))
                {
                    Store (0x02, LPTO)
                }

                If (LEqual (IOLO, 0x78))
                {
                    If (LEqual (IOHI, 0x02))
                    {
                        Store (0x01, LPTO)
                    }

                    If (LEqual (IOHI, 0x03))
                    {
                        Store (0x00, LPTO)
                    }
                }

                If (LEqual (IQR, Zero))
                {
                    Store (Zero, INTR)
                }
                Else
                {
                    FindSetRightBit (IQR, Local0)
                    Subtract (Local0, 0x01, INTR)
                }

                If (LEqual (DAM, Zero))
                {
                    Store (0x04, DMCH)
                }
                Else
                {
                    FindSetRightBit (DAM, Local0)
                    Subtract (Local0, 0x01, DMCH)
                }

                Store (One, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }
        }

        Device (COMA)
        {
            Name (_HID, EisaId ("PNP0501"))
            Name (_UID, 0x01)
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Acquire (MTX, 0xFFFF)
                SIOD (0x04)
                If (GCS1 ())
                {
                    CSIO (0x55)
                    If (ACTR)
                    {
                        CSIO (0xAA)
                        Store (0x0F, RET)
                    }
                    Else
                    {
                        CSIO (0xAA)
                        Store (0x0D, RET)
                    }
                }
                Else
                {
                    CSIO (0xAA)
                    Store (0x00, RET)
                }

                Release (MTX)
                Return (RET)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Acquire (MTX, 0xFFFF)
                SIOD (0x04)
                CSIO (0x55)
                Store (Zero, INTR)
                Store (Zero, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (CMA0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x03F8,             // Range Minimum
                        0x03F8,             // Range Maximum
                        0x08,               // Alignment
                        0x08,               // Length
                        _X16)
                    IRQNoFlags (_X17)
                        {4}
                })
                CreateByteField (CMA0, \_SB.PCI0.ISA.COMA._CRS._X16._MIN, IOL0)
                CreateByteField (CMA0, 0x03, IOH0)
                CreateByteField (CMA0, \_SB.PCI0.ISA.COMA._CRS._X16._MAX, IOL1)
                CreateByteField (CMA0, 0x05, IOH1)
                CreateWordField (CMA0, \_SB.PCI0.ISA.COMA._CRS._X17._INT, IQR)
                Acquire (MTX, 0xFFFF)
                SIOD (0x04)
                CSIO (0x55)
                Store (IOAL, IOL0)
                Store (IOAL, IOL1)
                Store (IOAH, IOH0)
                Store (IOAH, IOH1)
                ShiftLeft (One, INTR, IQR)
                CSIO (0xAA)
                Release (MTX)
                Return (CMA0)
            }

            Method (_PRS, 0, NotSerialized)
            {
                Name (CMA1, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03F8,             // Range Minimum
                            0x03F8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03E8,             // Range Minimum
                            0x03E8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x02F8,             // Range Minimum
                            0x02F8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x02E8,             // Range Minimum
                            0x02E8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3}
                    }
                    EndDependentFn ()
                })
                Return (CMA1)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x02, IOLO)
                CreateByteField (Arg0, 0x03, IOHI)
                CreateWordField (Arg0, 0x09, IQR)
                Acquire (MTX, 0xFFFF)
                SIOD (0x04)
                CSIO (0x55)
                Store (IOLO, IOAL)
                Store (IOHI, IOAH)
                FindSetRightBit (IQR, Local0)
                Subtract (Local0, 0x01, INTR)
                If (LEqual (IOHI, 0x03))
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Store (0x00, NSCA)
                    }

                    If (LEqual (IOLO, 0xE8))
                    {
                        Store (0x07, NSCA)
                    }
                }

                If (LEqual (IOHI, 0x02))
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Store (0x01, NSCA)
                    }

                    If (LEqual (IOLO, 0xE8))
                    {
                        Store (0x05, NSCA)
                    }
                }

                Store (One, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }
        }

        Device (COMB)
        {
            Name (_HID, EisaId ("PNP0501"))
            Name (_UID, 0x02)
            Method (_STA, 0, NotSerialized)
            {
                Name (RET, Zero)
                Acquire (MTX, 0xFFFF)
                SIOD (0x05)
                If (GCS2 ())
                {
                    CSIO (0x55)
                    If (ACTR)
                    {
                        CSIO (0xAA)
                        Store (0x0F, RET)
                    }
                    Else
                    {
                        CSIO (0xAA)
                        Store (0x0D, RET)
                    }
                }
                Else
                {
                    CSIO (0xAA)
                    Store (0x00, RET)
                }

                Release (MTX)
                Return (RET)
            }

            Method (_DIS, 0, NotSerialized)
            {
                Acquire (MTX, 0xFFFF)
                SIOD (0x05)
                CSIO (0x55)
                Store (Zero, INTR)
                Store (OPT1, Local0)
                Or (Local0, 0x20, Local0)
                Store (Local0, OPT1)
                Store (Zero, ACTR)
                CSIO (0xAA)
                Release (MTX)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (CMB0, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x03F8,             // Range Minimum
                        0x03F8,             // Range Maximum
                        0x08,               // Alignment
                        0x08,               // Length
                        _X18)
                    IRQNoFlags (_X19)
                        {4}
                })
                CreateByteField (CMB0, \_SB.PCI0.ISA.COMB._CRS._X18._MIN, IOL0)
                CreateByteField (CMB0, 0x03, IOH0)
                CreateByteField (CMB0, \_SB.PCI0.ISA.COMB._CRS._X18._MAX, IOL1)
                CreateByteField (CMB0, 0x05, IOH1)
                CreateWordField (CMB0, \_SB.PCI0.ISA.COMB._CRS._X19._INT, IQR)
                Acquire (MTX, 0xFFFF)
                SIOD (0x05)
                CSIO (0x55)
                Store (IOAL, IOL0)
                Store (IOAL, IOL1)
                Store (IOAH, IOH0)
                Store (IOAH, IOH1)
                ShiftLeft (One, INTR, IQR)
                CSIO (0xAA)
                Release (MTX)
                Return (CMB0)
            }

            Method (_PRS, 0, NotSerialized)
            {
                Name (CMB1, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x02F8,             // Range Minimum
                            0x02F8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x02E8,             // Range Minimum
                            0x02E8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03F8,             // Range Minimum
                            0x03F8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16,
                            0x03E8,             // Range Minimum
                            0x03E8,             // Range Maximum
                            0x08,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {4}
                    }
                    EndDependentFn ()
                })
                Return (CMB1)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateByteField (Arg0, 0x02, IOLO)
                CreateByteField (Arg0, 0x03, IOHI)
                CreateWordField (Arg0, 0x09, IQR)
                Acquire (MTX, 0xFFFF)
                SIOD (0x05)
                CSIO (0x55)
                Store (IOLO, IOAL)
                Store (IOHI, IOAH)
                FindSetRightBit (IQR, Local0)
                Subtract (Local0, 0x01, INTR)
                If (LEqual (IOHI, 0x03))
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Store (0x00, NSCB)
                    }

                    If (LEqual (IOLO, 0xE8))
                    {
                        Store (0x07, NSCB)
                    }
                }

                If (LEqual (IOHI, 0x02))
                {
                    If (LEqual (IOLO, 0xF8))
                    {
                        Store (0x01, NSCB)
                    }

                    If (LEqual (IOLO, 0xE8))
                    {
                        Store (0x05, NSCB)
                    }
                }

                Store (One, ACTR)
                Store (OPT1, Local0)
                And (Local0, 0xDF, Local0)
                Store (Local0, OPT1)
                CSIO (0xAA)
                Release (MTX)
            }
        }
    }

    Scope (\_SB.PCI0.ISA)
    {
        Device (TPM)
        {
            Name (_HID, EisaId ("BCM0101"))
            OperationRegion (PRIV, SystemMemory, 0xFFF801C0, 0x02)
            Field (PRIV, WordAcc, NoLock, Preserve)
            {
                TPMF,   16
            }

            Method (_STA, 0, NotSerialized)
            {
                If (LAnd (LAnd (LEqual (TPMF, 0x0957), GCTP ()), GCNC ()))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (TPMB, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0CB0,             // Range Minimum
                        0x0CB0,             // Range Maximum
                        0x08,               // Alignment
                        0x10,               // Length
                        )
                })
                Return (TPMB)
            }
        }
    }
}