All pastes #488218 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-14 21:50 UTC
rendered paste body
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20060912
 *
 * Disassembly of dsdt.dat, Mon May 14 23:47:38 2007
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000038D5 (14549)
 *     Revision         0x01
 *     OEM ID           "MTC  "
 *     OEM Table ID     "7521"
 *     OEM Revision     0x06040000 (100925440)
 *     Creator ID       "MSFT"
 *     Creator Revision 0x0100000B (16777227)
 */
DefinitionBlock ("dsdt.aml", "DSDT", 1, "MTC  ", "7521", 0x06040000)
{
    OperationRegion (CMOS, SystemIO, 0x70, 0x02)
    Field (CMOS, ByteAcc, NoLock, Preserve)
    {
        IN70,   8, 
        DA71,   8
    }

    IndexField (IN70, DA71, ByteAcc, NoLock, Preserve)
    {
        SEC,    8, 
        SECA,   8, 
        MIN,    8, 
        MINA,   8, 
        HOU,    8, 
        HOUA,   8, 
                Offset (0x0B), 
            ,   5, 
        REGB,   1, 
                Offset (0x0C), 
                Offset (0x7E), 
        DAYA,   8, 
        MONA,   8
    }

    OperationRegion (BTT0, SystemMemory, 0x0400, 0x0100)
    Field (BTT0, ByteAcc, NoLock, Preserve)
    {
                Offset (0xDF), 
        GADP,   1, 
        GBAT,   1, 
        GLID,   1, 
        GBTC,   1, 
        GBST,   2, 
        RIIN,   1, 
        PS2M,   1, 
        GBAR,   16, 
        GCBA,   16, 
        GAVE,   16, 
        GTEM,   16, 
        GCCB,   16, 
        GCCC,   16, 
        GAVC,   16, 
        GLTS,   16, 
        GTTE,   16, 
        GTDC,   16, 
        GFCC,   16, 
        GTDV,   16, 
        GTSN,   16, 
        GCQS,   16, 
        GPST,   16, 
        GRST,   16
    }

    Scope (\_PR)
    {
        Processor (CPU0, 0x00, 0x00008010, 0x06) {}
    }

    Name (\_S0, Package (0x02)
    {
        0x00, 
        0x00
    })
    Name (\_S3, Package (0x02)
    {
        0x03, 
        0x03
    })
    Name (\_S4, Package (0x02)
    {
        0x04, 
        0x04
    })
    Name (\_S5, Package (0x02)
    {
        0x05, 
        0x05
    })
    Scope (_SI)
    {
        Method (_SST, 1, NotSerialized)
        {
            If (And (LGreaterEqual (Arg0, 0x01), LLessEqual (Arg0, 0x02)
                ))
            {
                Store ("==================================== SI_Working", Debug)
            }

            If (LEqual (Arg0, 0x03))
            {
                Store ("==================================== SI_S1 or S2 or S3", Debug)
            }

            If (LEqual (Arg0, 0x04))
            {
                Store ("==================================== SI_S4", Debug)
            }
        }
    }

    Method (\_PTS, 1, NotSerialized)
    {
        If (LEqual (Arg0, 0x01))
        {
            Store ("------------- System S0 to S1 mode -------------", Debug)
            \_SB.PHS (0x80)
        }

        If (And (LGreaterEqual (Arg0, 0x02), LLessEqual (Arg0, 0x03)
            ))
        {
            Store ("------------- System S0 to (S2 or S3) mode -------------", Debug)
            \_SB.PHS (0x85)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store ("------------- System S0 to S4 mode -------------", Debug)
            \_SB.PHS (0x82)
        }

        If (LEqual (Arg0, 0x05))
        {
            Store ("------------- System S0 to S5 mode -------------", Debug)
            \_SB.PHS (0x84)
        }
    }

    Method (\_WAK, 1, NotSerialized)
    {
        \_SB.PHS (0x94)
        If (LEqual (RIIN, 0x01))
        {
            Notify (\_SB.PWRB, 0x02)
            Store (0x00, RIIN)
        }

        If (LEqual (Arg0, 0x01))
        {
            Store ("------------- System S1 to\tS0 mode\t-------------", Debug)
            \_SB.PHS (0x81)
        }

        If (And (LGreaterEqual (Arg0, 0x02), LLessEqual (Arg0, 0x03)
            ))
        {
            Store ("------------- System (S3 or S2) to\tS0 mode\t-------------", Debug)
            \_SB.PHS (0x86)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store ("------------- System S4 to\tS0 mode\t-------------", Debug)
            Notify (\_SB.PWRB, 0x02)
            \_SB.PHS (0x83)
        }
    }

    Scope (\_GPE)
    {
        Method (_L0F, 0, NotSerialized)
        {
            Store ("=========================================== GPE_L0F", Debug)
        }
    }

    Scope (_SB)
    {
        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
        }

        Device (SLPB)
        {
            Name (_HID, EisaId ("PNP0C0E"))
            Name (_PRW, Package (0x02)
            {
                0x0F, 
                0x04
            })
            Method (_PSW, 1, NotSerialized)
            {
            }

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }
        }

        Device (LID)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Name (LIDS, One)
            Method (_LID, 0, NotSerialized)
            {
                Store ("-------------- SIS LID Switch --------------", Debug)
                Store (LIDS, Debug)
                Return (LIDS)
            }
        }

        Device (ACAD)
        {
            Name (_HID, "ACPI0003")
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Name (ACP, 0x00)
            Method (_PSR, 0, NotSerialized)
            {
                Store (GADP, Local0)
                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)
            {
                Store ("--------------------------------------- AC_STA", Debug)
                Return (0x0F)
            }

            Method (CHAC, 0, NotSerialized)
            {
                Store ("---------------------------- AC _CHAC", Debug)
                \_SB.PHS (0x90)
                Store (GADP, Local0)
                If (LNotEqual (Local0, ACP))
                {
                    FLPA ()
                }
            }

            Method (FLPA, 0, NotSerialized)
            {
                Store (GADP, ACP)
                Notify (\_SB.ACAD, 0x00)
            }
        }

        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x01)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Name (PBIF, Package (0x0D)
            {
                0x01, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x01, 
                0xFFFFFFFF, 
                0x01F4, 
                0x00, 
                0x40, 
                0x40, 
                "Internal Battery", 
                "\t", 
                "\t", 
                "MTC Corporation"
            })
            Name (BSTB, Package (0x04)
            {
                0x00, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x2710
            })
            Name (CHAR, Package (0x10)
            {
                "0", 
                "1", 
                "2", 
                "3", 
                "4", 
                "5", 
                "6", 
                "7", 
                "8", 
                "9", 
                "A", 
                "B", 
                "C", 
                "D", 
                "E", 
                "F"
            })
            Method (ITOS, 1, NotSerialized)
            {
                Store ("", Local0)
                Store (0x05, Local1)
                While (Local1)
                {
                    Decrement (Local1)
                    And (ShiftRight (Arg0, ShiftLeft (Local1, 0x02)), 0x0F, Local4)
                    Store (DerefOf (Index (CHAR, Local4)), Local2)
                    Concatenate (Local0, Local2, Local5)
                    Store (Local5, Local0)
                }

                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)
            {
                \_SB.PHS (0x90)
                Store (GBAT, Local0)
                If (Or (Local0, Local0))
                {
                    Return (0x1F)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (_BIF, 0, NotSerialized)
            {
                \_SB.PHS (0x90)
                Store (GBAT, Local0)
                If (Or (Local0, Local0))
                {
                    DBIF ()
                    Store ("------------------------- BATTERY _BIF from EC", Debug)
                    Store (0x01, Index (PBIF, 0x00))
                    Store (GTDC, Index (PBIF, 0x01))
                    Store (GFCC, Index (PBIF, 0x02))
                    Store (0x01, Index (PBIF, 0x03))
                    Store (GTDV, Index (PBIF, 0x04))
                    Store (0x01F4, Index (PBIF, 0x05))
                    Store (0x00, Index (PBIF, 0x06))
                    Store (0x40, Index (PBIF, 0x07))
                    Store (0x40, Index (PBIF, 0x08))
                    Store ("Internal battery", Index (PBIF, 0x09))
                    Store (GTSN, Local0)
                    Store (ITOS (ToBCD (Local0)), Local1)
                    Store ("", Index (PBIF, 0x0A))
                    If (GBTC)
                    {
                        Store ("LION", Index (PBIF, 0x0B))
                    }
                    Else
                    {
                        Store ("NiMH", Index (PBIF, 0x0B))
                    }

                    Store ("MTC Corporation ", Index (PBIF, 0x0C))
                }
                Else
                {
                    DBIF ()
                }

                Return (PBIF)
            }

            Method (DBIF, 0, NotSerialized)
            {
                Store ("------------------------- BATTERY _BIF from default", Debug)
                Store (0x01, Index (PBIF, 0x00))
                Store (0xFFFFFFFF, Index (PBIF, 0x01))
                Store (0xFFFFFFFF, Index (PBIF, 0x02))
                Store (0x01, Index (PBIF, 0x03))
                Store (0xFFFFFFFF, Index (PBIF, 0x04))
                Store (0x01F4, Index (PBIF, 0x05))
                Store (0x00, Index (PBIF, 0x06))
                Store (0x40, Index (PBIF, 0x07))
                Store (0x40, Index (PBIF, 0x08))
                Store ("7521   ", Index (PBIF, 0x09))
                Store ("7521   ", Index (PBIF, 0x0A))
                Store ("\t ", Index (PBIF, 0x0B))
                Store ("MTC Corporation", Index (PBIF, 0x0C))
            }

            Method (_BST, 0, NotSerialized)
            {
                \_SB.PHS (0x90)
                Store (GBAT, Local0)
                If (Or (Local0, Local0))
                {
                    Store ("------------------------- BATTERY _BST from EC", Debug)
                    Store (GBST, Local0)
                    Store (0x01, Index (BSTB, 0x00))
                    If (LEqual (Local0, 0x03))
                    {
                        Store (0x02, Index (BSTB, 0x00))
                    }

                    If (LEqual (Local0, 0x02))
                    {
                        Store (GADP, Local4)
                        If (LEqual (Local4, 0x00))
                        {
                            Store (0x05, Index (BSTB, 0x00))
                        }
                        Else
                        {
                            Store (0x06, Index (BSTB, 0x00))
                        }
                    }

                    Store (GCCC, Local1)
                    Not (Local1, Local1)
                    And (Local1, 0xFFFF, Local1)
                    Store (Local1, Index (BSTB, 0x01))
                    Store (GBAR, Local2)
                    Store (Local2, Index (BSTB, 0x02))
                    Store (GCCB, Local3)
                    Store (Local3, Index (BSTB, 0x03))
                }
                Else
                {
                    DBST ()
                }

                Return (BSTB)
            }

            Method (DBST, 0, NotSerialized)
            {
                Store ("------------------------- BATTERY _BST from default", Debug)
                Store (0x00, Index (BSTB, 0x00))
                Store (0xFFFFFFFF, Index (BSTB, 0x01))
                Store (0xFFFFFFFF, Index (BSTB, 0x02))
                Store (0x2710, Index (BSTB, 0x03))
            }

            Method (IN, 0, NotSerialized)
            {
                _BST ()
                _BIF ()
                Notify (\_SB.ACAD, 0x00)
                Notify (\_SB.BAT0, 0x00)
                Notify (\_SB.BAT0, 0x80)
                Notify (\_SB.BAT0, 0x81)
                \_SB.ACAD.FLPA ()
            }

            Method (OUT, 0, NotSerialized)
            {
                DBST ()
                DBIF ()
                Notify (\_SB.ACAD, 0x00)
                Notify (\_SB.BAT0, 0x01)
                Notify (\_SB.BAT0, 0x80)
                Notify (\_SB.BAT0, 0x81)
                \_SB.ACAD.FLPA ()
            }
        }

        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x01)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {9}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Or (\_SB.PCI0.EIO.PIRA, 0x80, \_SB.PCI0.EIO.PIRA)
            }

            Method (_CRS, 0, NotSerialized)
            {
                Name (RSRC, ResourceTemplate ()
                {
                    IRQ (Level, ActiveLow, Shared, _Y00)
                        {}
                })
                CreateWordField (RSRC, \_SB.LNKA._CRS._Y00._INT, IRQ0)
                If (LEqual (And (\_SB.PCI0.EIO.PIRA, 0x80), Zero))
                {
                    And (\_SB.PCI0.EIO.PIRA, 0x0F, Local0)
                    ShiftLeft (0x01, Local0, IRQ0)
                }

                Return (RSRC)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IRQ0)
                FindSetRightBit (IRQ0, Local0)
                Decrement (Local0)
                Or (Local0, And (\_SB.PCI0.EIO.PIRA, 0x70), \_SB.PCI0.EIO.PIRA)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (And (\_SB.PCI0.EIO.PIRA, 0x80))
                {
                    Return (0x09)
                }

                Return (0x0B)
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x02)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,7,9,11}
            })
            Name (RSRC, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, _Y01)
                    {}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Or (\_SB.PCI0.EIO.PIRB, 0x80, \_SB.PCI0.EIO.PIRB)
            }

            Method (_CRS, 0, NotSerialized)
            {
                CreateWordField (RSRC, \_SB.LNKB._Y01._INT, IRQ0)
                And (\_SB.PCI0.EIO.PIRB, 0x0F, Local0)
                ShiftLeft (0x01, Local0, IRQ0)
                Return (RSRC)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IRQ0)
                FindSetRightBit (IRQ0, Local0)
                Decrement (Local0)
                Or (Local0, And (\_SB.PCI0.EIO.PIRB, 0x70), \_SB.PCI0.EIO.PIRB)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (And (\_SB.PCI0.EIO.PIRB, 0x80))
                {
                    Return (0x09)
                }

                Return (0x0B)
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x03)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,7,9,11}
            })
            Name (RSRC, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, _Y02)
                    {}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Or (\_SB.PCI0.EIO.PIRC, 0x80, \_SB.PCI0.EIO.PIRC)
            }

            Method (_CRS, 0, NotSerialized)
            {
                CreateWordField (RSRC, \_SB.LNKC._Y02._INT, IRQ0)
                And (\_SB.PCI0.EIO.PIRC, 0x0F, Local0)
                ShiftLeft (0x01, Local0, IRQ0)
                Return (RSRC)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IRQ0)
                FindSetRightBit (IRQ0, Local0)
                Decrement (Local0)
                Or (Local0, And (\_SB.PCI0.EIO.PIRC, 0x70), \_SB.PCI0.EIO.PIRC)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (And (\_SB.PCI0.EIO.PIRC, 0x80))
                {
                    Return (0x09)
                }

                Return (0x0B)
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F"))
            Name (_UID, 0x04)
            Name (_PRS, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, )
                    {3,4,5,7,9}
            })
            Name (RSRC, ResourceTemplate ()
            {
                IRQ (Level, ActiveLow, Shared, _Y03)
                    {}
            })
            Method (_DIS, 0, NotSerialized)
            {
                Or (\_SB.PCI0.EIO.PIRD, 0x80, \_SB.PCI0.EIO.PIRD)
            }

            Method (_CRS, 0, NotSerialized)
            {
                CreateWordField (RSRC, \_SB.LNKD._Y03._INT, IRQ0)
                And (\_SB.PCI0.EIO.PIRD, 0x0F, Local0)
                ShiftLeft (0x01, Local0, IRQ0)
                Return (RSRC)
            }

            Method (_SRS, 1, NotSerialized)
            {
                CreateWordField (Arg0, 0x01, IRQ0)
                FindSetRightBit (IRQ0, Local0)
                Decrement (Local0)
                Or (Local0, And (\_SB.PCI0.EIO.PIRD, 0x70), \_SB.PCI0.EIO.PIRD)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (And (\_SB.PCI0.EIO.PIRD, 0x80))
                {
                    Return (0x09)
                }

                Return (0x0B)
            }
        }

        OperationRegion (SMI0, SystemIO, 0x0000FE00, 0x00000002)
        Field (SMI0, AnyAcc, NoLock, Preserve)
        {
            SMIC,   8
        }

        OperationRegion (SMI1, SystemMemory, 0x15FFFEBC, 0x00000100)
        Field (SMI1, AnyAcc, NoLock, Preserve)
        {
            BCMD,   8, 
            DID,    32, 
            INFO,   2000
        }

        Field (SMI1, AnyAcc, NoLock, Preserve)
        {
                    AccessAs (ByteAcc, 0x00), 
                    Offset (0x05), 
            INF,    8
        }

        Mutex (PSMX, 0x01)
        Method (PHS, 1, Serialized)
        {
            Acquire (PSMX, 0xFFFF)
            Store (Arg0, BCMD)
            Store (Zero, SMIC)
            Store (Zero, BCMD)
            Release (PSMX)
            Return (INF)
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00)
            Name (_BBN, 0x00)
            Name (CRES, 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, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000DBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00018000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x04000000,         // Range Minimum
                    0xFFFDFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y04, AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, NotSerialized)
            {
                CreateDWordField (CRES, \_SB.PCI0._Y04._MIN, RAMT)
                CreateDWordField (CRES, \_SB.PCI0._Y04._LEN, RAMR)
                ShiftLeft (\_SB.PCI0.MAH, 0x1C, Local0)
                ShiftLeft (\_SB.PCI0.MAL, 0x14, Local1)
                Add (Local1, Local0, Local2)
                Store (Local2, RAMT)
                Subtract (0xFFE00000, RAMT, RAMR)
                Return (CRES)
            }

            OperationRegion (MA, PCI_Config, 0xAE, 0x02)
            Field (MA, ByteAcc, NoLock, Preserve)
            {
                MAL,    8, 
                MAH,    8
            }

            Name (_PRT, Package (0x07)
            {
                Package (0x04)
                {
                    0x0001FFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x01, 
                    \_SB.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x02, 
                    \_SB.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x03, 
                    \_SB.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0008FFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0008FFFF, 
                    0x01, 
                    \_SB.LNKA, 
                    0x00
                }
            })
            Device (IDEC)
            {
                Name (_ADR, 0x01)
                Name (RTT, Package (0x10)
                {
                    0x0C, 
                    0x01, 
                    0x02, 
                    0x03, 
                    0x04, 
                    0x05, 
                    0x06, 
                    0x07, 
                    0x08, 
                    0x09, 
                    0x0A, 
                    0x0B, 
                    0x0D, 
                    0x0E, 
                    0x0F, 
                    0x0F
                })
                Name (DATT, Package (0x08)
                {
                    0x08, 
                    0x01, 
                    0x02, 
                    0x03, 
                    0x04, 
                    0x05, 
                    0x06, 
                    0x0C
                })
                Name (UDTT, Package (0x08)
                {
                    0x00, 
                    0x02, 
                    0x03, 
                    0x04, 
                    0x05, 
                    0x06, 
                    0x07, 
                    0x08
                })
                Name (IDET, Package (0x03)
                {
                    Package (0x07)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0186, 
                        0x0258, 
                        0x96, 
                        0x01E0
                    }, 

                    Package (0x07)
                    {
                        0x03, 
                        0x03, 
                        0x04, 
                        0x06, 
                        0x08, 
                        0x03, 
                        0x08
                    }, 

                    Package (0x07)
                    {
                        0x01, 
                        0x03, 
                        0x04, 
                        0x07, 
                        0x0C, 
                        0x02, 
                        0x08
                    }
                })
                Name (UDT, Package (0x01)
                {
                    Package (0x08)
                    {
                        0x00, 
                        0x04, 
                        0x03, 
                        0x02, 
                        0x02, 
                        0x01, 
                        0x01, 
                        0x00
                    }
                })
                Name (UDMT, Package (0x06)
                {
                    0x07, 
                    0x05, 
                    0x03, 
                    0x02, 
                    0x01, 
                    0x00
                })
                Name (PIOT, Package (0x05)
                {
                    0x00, 
                    0x07, 
                    0x04, 
                    0x03, 
                    0x01
                })
                Name (DMAT, Package (0x05)
                {
                    0x00, 
                    0x01, 
                    0x01, 
                    0x01, 
                    0x02
                })
                OperationRegion (CF41, PCI_Config, 0x40, 0x0C)
                Field (CF41, WordAcc, NoLock, Preserve)
                {
                    RCT0,   4, 
                            Offset (0x01), 
                    DAT0,   3, 
                        ,   1, 
                    UDT0,   3, 
                    UDC0,   1, 
                    RCT1,   4, 
                            Offset (0x03), 
                    DAT1,   3, 
                        ,   1, 
                    UDT1,   3, 
                    UDC1,   1, 
                    RCT2,   4, 
                            Offset (0x05), 
                    DAT2,   3, 
                        ,   1, 
                    UDT2,   3, 
                    UDC2,   1, 
                    RCT3,   4, 
                            Offset (0x07), 
                    DAT3,   3, 
                        ,   1, 
                    UDT3,   3, 
                    UDC3,   1, 
                            Offset (0x0A), 
                        ,   1, 
                    C0EN,   1, 
                    C1EN,   1
                }

                Name (IDEP, Buffer (0x14) {})
                CreateDWordField (IDEP, 0x00, GTM0)
                CreateDWordField (IDEP, 0x04, GTM1)
                CreateDWordField (IDEP, 0x08, GTM2)
                CreateDWordField (IDEP, 0x0C, GTM3)
                CreateDWordField (IDEP, 0x10, GTM4)
                Device (IDE0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store (0xFFFFFFFF, Local0)
                        Store (0xFFFFFFFF, Local1)
                        Store (0xFFFFFFFF, Local2)
                        Store (0xFFFFFFFF, Local3)
                        Store (0x10, Local4)
                        If (^^C0EN)
                        {
                            If (NAnd (LEqual (^^DAT0, 0x00), LEqual (^^RCT0, 0x0E)))
                            {
                                If (LEqual (\_SB.PCI0.IDEC.UDC0, 0x01))
                                {
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.UDTT, \_SB.PCI0.IDEC.UDT0)), Local1)
                                    Multiply (Local1, 0x0A, Local1)
                                    Or (Local4, 0x01, Local4)
                                }

                                Store (DerefOf (Index (\_SB.PCI0.IDEC.RTT, \_SB.PCI0.IDEC.RCT0)), Local5)
                                Store (DerefOf (Index (\_SB.PCI0.IDEC.DATT, \_SB.PCI0.IDEC.DAT0)), Local6)
                                Add (Local5, Local6, Local5)
                                Multiply (Local5, 0x1E, Local0)
                                If (LEqual (Local6, 0x03))
                                {
                                    Or (Local4, 0x02, Local4)
                                }

                                If (LEqual (\_SB.PCI0.IDEC.UDC0, 0x00))
                                {
                                    Store (Local0, Local1)
                                }
                            }

                            If (NAnd (LEqual (^^DAT1, 0x00), LEqual (^^RCT1, 0x0E)))
                            {
                                If (LEqual (\_SB.PCI0.IDEC.UDC1, 0x01))
                                {
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.UDTT, \_SB.PCI0.IDEC.UDT1)), Local3)
                                    Multiply (Local3, 0x0A, Local3)
                                    Or (Local4, 0x04, Local4)
                                }

                                Store (DerefOf (Index (\_SB.PCI0.IDEC.RTT, \_SB.PCI0.IDEC.RCT1)), Local5)
                                Store (DerefOf (Index (\_SB.PCI0.IDEC.DATT, \_SB.PCI0.IDEC.DAT1)), Local6)
                                Add (Local5, Local6, Local5)
                                Multiply (Local5, 0x1E, Local2)
                                If (LEqual (Local6, 0x03))
                                {
                                    Or (Local4, 0x08, Local4)
                                }

                                If (LEqual (\_SB.PCI0.IDEC.UDC1, 0x00))
                                {
                                    Store (Local2, Local3)
                                }
                            }
                        }

                        Store (Local0, ^^GTM0)
                        Store (Local1, ^^GTM1)
                        Store (Local2, ^^GTM2)
                        Store (Local3, ^^GTM3)
                        Store (Local4, ^^GTM4)
                        Return (^^IDEP)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, ^^IDEP)
                        Store (^^GTM0, Local0)
                        Store (^^GTM1, Local1)
                        Store (^^GTM2, Local2)
                        Store (^^GTM3, Local3)
                        Store (^^GTM4, Local4)
                        If (LNotEqual (Local1, 0xFFFFFFFF))
                        {
                            If (And (Local4, 0x01))
                            {
                                Store (0x01, ^^UDC0)
                                Divide (Local1, 0x0A, Local5, Local1)
                                Store (Match (\_SB.PCI0.IDEC.UDTT, MEQ, Local1, MTR, 0x00, 0x00), Local5)
                                Store (Local5, ^^UDT0)
                            }
                        }

                        If (LNotEqual (Local0, 0xFFFFFFFF))
                        {
                            Store (Match (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x00)), MEQ, Local0, MTR, 
                                0x00, 0x00), Local6)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x01)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.DATT, MEQ, Local7, MTR, 0x00, 0x00), ^^DAT0)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x02)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.RTT, MEQ, Local7, MTR, 0x00, 0x00), ^^RCT0)
                        }

                        If (LNotEqual (Local3, 0xFFFFFFFF))
                        {
                            If (And (Local4, 0x04))
                            {
                                Store (0x01, ^^UDC1)
                                Divide (Local3, 0x0A, Local5, Local3)
                                Store (Match (\_SB.PCI0.IDEC.UDTT, MEQ, Local3, MTR, 0x00, 0x00), Local5)
                                Store (Local5, ^^UDT1)
                            }
                        }

                        If (LNotEqual (Local2, 0xFFFFFFFF))
                        {
                            Store (Match (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x00)), MEQ, Local2, MTR, 
                                0x00, 0x00), Local6)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x01)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.DATT, MEQ, Local7, MTR, 0x00, 0x00), ^^DAT1)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x02)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.RTT, MEQ, Local7, MTR, 0x00, 0x00), ^^RCT1)
                        }
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local6)
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local7)
                            CreateByteField (Local6, 0x01, MODE)
                            CreateByteField (Local7, 0x01, UMOD)
                            If (NAnd (LEqual (^^^DAT0, 0x00), LEqual (^^^RCT0, 0x0E)))
                            {
                                If (^^^UDC0)
                                {
                                    Store (Match (\_SB.PCI0.IDEC.UDMT, MEQ, ^^^UDT0, MTR, 0x00, 0x00), UMOD)
                                    Or (UMOD, 0x40, UMOD)
                                }
                                Else
                                {
                                    Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT0, MTR, 0x00, 0x00), MODE)
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.DMAT, MODE)), UMOD)
                                    Or (UMOD, 0x20, UMOD)
                                }

                                Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT0, MTR, 0x00, 0x00), MODE)
                                Or (MODE, 0x08, MODE)
                            }

                            Concatenate (Local6, Local7, Local5)
                            Return (Local5)
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                }, Local6)
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                }, Local7)
                            CreateByteField (Local6, 0x01, MODE)
                            CreateByteField (Local7, 0x01, UMOD)
                            If (NAnd (LEqual (^^^DAT1, 0x00), LEqual (^^^RCT1, 0x0E)))
                            {
                                If (^^^UDC1)
                                {
                                    Store (Match (\_SB.PCI0.IDEC.UDMT, MEQ, ^^^UDT1, MTR, 0x00, 0x00), UMOD)
                                    Or (UMOD, 0x40, UMOD)
                                }
                                Else
                                {
                                    Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT1, MTR, 0x00, 0x00), MODE)
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.DMAT, MODE)), UMOD)
                                    Or (UMOD, 0x20, UMOD)
                                }

                                Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT1, MTR, 0x00, 0x00), MODE)
                                Or (MODE, 0x08, MODE)
                            }

                            Concatenate (Local6, Local7, Local5)
                            Return (Local5)
                        }
                    }
                }

                Device (IDE1)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Store (0xFFFFFFFF, Local0)
                        Store (0xFFFFFFFF, Local1)
                        Store (0xFFFFFFFF, Local2)
                        Store (0xFFFFFFFF, Local3)
                        Store (0x10, Local4)
                        If (^^C1EN)
                        {
                            If (NAnd (LEqual (^^DAT2, 0x00), LEqual (^^RCT2, 0x0E)))
                            {
                                If (LEqual (\_SB.PCI0.IDEC.UDC2, 0x01))
                                {
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.UDTT, \_SB.PCI0.IDEC.UDT2)), Local1)
                                    Multiply (Local1, 0x0A, Local1)
                                    Or (Local4, 0x01, Local4)
                                }

                                Store (DerefOf (Index (\_SB.PCI0.IDEC.RTT, \_SB.PCI0.IDEC.RCT2)), Local5)
                                Store (DerefOf (Index (\_SB.PCI0.IDEC.DATT, \_SB.PCI0.IDEC.DAT2)), Local6)
                                Add (Local5, Local6, Local5)
                                Multiply (Local5, 0x1E, Local0)
                                If (LEqual (Local6, 0x03))
                                {
                                    Or (Local4, 0x02, Local4)
                                }

                                If (LEqual (\_SB.PCI0.IDEC.UDC2, 0x00))
                                {
                                    Store (Local0, Local1)
                                }
                            }

                            If (NAnd (LEqual (^^DAT3, 0x00), LEqual (^^RCT3, 0x0E)))
                            {
                                If (LEqual (\_SB.PCI0.IDEC.UDC3, 0x01))
                                {
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.UDTT, \_SB.PCI0.IDEC.UDT3)), Local3)
                                    Multiply (Local3, 0x0A, Local3)
                                    Or (Local4, 0x04, Local4)
                                }

                                Store (DerefOf (Index (\_SB.PCI0.IDEC.RTT, \_SB.PCI0.IDEC.RCT3)), Local5)
                                Store (DerefOf (Index (\_SB.PCI0.IDEC.DATT, \_SB.PCI0.IDEC.DAT3)), Local6)
                                Add (Local5, Local6, Local5)
                                Multiply (Local5, 0x1E, Local2)
                                If (LEqual (Local6, 0x03))
                                {
                                    Or (Local4, 0x08, Local4)
                                }

                                If (LEqual (\_SB.PCI0.IDEC.UDC3, 0x00))
                                {
                                    Store (Local2, Local3)
                                }
                            }
                        }

                        Store (Local0, ^^GTM0)
                        Store (Local1, ^^GTM1)
                        Store (Local2, ^^GTM2)
                        Store (Local3, ^^GTM3)
                        Store (Local4, ^^GTM4)
                        Return (^^IDEP)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, ^^IDEP)
                        Store (^^GTM0, Local0)
                        Store (^^GTM1, Local1)
                        Store (^^GTM2, Local2)
                        Store (^^GTM3, Local3)
                        Store (^^GTM4, Local4)
                        If (LNotEqual (Local1, 0xFFFFFFFF))
                        {
                            If (And (Local4, 0x01))
                            {
                                Store (0x01, ^^UDC2)
                                Divide (Local1, 0x0A, Local5, Local1)
                                Store (Match (\_SB.PCI0.IDEC.UDTT, MEQ, Local1, MTR, 0x00, 0x00), Local5)
                                Store (Local5, ^^UDT2)
                            }
                        }

                        If (LNotEqual (Local0, 0xFFFFFFFF))
                        {
                            Store (Match (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x00)), MEQ, Local0, MTR, 
                                0x00, 0x00), Local6)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x01)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.DATT, MEQ, Local7, MTR, 0x00, 0x00), ^^DAT2)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x02)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.RTT, MEQ, Local7, MTR, 0x00, 0x00), ^^RCT2)
                        }

                        If (LNotEqual (Local3, 0xFFFFFFFF))
                        {
                            If (And (Local4, 0x04))
                            {
                                Store (0x01, ^^UDC3)
                                Divide (Local3, 0x0A, Local5, Local3)
                                Store (Match (\_SB.PCI0.IDEC.UDTT, MEQ, Local3, MTR, 0x00, 0x00), Local5)
                                Store (Local5, ^^UDT3)
                            }
                        }

                        If (LNotEqual (Local2, 0xFFFFFFFF))
                        {
                            Store (Match (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x00)), MEQ, Local2, MTR, 
                                0x00, 0x00), Local6)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x01)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.DATT, MEQ, Local7, MTR, 0x00, 0x00), ^^DAT3)
                            Store (DerefOf (Index (DerefOf (Index (\_SB.PCI0.IDEC.IDET, 0x02)), Local6)), 
                                Local7)
                            Store (Match (\_SB.PCI0.IDEC.RTT, MEQ, Local7, MTR, 0x00, 0x00), ^^RCT3)
                        }
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local6)
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                                }, Local7)
                            CreateByteField (Local6, 0x01, MODE)
                            CreateByteField (Local7, 0x01, UMOD)
                            If (NAnd (LEqual (^^^DAT2, 0x00), LEqual (^^^RCT2, 0x0E)))
                            {
                                If (^^^UDC2)
                                {
                                    Store (Match (\_SB.PCI0.IDEC.UDMT, MEQ, ^^^UDT2, MTR, 0x00, 0x00), UMOD)
                                    Or (UMOD, 0x40, UMOD)
                                }
                                Else
                                {
                                    Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT2, MTR, 0x00, 0x00), MODE)
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.DMAT, MODE)), UMOD)
                                    Or (UMOD, 0x20, UMOD)
                                }

                                Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT2, MTR, 0x00, 0x00), MODE)
                                Or (MODE, 0x08, MODE)
                            }

                            Concatenate (Local6, Local7, Local5)
                            Return (Local5)
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                }, Local6)
                            Store (Buffer (0x07)
                                {
                                    /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                                }, Local7)
                            CreateByteField (Local6, 0x01, MODE)
                            CreateByteField (Local7, 0x01, UMOD)
                            If (NAnd (LEqual (^^^DAT3, 0x00), LEqual (^^^RCT3, 0x0E)))
                            {
                                If (^^^UDC3)
                                {
                                    Store (Match (\_SB.PCI0.IDEC.UDMT, MEQ, ^^^UDT3, MTR, 0x00, 0x00), UMOD)
                                    Or (UMOD, 0x40, UMOD)
                                }
                                Else
                                {
                                    Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT3, MTR, 0x00, 0x00), MODE)
                                    Store (DerefOf (Index (\_SB.PCI0.IDEC.DMAT, MODE)), UMOD)
                                    Or (UMOD, 0x20, UMOD)
                                }

                                Store (Match (\_SB.PCI0.IDEC.PIOT, MEQ, ^^^RCT3, MTR, 0x00, 0x00), MODE)
                                Or (MODE, 0x08, MODE)
                            }

                            Concatenate (Local6, Local7, Local5)
                            Return (Local5)
                        }
                    }
                }
            }

            Device (AGP)
            {
                Name (_ADR, 0x00020000)
            }

            Device (LAN)
            {
                Name (_ADR, 0x00010001)
                Name (_PRW, Package (0x02)
                {
                    0x0C, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Noop
                    }
                    Else
                    {
                        Noop
                    }
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x00010002)
            }

            Device (AUD)
            {
                Name (_ADR, 0x00010004)
            }

            Device (MOD)
            {
                Name (_ADR, 0x00010006)
                Name (_PRW, Package (0x02)
                {
                    0x0A, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (LEqual (Arg0, Zero))
                    {
                        Noop
                    }
                    Else
                    {
                        Noop
                    }
                }
            }

            Device (EIO)
            {
                Name (_ADR, 0x00010000)
                OperationRegion (PIRQ, PCI_Config, 0x41, 0x04)
                Field (PIRQ, ByteAcc, NoLock, Preserve)
                {
                    PIRA,   8, 
                    PIRB,   8, 
                    PIRC,   8, 
                    PIRD,   8
                }

                OperationRegion (INTE, PCI_Config, 0x47, 0x01)
                Field (INTE, ByteAcc, NoLock, Preserve)
                {
                        ,   2, 
                    PSEN,   1, 
                    KYEN,   1
                }
            }

            Device (DMA1)
            {
                Name (_HID, EisaId ("PNP0200"))
                Name (_CRS, ResourceTemplate ()
                {
                    DMA (Compatibility, BusMaster, Transfer8, )
                        {4}
                    IO (Decode16,
                        0x0000,             // Range Minimum
                        0x0000,             // Range Maximum
                        0x01,               // Alignment
                        0x10,               // Length
                        )
                    IO (Decode16,
                        0x0081,             // Range Minimum
                        0x0081,             // Range Maximum
                        0x01,               // Alignment
                        0x0F,               // Length
                        )
                    IO (Decode16,
                        0x00C0,             // Range Minimum
                        0x00C0,             // Range Maximum
                        0x01,               // Alignment
                        0x20,               // Length
                        )
                })
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }
            }

            Device (RTC)
            {
                Name (_HID, EisaId ("PNP0B00"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode10,
                        0x0070,             // Range Minimum
                        0x0070,             // Range Maximum
                        0x01,               // Alignment
                        0x06,               // Length
                        )
                    IRQNoFlags ()
                        {8}
                })
            }

            Device (PIC)
            {
                Name (_HID, EisaId ("PNP0000"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0020,             // Range Minimum
                        0x0020,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IO (Decode16,
                        0x00A0,             // Range Minimum
                        0x00A0,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IRQNoFlags ()
                        {2}
                })
            }

            Device (COPR)
            {
                Name (_HID, EisaId ("PNP0C04"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x00F0,             // Range Minimum
                        0x00F0,             // Range Maximum
                        0x01,               // Alignment
                        0x10,               // Length
                        )
                    IRQNoFlags ()
                        {13}
                })
            }

            Device (TMR)
            {
                Name (_HID, EisaId ("PNP0100"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0040,             // Range Minimum
                        0x0040,             // Range Maximum
                        0x01,               // Alignment
                        0x04,               // Length
                        )
                    IRQNoFlags ()
                        {0}
                })
            }

            Device (SPKR)
            {
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_HID, EisaId ("PNP0800"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0061,             // Range Minimum
                        0x0061,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                })
            }

            Device (MEM)
            {
                Name (_HID, EisaId ("PNP0C01"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (SMEM, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x000A0000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000DC000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x000E0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFFFE0000,         // Address Base
                            0x00020000,         // Address Length
                            )
                    })
                    Return (SMEM)
                }
            }

            Device (SYSR)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x04D0,             // Range Minimum
                        0x04D0,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IO (Decode16,
                        0x0080,             // Range Minimum
                        0x0080,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x0092,             // Range Minimum
                        0x0092,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x0398,             // Range Minimum
                        0x0398,             // Range Maximum
                        0x01,               // Alignment
                        0x02,               // Length
                        )
                    IO (Decode16,
                        0x0481,             // Range Minimum
                        0x0481,             // Range Maximum
                        0x01,               // Alignment
                        0x03,               // Length
                        )
                    IO (Decode16,
                        0x0487,             // Range Minimum
                        0x0487,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x0489,             // Range Minimum
                        0x0489,             // Range Maximum
                        0x01,               // Alignment
                        0x03,               // Length
                        )
                    IO (Decode16,
                        0x048F,             // Range Minimum
                        0x048F,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x80FF,             // Range Minimum
                        0x80FF,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x8000,             // Range Minimum
                        0x8000,             // Range Maximum
                        0x01,               // Alignment
                        0xFF,               // Length
                        )
                })
            }

            Device (EC)
            {
                Name (_HID, EisaId ("PNP0C09"))
                Name (_GPE, 0x02)
                Name (ECOK, 0x00)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x03))
                    {
                        Store (Arg1, ECOK)
                    }
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0062,             // Range Minimum
                        0x0062,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x0066,             // Range Minimum
                        0x0066,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                })
                OperationRegion (ERAM, EmbeddedControl, 0x00, 0xFF)
                Field (ERAM, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x04), 
                    CMCM,   8, 
                    CMD1,   8, 
                    CMD2,   8, 
                    CMD3,   8, 
                            Offset (0x18), 
                    SMPR,   8, 
                    SMST,   8, 
                    SMAD,   8, 
                    SMCM,   8, 
                    SMD0,   264, 
                    SMAA,   8
                }

                Field (ERAM, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x1C), 
                    SMW0,   16
                }

                Field (ERAM, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x1C), 
                    SMB0,   8
                }

                Field (ERAM, ByteAcc, NoLock, Preserve)
                {
                            Offset (0xA4), 
                    ADP,    1, 
                    BATP,   1, 
                    LIDP,   1, 
                    BTCH,   1, 
                    BST,    2, 
                            Offset (0xA5), 
                            Offset (0xA9), 
                    SLPT,   3, 
                        ,   1, 
                            Offset (0xB8), 
                    ENP,    16, 
                    ENW,    16, 
                    CQS,    16, 
                    PST,    16, 
                    RST,    16, 
                    PQS,    16, 
                    WQS,    16, 
                    MTNR,   8, 
                    QPSW,   1, 
                        ,   6, 
                    QWUT,   1, 
                    DSTR,   16, 
                    NMC1,   8, 
                    NMC2,   7, 
                    LAMP,   1, 
                    EXS,    16, 
                    WDTR,   16, 
                    ICT,    16, 
                            Offset (0xE0), 
                    BARC,   16, 
                    BATS,   16, 
                    AVGE,   16, 
                    TEMP,   16, 
                    BATV,   16, 
                    BATC,   16, 
                    AVGC,   16, 
                    RLTS,   16, 
                    RTTE,   16, 
                    BTDC,   16, 
                    LFCC,   16, 
                    BTDV,   16, 
                    BTSN,   16
                }

                Mutex (MTX0, 0x00)
                Mutex (MTX1, 0x00)
                Method (_Q32, 0, NotSerialized)
                {
                    Store ("====== Power Button event =================", Debug)
                    Notify (\_SB.PWRB, 0x80)
                }

                Method (_Q15, 0, NotSerialized)
                {
                    Store ("====== FN+F12 SLEEP Button event =================", Debug)
                    \_SB.PHS (0x87)
                    Notify (\_SB.SLPB, 0x80)
                }

                Method (_Q14, 0, NotSerialized)
                {
                    Store ("====== FN+F11 PANNEL ON/OFF event ================", Debug)
                    \_SB.PHS (0x88)
                }

                Method (_Q13, 0, NotSerialized)
                {
                    Store ("====== FN+F10 BATTERY LOW BEEP ON/OFF event ======", Debug)
                    \_SB.PHS (0x89)
                }

                Method (_Q0E, 0, NotSerialized)
                {
                    Store ("====== FN+F5 Display Switch event =================", Debug)
                    \_SB.PHS (0x8C)
                }

                Method (_Q0F, 0, NotSerialized)
                {
                    Store ("====== FN+F6 event =================", Debug)
                    \_SB.PHS (0x8D)
                }

                Method (_Q10, 0, NotSerialized)
                {
                    Store ("====== FN+F7 event =================", Debug)
                    \_SB.PHS (0x8E)
                }

                Method (_Q11, 0, NotSerialized)
                {
                    Store ("====== FN+F8 event =================", Debug)
                    \_SB.PHS (0x8F)
                }

                Method (_Q36, 0, NotSerialized)
                {
                    Store ("=============== AC IN  event =================", Debug)
                    \_SB.PHS (0x8B)
                    Notify (\_SB.ACAD, 0x00)
                }

                Method (_QB6, 0, NotSerialized)
                {
                    Store ("=============== AC OUT  event =================", Debug)
                    \_SB.PHS (0x8B)
                    Notify (\_SB.ACAD, 0x01)
                }

                Method (_Q41, 0, NotSerialized)
                {
                    Store ("=============== BATTERY IN  event =================", Debug)
                    \_SB.PHS (0x8B)
                    \_SB.BAT0.IN ()
                }

                Method (_QC1, 0, NotSerialized)
                {
                    Store ("=============== BATTERY OUT  event =================", Debug)
                    \_SB.PHS (0x8B)
                    \_SB.BAT0.OUT ()
                }

                Method (_Q34, 0, NotSerialized)
                {
                    Store ("=============== BATTERY LOW  event =================", Debug)
                    \_SB.PHS (0x8A)
                    Notify (\_SB.BAT0, 0x80)
                }

                Method (_Q31, 0, NotSerialized)
                {
                    Store ("=============== LID OPEN event =================", Debug)
                    Store (One, \_SB.LID.LIDS)
                    Notify (\_SB.LID, 0x80)
                }

                Method (_QB1, 0, NotSerialized)
                {
                    Store ("=============== LID CLOSE event =================", Debug)
                    Store (Zero, \_SB.LID.LIDS)
                    Notify (\_SB.LID, 0x80)
                }

                Method (_Q42, 0, NotSerialized)
                {
                    Store ("============ QSB Pressed/Released event ==============", Debug)
                    Store (\_SB.PCI0.EC.PST, Local0)
                    And (Local0, 0x0FC0, Local0)
                    FindSetRightBit (Local0, Local0)
                    If (LNotEqual (Local0, 0x00))
                    {
                        If (LEqual (Local0, 0x07))
                        {
                            Store (0x90, Local0)
                        }
                        Else
                        {
                            Add (Local0, 0x79, Local0)
                        }

                        Notify (\_SB.PCI0.ESB, Local0)
                    }

                    Store (Zero, \_SB.PCI0.EC.PST)
                }
            }

            Device (PS2M)
            {
                Name (_HID, EisaId ("PNP0F13"))
                Name (_CRS, ResourceTemplate ()
                {
                    IRQNoFlags ()
                        {12}
                })
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }
            }

            Device (PS2K)
            {
                Name (_HID, EisaId ("PNP0303"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0060,             // Range Minimum
                        0x0060,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IO (Decode16,
                        0x0064,             // Range Minimum
                        0x0064,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IRQNoFlags ()
                        {1}
                })
                Method (_STA, 0, NotSerialized)
                {
                    Return (0x0F)
                }
            }

            Device (LPT)
            {
                Name (MCD, 0x13)
                Name (_HID, EisaId ("PNP0400"))
                Name (_UID, 0x01)
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
            }

            Device (LPTB)
            {
                Name (MCD, 0x14)
                Name (_HID, EisaId ("PNP0400"))
                Name (_UID, 0x01)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (ECP)
            {
                Name (MCD, 0x15)
                Name (_HID, EisaId ("PNP0401"))
                Name (_UID, 0x01)
                Name (RSRC, ResourceTemplate ()
                {
                    DMA (Compatibility, NotBusMaster, Transfer8, )
                        {}
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (EPP)
            {
                Name (MCD, 0x17)
                Name (_HID, EisaId ("PNP0400"))
                Name (_UID, 0x01)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (COMA)
            {
                Name (MCD, 0x0E)
                Name (_HID, EisaId ("PNP0500"))
                Name (_UID, 0x01)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (COMB)
            {
                Name (MCD, 0x0F)
                Name (_HID, EisaId ("PNP0500"))
                Name (_UID, 0x02)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (IRDA)
            {
                Name (MCD, 0x11)
                Name (_HID, EisaId ("PNP0510"))
                Name (_UID, 0x02)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (BASK)
            {
                Name (MCD, 0x12)
                Name (_HID, EisaId ("PNP0501"))
                Name (_UID, 0x02)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (B_SR, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (B_PR, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (B_DI, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (FIR)
            {
                Name (MCD, 0x10)
                Name (_HID, EisaId ("NSC6001"))
                Name (_CID, 0x1005D041)
                Name (_UID, 0x02)
                Name (RSRC, ResourceTemplate ()
                {
                    DMA (Compatibility, NotBusMaster, Transfer8, )
                        {}
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x08,               // Length
                        )
                    IRQNoFlags ()
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (FDC)
            {
                Name (MCD, 0x16)
                Name (_HID, EisaId ("PNP0700"))
                Name (_UID, 0x01)
                Name (RSRC, ResourceTemplate ()
                {
                    IO (Decode16,
                        0x0100,             // Range Minimum
                        0x0100,             // Range Maximum
                        0x01,               // Alignment
                        0x06,               // Length
                        )
                    IO (Decode16,
                        0x0107,             // Range Minimum
                        0x0107,             // Range Maximum
                        0x01,               // Alignment
                        0x01,               // Length
                        )
                    IRQNoFlags ()
                        {}
                    DMA (Compatibility, NotBusMaster, Transfer8, )
                        {}
                })
                Method (_CRS, 0, NotSerialized)
                {
                    If (And (_STA (), 0x02))
                    {
                        Acquire (PSMX, 0xFFFF)
                        Store (0x00, BCMD)
                        Store (MCD, DID)
                        Store (Zero, SMIC)
                        Store (INFO, Local0)
                        Release (PSMX)
                        Return (Local0)
                    }

                    Return (RSRC)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x01, BCMD)
                    Store (MCD, DID)
                    Store (Arg0, INFO)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x02, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INFO, Local0)
                    Release (PSMX)
                    Return (Local0)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x03, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Release (PSMX)
                }

                Method (_STA, 0, NotSerialized)
                {
                    Acquire (PSMX, 0xFFFF)
                    Store (0x04, BCMD)
                    Store (MCD, DID)
                    Store (Zero, SMIC)
                    Store (INF, Local0)
                    Release (PSMX)
                    Return (Local0)
                }
            }

            Device (ESB)
            {
                Name (_HID, EisaId ("MTC0001"))
                Method (SLED, 1, NotSerialized)
                {
                    If (LLess (Arg0, 0x04))
                    {
                        Store (0x00, \_SB.PCI0.EC.ICT)
                        Store (0x00, \_SB.PCI0.EC.NMC2)
                        If (LNotEqual (Arg0, 0x00))
                        {
                            If (LEqual (Arg0, 0x01))
                            {
                                Store (0x02, \_SB.PCI0.EC.NMC2)
                                Store (0x5000, \_SB.PCI0.EC.ICT)
                            }
                            Else
                            {
                                If (LEqual (Arg0, 0x03))
                                {
                                    Store (0x01, \_SB.PCI0.EC.NMC2)
                                    Store (0x2000, \_SB.PCI0.EC.ICT)
                                }

                                If (LEqual (Arg0, 0x02))
                                {
                                    Store (0x1000, \_SB.PCI0.EC.ICT)
                                }
                            }
                        }
                    }
                }
            }

            Device (CRD0)
            {
                Name (_ADR, 0x00080000)
            }

            Device (CRD1)
            {
                Name (_ADR, 0x00080001)
            }
        }
    }
}