Re: 2.6.22-rc: regression: no irda0 interface (2.6.21 was OK), smsc does not find chip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wednesday 06 June 2007, Bjorn Helgaas wrote:
> On Tuesday 05 June 2007 05:57:30 am Linus Walleij (LD/EAB) wrote:
> > You don't need to alter the defaults for the Toshiba ALi, the
> > preconfigure will respect the settings from the commandline,
> > e.g. modprobe smsc-ircc2 ircc_fir=0x100,ircc_sir=0x02e8.
> >
> > BUT this value just won't work: we don't know how to tell the ALi 1533
> > to use any other ports than 0x130,0x178,0x03f8,0x02f8 or 0x02e8.
>
> Something's wrong with this strategy.  The BIOS is telling us that an
> SMCf010 device is present, active, and responds at io ports 0x100-0x107
> and 0x2e8-0x2ef.  The fact that it happens to be on the other side of
> an ISA or LPC bridge should be immaterial to the OS driver.
>

I thought this as well.

> If an ACPI BIOS says the device is active, I don't think the OS should
> have to preconfigure anything to make it work.  I don't know whether
> this is just a broken BIOS on this machine, or whether we don't know
> how to use it correctly yet.  The fact that we *do* have to preconfigure
> so much stuff in smsc-ircc2.c makes me think that Linux is missing
> something important in the way we deal with ISA and LPC bridges.
>
> Andrey, can you collect your ACPI DSDT and "lspnp -vv" [1] output?
> Maybe there will be a clue there.
>

dsdt binary and decoded attached. lspnp:

{pts/1}% lspnp -vv
00:00 PNP0c01 System board
    state = active
    allocated resources:
        mem 0x0-0x9ffff
        mem 0xe0000-0xeffff
        mem 0xf0000-0xfffff
        mem 0x100000-0x1ef5ffff

00:01 PNP0a03 PCI bus
    state = active
    allocated resources:
        io 0xcf8-0xcff

00:02 PNP0200 AT DMA controller
    state = active
    allocated resources:
        io 0x0-0xf
        io 0x81-0x83
        io 0x87-0x87
        io 0x89-0x8b
        io 0x8f-0x8f
        io 0xc0-0xdf
        dma 4

00:03 PNP0800 AT speaker
    state = active
    allocated resources:
        io 0x61-0x61

00:04 PNP0c04 Math coprocessor
    state = active
    allocated resources:
        io 0xf0-0xff
        irq 13

00:05 PNP0303 IBM enhanced keyboard (101/102-key, PS/2 mouse support)
    state = active
    allocated resources:
        io 0x60-0x60
        io 0x64-0x64
        irq 1

00:06 PNP0f13 PS/2 port for PS/2-style mice
    state = active
    allocated resources:
        irq 12

00:07 PNP0b00 AT real-time clock
    state = active
    allocated resources:
        io 0x70-0x71
        irq 8

00:08 PNP0c02 Motherboard resources
    state = active
    allocated resources:
        io 0x2e-0x2f
        io 0x62-0x62
        io 0x66-0x66
        io 0x80-0x80
        io 0x84-0x86
        io 0x88-0x88
        io 0x8c-0x8e
        io 0x92-0x92

00:09 PNP0501 16550A-compatible serial port
    state = active
    allocated resources:
        io 0x3f8-0x3ff
        irq 4
    possible resources:
        irq 3,4,5,6,7,10,11 High-Edge
        Dependent: 01 - Priority acceptable
           port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 02 - Priority acceptable
           port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 03 - Priority acceptable
           port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 04 - Priority acceptable
           port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

00:0a SMCf010 SMC Fast Infrared Port
    state = disabled
    possible resources:
        port 0x100-0x130, align 0xf, size 0x8, 16-bit address decoding
        irq 3,4,5,6,7,10,11 High-Edge
        dma 1,2,3 16-bit compatible
        Dependent: 01 - Priority acceptable
           port 0x3f8-0x3f8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 02 - Priority acceptable
           port 0x2e8-0x2e8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 03 - Priority acceptable
           port 0x2f8-0x2f8, align 0x0, size 0x8, 16-bit address decoding
        Dependent: 04 - Priority acceptable
           port 0x3e8-0x3e8, align 0x0, size 0x8, 16-bit address decoding

00:0b PNP0401 ECP printer port
    state = active
    allocated resources:
        io 0x378-0x37a
        io 0x778-0x77a
        irq 7
        dma 3
    possible resources:
        dma 1,2,3 8-bit compatible
        Dependent: 01 - Priority acceptable
           port 0x378-0x378, align 0x0, size 0x3, 16-bit address decoding
           port 0x778-0x778, align 0x0, size 0x3, 16-bit address decoding
           irq 7 High-Edge
        Dependent: 02 - Priority acceptable
           port 0x278-0x278, align 0x0, size 0x3, 16-bit address decoding
           port 0x678-0x678, align 0x0, size 0x3, 16-bit address decoding
           irq 5 High-Edge
        Dependent: 03 - Priority acceptable
           port 0x3bc-0x3bc, align 0x0, size 0x3, 16-bit address decoding
           port 0x7bc-0x7bc, align 0x0, size 0x3, 16-bit address decoding
           irq 7 High-Edge

{pts/1}%

Attachment: dsdt
Description: Binary data

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20051216
 *
 * Disassembly of dsdt, Mon Mar  6 22:51:55 2006
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000068DA (26842)
 *     Revision         0x01
 *     OEM ID           "TOSHIB"
 *     OEM Table ID     "4000    "
 *     OEM Revision     0x20020417 (537003031)
 *     Creator ID       "MSFT"
 *     Creator Revision 0x0100000A (16777226)
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "TOSHIB", "4000    ", 0x20020417)
{
    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S3, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Scope (\_PR)
    {
        Processor (CPU0, 0x01, 0x0000EE10, 0x06)
        {
            Name (_PCT, Package (0x02)
            {
                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x08,               // Register Bit Width
                        0x00,               // Register Bit Offset
                        0x00000000000000B1, // Register Address
                        )
                }, 

                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x10,               // Register Bit Width
                        0x00,               // Register Bit Offset
                        0x000000000000EF40, // Register Address
                        )
                }
            })
            Method (_PSS, 0, NotSerialized)
            {
                If (\_SB.MEM.PSS1)
                {
                    Name (PSSD, Package (0x02)
                    {
                        Package (0x00) {}, 
                        Package (0x00) {}
                    })
                    Name (PSD0, Package (0x06)
                    {
                        0x03E8, 
                        0x55F0, 
                        0xFA, 
                        0xFA, 
                        0x90, 
                        0x00
                    })
                    Name (PSD1, Package (0x06)
                    {
                        0x02BC, 
                        0x2648, 
                        0xFA, 
                        0xFA, 
                        0x91, 
                        0x01
                    })
                    Store (\_SB.MEM.PSS0, Index (PSD0, 0x00))
                    Store (\_SB.MEM.PSS1, Index (PSD1, 0x00))
                    Store (PSD0, Index (PSSD, 0x00))
                    Store (PSD1, Index (PSSD, 0x01))
                    Return (PSSD)
                }
                Else
                {
                    Name (PSSC, Package (0x01)
                    {
                        Package (0x00) {}
                    })
                    Name (PSC0, Package (0x06)
                    {
                        0x03E8, 
                        0x55F0, 
                        0xFA, 
                        0xFA, 
                        0x90, 
                        0x00
                    })
                    Store (\_SB.MEM.PSS0, Index (PSC0, 0x00))
                    Store (PSC0, Index (PSSC, 0x00))
                    Return (PSSC)
                }
            }

            Method (_PPC, 0, NotSerialized)
            {
                SMBR (0xFC00, 0x3D, 0x00, 0x00, 0xB2)
                And (\_SB.MEM.OECX, 0x03, Local0)
                If (LEqual (Local0, 0x00))
                {
                    If (\_SB.MEM.HPSU)
                    {
                        If (\_SB.MEM.ACST)
                        {
                            Return (\_SB.MEM.PULA)
                        }
                        Else
                        {
                            Return (\_SB.MEM.PULD)
                        }
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }
                Else
                {
                    If (LEqual (Local0, 0x01))
                    {
                        Return (0x00)
                    }
                    Else
                    {
                        Return (0x01)
                    }
                }
            }
        }
    }

    Scope (\_SB)
    {
        Device (MEM)
        {
            Name (_HID, EisaId ("PNP0C01"))
            Name (_STA, 0x0F)
            Method (_CRS, 0, NotSerialized)
            {
                Return (CRS (0x01))
            }

            OperationRegion (SRAM, SystemMemory, 0x000EE800, 0x1800)
            Field (SRAM, AnyAcc, NoLock, Preserve)
            {
                PAR1,   16, 
                PAR2,   16, 
                PAR3,   16, 
                PAR4,   16, 
                PAR5,   16, 
                PAR6,   16
            }

            Field (SRAM, AnyAcc, NoLock, Preserve)
            {
                Offset (0x02), 
                RDID,   32, 
                RDSN,   32, 
                CAPB,   16
            }

            Field (SRAM, AnyAcc, NoLock, Preserve)
            {
                IEAX,   32, 
                IEBX,   32, 
                IECX,   32, 
                IEDX,   32, 
                IESI,   32, 
                IEDI,   32, 
                IEBP,   32, 
                Offset (0x20), 
                OEAX,   32, 
                OEBX,   32, 
                OECX,   32, 
                OEDX,   32, 
                OESI,   32, 
                OEDI,   32, 
                OEBP,   32, 
                Offset (0xFF), 
                ACST,   1, 
                BES1,   1, 
                BES2,   1, 
                Offset (0x100), 
                BMN1,   104, 
                BSN1,   88, 
                BTP1,   72, 
                BPU1,   32, 
                BDC1,   32, 
                BLF1,   32, 
                BTC1,   32, 
                BDV1,   32, 
                BST1,   32, 
                BPR1,   32, 
                BRC1,   32, 
                BPV1,   32, 
                Offset (0x149), 
                BCW1,   32, 
                BCL1,   32, 
                BG11,   32, 
                BG21,   32, 
                BOI1,   8, 
                BRF1,   1, 
                Offset (0x200), 
                BMN2,   104, 
                BSN2,   88, 
                BTP2,   72, 
                BPU2,   32, 
                BDC2,   32, 
                BLF2,   32, 
                BTC2,   32, 
                BDV2,   32, 
                BST2,   32, 
                BPR2,   32, 
                BRC2,   32, 
                BPV2,   32, 
                Offset (0x249), 
                BCW2,   32, 
                BCL2,   32, 
                BG12,   32, 
                BG22,   32, 
                BOI2,   32, 
                Offset (0x300), 
                AC01,   16, 
                AC11,   16, 
                PSV1,   16, 
                CRT1,   16, 
                TMP1,   16, 
                AST1,   16, 
                AC21,   16, 
                AC31,   16, 
                AC02,   16, 
                AC12,   16, 
                PSV2,   16, 
                CRT2,   16, 
                TMP2,   16, 
                AST2,   16, 
                AC22,   16, 
                AC32,   16, 
                AC03,   16, 
                AC13,   16, 
                PSV3,   16, 
                CRT3,   16, 
                TMP3,   16, 
                AST3,   16, 
                AC23,   16, 
                AC33,   16, 
                Offset (0x340), 
                TMPF,   16, 
                Offset (0x3F0), 
                FANH,   1, 
                FANL,   7, 
                TF11,   1, 
                TF21,   1, 
                TF31,   1, 
                    ,   1, 
                TF10,   1, 
                TF20,   1, 
                TF30,   1, 
                Offset (0x3F2), 
                TP11,   1, 
                TP21,   1, 
                TP31,   1, 
                Offset (0x400), 
                GP50,   1, 
                GP51,   1, 
                GP52,   1, 
                GP53,   1, 
                GP54,   1, 
                Offset (0x401), 
                GP60,   1, 
                GP61,   1, 
                GP62,   1, 
                GP63,   1, 
                GP64,   1, 
                GP65,   1, 
                GP66,   1, 
                Offset (0x402), 
                GP70,   1, 
                GP71,   1, 
                GP72,   1, 
                GP73,   1, 
                GP74,   1, 
                GP75,   1, 
                GP76,   1, 
                GP77,   1, 
                WED0,   1, 
                WED1,   1, 
                WED2,   1, 
                WED3,   1, 
                WED4,   1, 
                Offset (0x404), 
                SBL0,   1, 
                SBL1,   1, 
                SBL2,   1, 
                SBL3,   1, 
                Offset (0x405), 
                LIDS,   1, 
                VALF,   1, 
                DCST,   1, 
                DOS2,   1, 
                DCKI,   1, 
                DCKF,   1, 
                BT1F,   1, 
                BT2F,   1, 
                NXLA,   1, 
                NXCA,   1, 
                NXTA,   1, 
                NXDA,   1, 
                CTLA,   1, 
                CTCA,   1, 
                CTTA,   1, 
                CTDA,   1, 
                LANA,   1, 
                Offset (0x483), 
                GCVS,   8, 
                Offset (0x4C0), 
                PSS0,   16, 
                PSS1,   16, 
                Offset (0x4D0), 
                SYU0,   1, 
                SYU1,   1, 
                SYU2,   1, 
                SYU3,   1, 
                SYU4,   1, 
                SYU5,   1, 
                SYU6,   1, 
                SYU7,   1, 
                Offset (0x500), 
                HKCD,   8, 
                Offset (0x502), 
                DLID,   32, 
                DSRN,   32, 
                Offset (0x50E), 
                BDID,   32, 
                DSPW,   1, 
                VGAF,   1, 
                VWE0,   1, 
                VWE1,   1, 
                PPSC,   1, 
                SPSC,   1, 
                EWLD,   1, 
                EPWS,   1, 
                LCDS,   4, 
                CRTS,   4, 
                VWE2,   1, 
                WEF0,   1, 
                WEF1,   1, 
                WED5,   1, 
                IEWE,   1, 
                Offset (0x515), 
                BTMD,   1, 
                WSF0,   1, 
                WSF1,   1, 
                GP83,   1, 
                WUIE,   1, 
                    ,   1, 
                BPFE,   1, 
                BWUE,   1, 
                DVIS,   4, 
                Offset (0x517), 
                HTM0,   1, 
                HTM1,   1, 
                Offset (0x518), 
                PSND,   1, 
                PMDM,   1, 
                Offset (0x520), 
                VGAR,   1, 
                KBCR,   1, 
                ID0R,   1, 
                ID1R,   1, 
                ID2R,   1, 
                ID3R,   1, 
                IDAR,   1, 
                ACLR,   1, 
                BTRE,   1, 
                Offset (0x701), 
                HAPS,   2, 
                HHSW,   2, 
                HPSU,   2, 
                HRCU,   2, 
                HGSU,   2, 
                HEBI,   2, 
                HTMD,   2, 
                Offset (0x708), 
                TNVS,   1, 
                OSPC,   1, 
                ACBK,   1, 
                Offset (0x70A), 
                PULD,   8, 
                PULA,   8, 
                BCLD,   8, 
                BCLA,   8, 
                Offset (0x710), 
                OSID,   8, 
                Offset (0x720), 
                MSSI,   16, 
                MSSS,   8, 
                MSSR,   8, 
                MSP0,   8, 
                MSC0,   8, 
                MSP1,   8, 
                MSC1,   8, 
                Offset (0x740), 
                Offset (0x800), 
                PRES,   32768
            }

            Field (SRAM, AnyAcc, NoLock, Preserve)
            {
                Offset (0x406), 
                NXDD,   4, 
                CTDD,   4
            }

            Field (SRAM, AnyAcc, NoLock, Preserve)
            {
                Offset (0x800), 
                Offset (0x808), 
                Offset (0x812), 
                Offset (0x814), 
                Offset (0x818), 
                FSDP,   8, 
                Offset (0x823), 
                Offset (0x826), 
                Offset (0x836), 
                Offset (0x87E), 
                Offset (0x87F), 
                EDCK,   8
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00)
            Name (_CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x00FF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0100,             // Address Length
                    ,,)
                IO (Decode16,
                    0x0CF8,             // Address Range Minimum
                    0x0CF8,             // Address Range Maximum
                    0x01,               // Address Alignment
                    0x08,               // Address Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0000,             // Address Range Minimum
                    0x0CF7,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0x0CF8,             // Address Length
                    ,,, TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Address Space Granularity
                    0x0D00,             // Address Range Minimum
                    0xFFFF,             // Address Range Maximum
                    0x0000,             // Address Translation Offset
                    0xF300,             // Address Length
                    ,,, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000A0000,         // Address Range Minimum
                    0x000BFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00020000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x000D8000,         // Address Range Minimum
                    0x000DFFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0x00008000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Address Space Granularity
                    0x40100000,         // Address Range Minimum
                    0xFEE9FFFF,         // Address Range Maximum
                    0x00000000,         // Address Translation Offset
                    0xBEEA0000,         // Address Length
                    ,,, AddressRangeMemory, TypeStatic)
            })
            Name (_PRT, Package (0x0A)
            {
                Package (0x04)
                {
                    0x0014FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0011FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0011FFFF, 
                    0x01, 
                    \_SB.PCI0.FNC0.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000AFFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x01, 
                    \_SB.PCI0.FNC0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000CFFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0006FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKH, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0012FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0002FFFF, 
                    0x00, 
                    \_SB.PCI0.FNC0.LNKG, 
                    0x00
                }
            })
            Device (FNC0)
            {
                Name (_ADR, 0x00070000)
                OperationRegion (M153, PCI_Config, 0x00, 0xFF)
                Field (M153, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x44), 
                    IRQJ,   4, 
                        ,   3, 
                    RSTC,   1, 
                    Offset (0x48), 
                    IRQA,   4, 
                    IRQB,   4, 
                    IRQC,   4, 
                    IRQD,   4, 
                    IRQE,   4, 
                    IRQF,   4, 
                    IRQI,   4, 
                    IRQH,   4, 
                    Offset (0x52), 
                        ,   13, 
                    CUS1,   1, 
                    Offset (0x74), 
                    IRQG,   4, 
                    Offset (0x75), 
                    IRQK,   4, 
                    Offset (0x77), 
                        ,   3, 
                    CSND,   1, 
                        ,   1, 
                    CMDM,   1
                }

                Device (LNKA)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x01)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQA))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQA))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQA)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQA)
                    }
                }

                Device (LNKB)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQB))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQB))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQB)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQB)
                    }
                }

                Device (LNKC)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x03)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQC))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQC))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQC)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQC)
                    }
                }

                Device (LNKD)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x04)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQD))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQD))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQD)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQD)
                    }
                }

                Device (LNKG)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x07)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQG))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQG))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQG)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQG)
                    }
                }

                Device (LNKH)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x08)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STAL (\_SB.PCI0.FNC0.IRQH))
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared)
                            {3,4,5,6,7,10,11}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRSL (\_SB.PCI0.FNC0.IRQH))
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.PCI0.FNC0.IRQH)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Name (IRQT, Package (0x10)
                        {
                            0x00, 
                            0x08, 
                            0x00, 
                            0x02, 
                            0x04, 
                            0x05, 
                            0x07, 
                            0x06, 
                            0x00, 
                            0x01, 
                            0x03, 
                            0x09, 
                            0x0B, 
                            0x00, 
                            0x0D, 
                            0x0F
                        })
                        CreateWordField (Arg0, 0x01, IRQX)
                        FindSetRightBit (IRQX, Local0)
                        Decrement (Local0)
                        Store (DerefOf (Index (IRQT, Local0)), Local1)
                        Store (Local1, \_SB.PCI0.FNC0.IRQH)
                    }
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Address Range Minimum
                            0x0000,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0081,             // Address Range Minimum
                            0x0081,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0087,             // Address Range Minimum
                            0x0087,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0089,             // Address Range Minimum
                            0x0089,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x008F,             // Address Range Minimum
                            0x008F,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x00C0,             // Address Range Minimum
                            0x00C0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x20,               // Address Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8)
                            {4}
                    })
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Address Range Minimum
                            0x0020,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x00A0,             // Address Range Minimum
                            0x00A0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {2}
                    })
                }

                Device (PIT)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Address Range Minimum
                            0x0040,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {0}
                    })
                }

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

                Device (NDP)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Address Range Minimum
                            0x00F0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Shared)
                            {13}
                    })
                }

                Device (KBC)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Method (_STA, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.KBCR, 0x00)) {}
                        Return (0x0F)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Address Range Minimum
                            0x0060,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0064,             // Address Range Minimum
                            0x0064,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {1}
                    })
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F13"))
                    Method (_STA, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.KBCR, 0x00)) {}
                        Return (0x0F)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {12}
                    })
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Address Range Minimum
                            0x0070,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive)
                            {8}
                    })
                }

                Device (SYSR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x002E,             // Address Range Minimum
                            0x002E,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x0062,             // Address Range Minimum
                            0x0062,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0066,             // Address Range Minimum
                            0x0066,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0080,             // Address Range Minimum
                            0x0080,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0084,             // Address Range Minimum
                            0x0084,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0088,             // Address Range Minimum
                            0x0088,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x008C,             // Address Range Minimum
                            0x008C,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x03,               // Address Length
                            )
                        IO (Decode16,
                            0x0092,             // Address Range Minimum
                            0x0092,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x00B0,             // Address Range Minimum
                            0x00B0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x04,               // Address Length
                            )
                        IO (Decode16,
                            0x00E0,             // Address Range Minimum
                            0x00E0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x0370,             // Address Range Minimum
                            0x0370,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x040B,             // Address Range Minimum
                            0x040B,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x0480,             // Address Range Minimum
                            0x0480,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0x04D0,             // Address Range Minimum
                            0x04D0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x02,               // Address Length
                            )
                        IO (Decode16,
                            0x04D6,             // Address Range Minimum
                            0x04D6,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0x06C0,             // Address Range Minimum
                            0x06C0,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x40,               // Address Length
                            )
                        IO (Decode16,
                            0xE000,             // Address Range Minimum
                            0xE000,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xE080,             // Address Range Minimum
                            0xE080,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xE400,             // Address Range Minimum
                            0xE400,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xE480,             // Address Range Minimum
                            0xE480,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xE800,             // Address Range Minimum
                            0xE800,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xE880,             // Address Range Minimum
                            0xE880,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xEC00,             // Address Range Minimum
                            0xEC00,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xEC80,             // Address Range Minimum
                            0xEC80,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x80,               // Address Length
                            )
                        IO (Decode16,
                            0xEE00,             // Address Range Minimum
                            0xEE00,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x42,               // Address Length
                            )
                        IO (Decode16,
                            0xEE90,             // Address Range Minimum
                            0xEE90,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x10,               // Address Length
                            )
                        IO (Decode16,
                            0xEEAC,             // Address Range Minimum
                            0xEEAC,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x01,               // Address Length
                            )
                        IO (Decode16,
                            0xEF00,             // Address Range Minimum
                            0xEF00,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x40,               // Address Length
                            )
                        IO (Decode16,
                            0xEF40,             // Address Range Minimum
                            0xEF40,             // Address Range Maximum
                            0x01,               // Address Alignment
                            0x20,               // Address Length
                            )
                    })
                    OperationRegion (SRG1, SystemIO, 0xB1, 0x01)
                    Field (SRG1, ByteAcc, NoLock, Preserve)
                    {
                        TRP4,   8
                    }
                }

                Device (COM)
                {
                    Name (_HID, EisaId ("PNP0501"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x0E))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x0E))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x0E))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x0E, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x0E)
                    }

                    Method (_PS0, 0, NotSerialized)
                    {
                        PS0 (0x0E)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        PS3 (0x0E)
                    }

                    Method (_PSC, 0, NotSerialized)
                    {
                        Return (PSC (0x0E))
                    }

                    Name (_PRW, Package (0x02)
                    {
                        0x08, 
                        0x03
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        Store (Arg0, \_SB.MEM.WED0)
                    }
                }

                Device (FSIR)
                {
                    Name (_HID, EisaId ("SMCF010"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x0F))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x0F))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x0F))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x0F, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x0F)
                    }
                }

                Device (PRT)
                {
                    Name (_HID, EisaId ("PNP0401"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x10))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x10))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x10))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x10, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x10)
                    }
                }

                Device (PRT1)
                {
                    Name (_HID, EisaId ("PNP0400"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x12))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x12))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x12))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x12, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x12)
                    }
                }

                Device (PCC0)
                {
                    Name (_HID, EisaId ("PNP0E00"))
                    Name (_UID, 0x01)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x13))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x13))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x13))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x13, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x13)
                    }

                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x03
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        Store (Arg0, \_SB.MEM.WED2)
                    }

                    Device (PCS0)
                    {
                        Name (_ADR, 0x00)
                        Name (_SUN, 0x00)
                    }

                    Device (PCS1)
                    {
                        Name (_ADR, 0x01)
                        Name (_SUN, 0x01)
                    }
                }

                Device (ATA)
                {
                    Name (_HID, EisaId ("PNP0600"))
                    Name (_UID, 0x03)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x16))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x16))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x16))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x16, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x16)
                    }
                }
            }

            Device (FNC1)
            {
                Name (_ADR, 0x00040000)
                OperationRegion (IDEC, PCI_Config, 0x00, 0xFF)
                Field (IDEC, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x54), 
                    FTHP,   4, 
                    Offset (0x55), 
                    FTHS,   4, 
                    Offset (0x56), 
                    PUDS,   4, 
                    Offset (0x57), 
                    SUDS,   4, 
                    Offset (0x58), 
                    PAST,   3, 
                    Offset (0x59), 
                    PCRC,   4, 
                    PCAC,   3, 
                    Offset (0x5A), 
                    PDRC,   4, 
                    PDAC,   3, 
                    Offset (0x5C), 
                    SAST,   3, 
                    Offset (0x5D), 
                    SCRC,   4, 
                    SCAC,   3, 
                    Offset (0x5E), 
                    SDRC,   4, 
                    SDAC,   3
                }

                Device (IDE0)
                {
                    Name (_ADR, 0x00)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (0x0F)
                    }

                    Method (_PS0, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                        Store (0x00, \_SB.MEM.PPSC)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                        Store (0x01, \_SB.MEM.PPSC)
                    }

                    Method (_PSC, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                        If (\_SB.MEM.PPSC)
                        {
                            Return (0x03)
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                        Store (0x01, \_SB.MEM.HTM0)
                        CreateDWordField (Arg0, 0x00, PPIO)
                        CreateDWordField (Arg0, 0x04, PDMA)
                        CreateDWordField (Arg0, 0x10, PFLG)
                        Store (PPIO, Local0)
                        Store (0x03, Local1)
                        Store (0x0A, Local2)
                        Store (0x00, Local3)
                        Store (0x08, Local4)
                        Store (0x08, Local5)
                        If (LNot (LGreater (Local0, 0x78)))
                        {
                            Store (0x02, Local1)
                            Store (0x01, Local2)
                            Store (0x03, Local3)
                            Store (0x01, Local4)
                            Store (0x03, Local5)
                        }
                        Else
                        {
                            If (LNot (LGreater (Local0, 0xB4)))
                            {
                                Store (0x02, Local1)
                                Store (0x03, Local2)
                                Store (0x03, Local3)
                                Store (0x03, Local4)
                                Store (0x03, Local5)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0xF0)))
                                {
                                    Store (0x02, Local1)
                                    Store (0x01, Local2)
                                    Store (0x00, Local3)
                                    Store (0x04, Local4)
                                    Store (0x04, Local5)
                                }
                                Else
                                {
                                    If (LNot (LGreater (Local0, 0x017F)))
                                    {
                                        Store (0x02, Local1)
                                        Store (0x03, Local2)
                                        Store (0x00, Local3)
                                        Store (0x08, Local4)
                                        Store (0x05, Local5)
                                    }
                                }
                            }
                        }

                        If (LNot (LEqual (Local0, 0xFFFFFFFF)))
                        {
                            Store (Local1, \_SB.PCI0.FNC1.PAST)
                            Store (Local2, \_SB.PCI0.FNC1.PCRC)
                            Store (Local3, \_SB.PCI0.FNC1.PCAC)
                            Store (Local4, \_SB.PCI0.FNC1.PDRC)
                            Store (Local5, \_SB.PCI0.FNC1.PDAC)
                            Store (0x05, \_SB.PCI0.FNC1.FTHP)
                        }

                        Store (PDMA, Local0)
                        Store (PFLG, Local1)
                        And (Local1, 0x01, Local1)
                        ShiftLeft (Local1, 0x03, Local1)
                        If (Local1)
                        {
                            Store (0x04, Local2)
                            If (LNot (LGreater (Local0, 0x1E)))
                            {
                                Store (0x00, Local2)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0x2D)))
                                {
                                    Store (0x01, Local2)
                                }
                                Else
                                {
                                    If (LNot (LGreater (Local0, 0x3C)))
                                    {
                                        Store (0x02, Local2)
                                    }
                                    Else
                                    {
                                        If (LNot (LGreater (Local0, 0x5A)))
                                        {
                                            Store (0x03, Local2)
                                        }
                                    }
                                }
                            }
                        }
                        Else
                        {
                            Store (0x07, Local2)
                            If (LNot (LGreater (Local0, 0x4B)))
                            {
                                Store (0x05, Local2)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0x5A)))
                                {
                                    Store (0x06, Local2)
                                }
                            }
                        }

                        If (LNot (LEqual (Local0, 0xFFFFFFFF)))
                        {
                            Or (Local1, Local2, Local1)
                            Store (Local1, \_SB.PCI0.FNC1.PUDS)
                            Store (0x01, \_SB.PCI0.FNC1.FTHP)
                        }
                    }

                    Method (_GTM, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                        Store (0x01, \_SB.MEM.HTM0)
                        Store (\_SB.PCI0.FNC1.PCRC, Local0)
                        Store (\_SB.PCI0.FNC1.PCAC, Local1)
                        ShiftLeft (Local1, 0x04, Local1)
                        Or (Local0, Local1, Local0)
                        Store (0x0258, Local2)
                        If (LEqual (Local0, 0x31))
                        {
                            Store (0x78, Local2)
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x33))
                            {
                                Store (0xB4, Local2)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x01))
                                {
                                    Store (0xF0, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x03))
                                    {
                                        Store (0x017F, Local2)
                                    }
                                }
                            }
                        }

                        Store (\_SB.PCI0.FNC1.PUDS, Local0)
                        And (Local0, 0x08, Local1)
                        And (Local0, 0x07, Local0)
                        Store (0x02, Local4)
                        If (Local1)
                        {
                            Store (0x03, Local4)
                            Store (0x78, Local3)
                            If (LEqual (Local0, 0x00))
                            {
                                Store (0x1E, Local3)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x01))
                                {
                                    Store (0x2D, Local3)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x02))
                                    {
                                        Store (0x3C, Local3)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x03))
                                        {
                                            Store (0x5A, Local3)
                                        }
                                    }
                                }
                            }
                        }
                        Else
                        {
                            Store (0x69, Local3)
                            If (LEqual (Local0, 0x05))
                            {
                                Store (0x4B, Local3)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x06))
                                {
                                    Store (0x5A, Local3)
                                }
                            }
                        }

                        Name (BUFF, Buffer (0x14) {})
                        CreateDWordField (BUFF, 0x00, PIO1)
                        CreateDWordField (BUFF, 0x04, DMA1)
                        CreateDWordField (BUFF, 0x08, PIO2)
                        CreateDWordField (BUFF, 0x0C, DMA2)
                        CreateDWordField (BUFF, 0x10, FLGS)
                        Store (Local2, PIO1)
                        Store (Local3, DMA1)
                        Store (0xFFFFFFFF, PIO2)
                        Store (0xFFFFFFFF, DMA2)
                        Store (Local4, FLGS)
                        Return (BUFF)
                    }

                    Device (HD_0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            While (LEqual (\_SB.MEM.ID0R, 0x00)) {}
                            Store (0x01, \_SB.MEM.HTM0)
                            Name (BUFF, Buffer (0x0E)
                            {
                                0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x03, 
                                0x23, 0x00, 0x00, 0x00, 0x00, 0xEF
                            })
                            CreateByteField (BUFF, 0x01, PIOM)
                            CreateByteField (BUFF, 0x08, DMAM)
                            Store (\_SB.PCI0.FNC1.PCRC, Local0)
                            Store (\_SB.PCI0.FNC1.PCAC, Local1)
                            ShiftLeft (Local1, 0x04, Local1)
                            Or (Local0, Local1, Local0)
                            Store (0x08, Local1)
                            If (LEqual (Local0, 0x31))
                            {
                                Store (0x0C, Local1)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x33))
                                {
                                    Store (0x0B, Local1)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x01))
                                    {
                                        Store (0x0A, Local1)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x03))
                                        {
                                            Store (0x09, Local1)
                                        }
                                    }
                                }
                            }

                            Store (\_SB.PCI0.FNC1.PUDS, Local0)
                            And (Local0, 0x08, Local2)
                            And (Local0, 0x07, Local0)
                            If (Local2)
                            {
                                Store (0x40, Local2)
                                If (LEqual (Local0, 0x00))
                                {
                                    Store (0x44, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x01))
                                    {
                                        Store (0x43, Local2)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x02))
                                        {
                                            Store (0x42, Local2)
                                        }
                                        Else
                                        {
                                            If (LEqual (Local0, 0x03))
                                            {
                                                Store (0x41, Local2)
                                            }
                                        }
                                    }
                                }
                            }
                            Else
                            {
                                Store (0x20, Local2)
                                If (LEqual (Local0, 0x05))
                                {
                                    Store (0x22, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x06))
                                    {
                                        Store (0x21, Local2)
                                    }
                                }
                            }

                            Store (Local1, PIOM)
                            Store (Local2, DMAM)
                            Return (BUFF)
                        }
                    }
                }

                Device (IDE1)
                {
                    Name (_ADR, 0x01)
                    Method (_PS0, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                        SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                        And (\_SB.MEM.OECX, 0x02, Local0)
                        If (Local0)
                        {
                            Store (0x00, \_SB.MEM.SPSC)
                            Store (0x01, \_SB.MEM.IESI)
                            Store (0x02, \_SB.MEM.IEDI)
                            SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                            If (\_SB.MEM.OEDX)
                            {
                                Store (0x01, \_SB.MEM.IESI)
                                Store (0x02, \_SB.MEM.IEDI)
                                SMBR (0xFF00, 0x23, 0x20, 0x00, 0xB2)
                                Store (0x01, \_SB.MEM.OECX)
                                While (\_SB.MEM.OECX)
                                {
                                    Store (0x01, \_SB.MEM.IESI)
                                    Store (0x02, \_SB.MEM.IEDI)
                                    SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                                }
                            }
                        }
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                        SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                        And (\_SB.MEM.OECX, 0x02, Local0)
                        If (Local0)
                        {
                            Store (0x01, \_SB.MEM.SPSC)
                            Store (0x01, \_SB.MEM.IESI)
                            Store (0x02, \_SB.MEM.IEDI)
                            SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                            If (LNot (LEqual (\_SB.MEM.OEDX, 0x03)))
                            {
                                Store (0x01, \_SB.MEM.IESI)
                                Store (0x02, \_SB.MEM.IEDI)
                                SMBR (0xFF00, 0x23, 0x20, 0x03, 0xB2)
                                Store (0x01, \_SB.MEM.OECX)
                                While (\_SB.MEM.OECX)
                                {
                                    Store (0x01, \_SB.MEM.IESI)
                                    Store (0x02, \_SB.MEM.IEDI)
                                    SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                                }
                            }
                        }
                    }

                    Method (_PSC, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                        SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                        And (\_SB.MEM.OECX, 0x02, Local0)
                        If (Local0)
                        {
                            If (\_SB.MEM.SPSC)
                            {
                                Return (0x03)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                        Store (0x01, \_SB.MEM.HTM1)
                        CreateDWordField (Arg0, 0x00, PPIO)
                        CreateDWordField (Arg0, 0x04, PDMA)
                        CreateDWordField (Arg0, 0x10, PFLG)
                        Store (PPIO, Local0)
                        Store (0x03, Local1)
                        Store (0x0A, Local2)
                        Store (0x00, Local3)
                        Store (0x08, Local4)
                        Store (0x08, Local5)
                        If (LNot (LGreater (Local0, 0x78)))
                        {
                            Store (0x02, Local1)
                            Store (0x01, Local2)
                            Store (0x03, Local3)
                            Store (0x01, Local4)
                            Store (0x03, Local5)
                        }
                        Else
                        {
                            If (LNot (LGreater (Local0, 0xB4)))
                            {
                                Store (0x02, Local1)
                                Store (0x03, Local2)
                                Store (0x03, Local3)
                                Store (0x03, Local4)
                                Store (0x03, Local5)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0xF0)))
                                {
                                    Store (0x02, Local1)
                                    Store (0x01, Local2)
                                    Store (0x00, Local3)
                                    Store (0x04, Local4)
                                    Store (0x04, Local5)
                                }
                                Else
                                {
                                    If (LNot (LGreater (Local0, 0x017F)))
                                    {
                                        Store (0x02, Local1)
                                        Store (0x03, Local2)
                                        Store (0x00, Local3)
                                        Store (0x08, Local4)
                                        Store (0x05, Local5)
                                    }
                                }
                            }
                        }

                        If (LNot (LEqual (Local0, 0xFFFFFFFF)))
                        {
                            Store (Local1, \_SB.PCI0.FNC1.SAST)
                            Store (Local2, \_SB.PCI0.FNC1.SCRC)
                            Store (Local3, \_SB.PCI0.FNC1.SCAC)
                            Store (Local4, \_SB.PCI0.FNC1.SDRC)
                            Store (Local5, \_SB.PCI0.FNC1.SDAC)
                            Store (0x05, \_SB.PCI0.FNC1.FTHS)
                        }

                        Store (PDMA, Local0)
                        Store (PFLG, Local1)
                        And (Local1, 0x01, Local1)
                        ShiftLeft (Local1, 0x03, Local1)
                        If (Local1)
                        {
                            Store (0x04, Local2)
                            If (LNot (LGreater (Local0, 0x1E)))
                            {
                                Store (0x00, Local2)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0x2D)))
                                {
                                    Store (0x01, Local2)
                                }
                                Else
                                {
                                    If (LNot (LGreater (Local0, 0x3C)))
                                    {
                                        Store (0x02, Local2)
                                    }
                                    Else
                                    {
                                        If (LNot (LGreater (Local0, 0x5A)))
                                        {
                                            Store (0x03, Local2)
                                        }
                                    }
                                }
                            }
                        }
                        Else
                        {
                            Store (0x07, Local2)
                            If (LNot (LGreater (Local0, 0x4B)))
                            {
                                Store (0x05, Local2)
                            }
                            Else
                            {
                                If (LNot (LGreater (Local0, 0x5A)))
                                {
                                    Store (0x06, Local2)
                                }
                            }
                        }

                        If (LNot (LEqual (Local0, 0xFFFFFFFF)))
                        {
                            Or (Local1, Local2, Local1)
                            Store (Local1, \_SB.PCI0.FNC1.SUDS)
                            Store (0x01, \_SB.PCI0.FNC1.FTHS)
                        }
                    }

                    Method (_GTM, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                        Store (0x01, \_SB.MEM.HTM1)
                        Store (\_SB.PCI0.FNC1.SCRC, Local0)
                        Store (\_SB.PCI0.FNC1.SCAC, Local1)
                        ShiftLeft (Local1, 0x04, Local1)
                        Or (Local0, Local1, Local0)
                        Store (0x0258, Local2)
                        If (LEqual (Local0, 0x31))
                        {
                            Store (0x78, Local2)
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x33))
                            {
                                Store (0xB4, Local2)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x01))
                                {
                                    Store (0xF0, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x03))
                                    {
                                        Store (0x017F, Local2)
                                    }
                                }
                            }
                        }

                        Store (\_SB.PCI0.FNC1.SUDS, Local0)
                        And (Local0, 0x08, Local1)
                        And (Local0, 0x07, Local0)
                        Store (0x02, Local4)
                        If (Local1)
                        {
                            Store (0x03, Local4)
                            Store (0x78, Local3)
                            If (LEqual (Local0, 0x00))
                            {
                                Store (0x1E, Local3)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x01))
                                {
                                    Store (0x2D, Local3)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x02))
                                    {
                                        Store (0x3C, Local3)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x03))
                                        {
                                            Store (0x5A, Local3)
                                        }
                                    }
                                }
                            }
                        }
                        Else
                        {
                            Store (0x69, Local3)
                            If (LEqual (Local0, 0x05))
                            {
                                Store (0x4B, Local3)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x06))
                                {
                                    Store (0x5A, Local3)
                                }
                            }
                        }

                        Name (BUFF, Buffer (0x14) {})
                        CreateDWordField (BUFF, 0x00, PIO1)
                        CreateDWordField (BUFF, 0x04, DMA1)
                        CreateDWordField (BUFF, 0x08, PIO2)
                        CreateDWordField (BUFF, 0x0C, DMA2)
                        CreateDWordField (BUFF, 0x10, FLGS)
                        Store (Local2, PIO1)
                        Store (Local3, DMA1)
                        Store (0xFFFFFFFF, PIO2)
                        Store (0xFFFFFFFF, DMA2)
                        Store (Local4, FLGS)
                        Return (BUFF)
                    }

                    Device (HD_1)
                    {
                        Name (_ADR, 0x00)
                        Method (_STA, 0, NotSerialized)
                        {
                            While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                            SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                            And (\_SB.MEM.OECX, 0x02, Local0)
                            If (Local0)
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }

                        Method (_EJ0, 1, NotSerialized)
                        {
                            SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                            And (\_SB.MEM.OECX, 0x02, Local0)
                            If (Local0)
                            {
                                Store (0x01, \_SB.MEM.IESI)
                                Store (0x02, \_SB.MEM.IEDI)
                                SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                                If (LNot (LEqual (\_SB.MEM.OEDX, 0x03)))
                                {
                                    Store (0x01, \_SB.MEM.IESI)
                                    Store (0x02, \_SB.MEM.IEDI)
                                    SMBR (0xFF00, 0x23, 0x20, 0x03, 0xB2)
                                    Store (0x01, \_SB.MEM.OECX)
                                    While (\_SB.MEM.OECX)
                                    {
                                        Store (0x01, \_SB.MEM.IESI)
                                        Store (0x02, \_SB.MEM.IEDI)
                                        SMBR (0xFE00, 0x23, 0x20, 0x00, 0xB2)
                                    }
                                }
                            }
                        }

                        Method (_GTF, 0, NotSerialized)
                        {
                            While (LEqual (\_SB.MEM.ID1R, 0x00)) {}
                            Store (0x01, \_SB.MEM.HTM1)
                            Name (BUFF, Buffer (0x0E)
                            {
                                0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x03, 
                                0x23, 0x00, 0x00, 0x00, 0x00, 0xEF
                            })
                            CreateByteField (BUFF, 0x01, PIOM)
                            CreateByteField (BUFF, 0x08, DMAM)
                            Store (\_SB.PCI0.FNC1.SCRC, Local0)
                            Store (\_SB.PCI0.FNC1.SCAC, Local1)
                            ShiftLeft (Local1, 0x04, Local1)
                            Or (Local0, Local1, Local0)
                            Store (0x08, Local1)
                            If (LEqual (Local0, 0x31))
                            {
                                Store (0x0C, Local1)
                            }
                            Else
                            {
                                If (LEqual (Local0, 0x33))
                                {
                                    Store (0x0B, Local1)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x01))
                                    {
                                        Store (0x0A, Local1)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x03))
                                        {
                                            Store (0x09, Local1)
                                        }
                                    }
                                }
                            }

                            Store (\_SB.PCI0.FNC1.SUDS, Local0)
                            And (Local0, 0x08, Local2)
                            And (Local0, 0x07, Local0)
                            If (Local2)
                            {
                                Store (0x40, Local2)
                                If (LEqual (Local0, 0x00))
                                {
                                    Store (0x44, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x01))
                                    {
                                        Store (0x43, Local2)
                                    }
                                    Else
                                    {
                                        If (LEqual (Local0, 0x02))
                                        {
                                            Store (0x42, Local2)
                                        }
                                        Else
                                        {
                                            If (LEqual (Local0, 0x03))
                                            {
                                                Store (0x41, Local2)
                                            }
                                        }
                                    }
                                }
                            }
                            Else
                            {
                                Store (0x20, Local2)
                                If (LEqual (Local0, 0x05))
                                {
                                    Store (0x22, Local2)
                                }
                                Else
                                {
                                    If (LEqual (Local0, 0x06))
                                    {
                                        Store (0x21, Local2)
                                    }
                                }
                            }

                            Store (Local1, PIOM)
                            Store (Local2, DMAM)
                            Return (BUFF)
                        }
                    }
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x00020000)
                OperationRegion (USP1, PCI_Config, 0x00, 0xFF)
                Field (USP1, ByteAcc, NoLock, Preserve)
                {
                    UVI1,   16, 
                    UDI1,   16, 
                    Offset (0x09), 
                    UPI1,   8, 
                    USC1,   8, 
                    UBC1,   8
                }

                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.WED3)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.WED3)
                    }
                }

                Device (RHB0)
                {
                    Name (_ADR, 0x00)
                    Device (PT01)
                    {
                        Name (_ADR, 0x01)
                        Name (_EJD, "\\_SB_.PCI0.DOCK")
                    }

                    Device (PT02)
                    {
                        Name (_ADR, 0x02)
                        Name (_EJD, "\\_SB_.PCI0.DOCK")
                    }
                }
            }

            Device (ASND)
            {
                Name (_ADR, 0x00060000)
                Method (_PS0, 0, NotSerialized)
                {
                    While (LEqual (\_SB.MEM.ACLR, 0x00)) {}
                    Store (0x00, \_SB.MEM.PSND)
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x01, \_SB.MEM.PSND)
                }

                Method (_PSC, 0, NotSerialized)
                {
                    If (\_SB.MEM.PSND)
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.WED1)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.WED1)
                    }
                }
            }

            Device (IEEE)
            {
                Name (_ADR, 0x000C0000)
                OperationRegion (IEEC, PCI_Config, 0x00, 0xFF)
                Field (IEEC, ByteAcc, NoLock, Preserve)
                {
                    IVI0,   16, 
                    IDI0,   16, 
                    Offset (0x09), 
                    IPI0,   8, 
                    ISC0,   8, 
                    IBC0,   8
                }

                Name (_EJD, "\\_SB_.PCI0.DOCK")
            }

            Device (VIY0)
            {
                Name (_ADR, 0x00110000)
                Name (_SUN, 0x00)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.VWE0)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.VWE0)
                    }
                }
            }

            Device (VIY1)
            {
                Name (_ADR, 0x00110001)
                Name (_SUN, 0x01)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.VWE1)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.VWE1)
                    }
                }
            }

            Device (LAN)
            {
                Name (_ADR, 0x000A0000)
                OperationRegion (PLAN, PCI_Config, 0x00, 0xFF)
                Field (PLAN, ByteAcc, NoLock, Preserve)
                {
                    PLVI,   16, 
                    Offset (0xE1), 
                    PMES,   8
                }

                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.WED4)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.WED4)
                    }
                }
            }

            Device (MPC0)
            {
                Name (_ADR, 0x00100000)
                OperationRegion (MPF0, PCI_Config, 0x00, 0xFF)
                Field (MPF0, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x0A), 
                    MCC0,   16
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Name (BUFF, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    If (LEqual (\_SB.PCI0.MPC0.MCC0, 0x0200)) {}
                    Else
                    {
                        Store (0x03, Index (BUFF, 0x01))
                    }

                    Return (BUFF)
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.WEF0)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.WEF0)
                    }
                }
            }

            Device (MPC1)
            {
                Name (_ADR, 0x00100001)
                OperationRegion (MPF1, PCI_Config, 0x00, 0xFF)
                Field (MPF1, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x0A), 
                    MCC1,   16
                }

                Method (_PRW, 0, NotSerialized)
                {
                    Name (BUFF, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    If (LEqual (\_SB.PCI0.MPC1.MCC1, 0x0200)) {}
                    Else
                    {
                        Store (0x03, Index (BUFF, 0x01))
                    }

                    Return (BUFF)
                }

                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.WEF1)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.WEF1)
                    }
                }
            }

            Device (SDC)
            {
                Name (_ADR, 0x00120000)
            }

            Device (DOCK)
            {
                Name (_HID, EisaId ("PNP0A05"))
                Method (_STA, 0, NotSerialized)
                {
                    SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local0)
                    If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                    {
                        Store (0x00, \_SB.MEM.RDID)
                        Store (0x00, \_SB.MEM.RDSN)
                        Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                        Store (\_SB.MEM.RDID, \_SB.MEM.DLID)
                        Store (\_SB.MEM.RDSN, \_SB.MEM.DSRN)
                        If (\_SB.MEM.PAR1)
                        {
                            Return (0x00)
                        }
                        Else
                        {
                            If (LOr (LEqual (0x1B51F351, \_SB.MEM.RDID), LEqual (0x1C51F351, \_SB.MEM.RDID)))
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                If (LEqual (0x1D51F351, \_SB.MEM.RDID))
                                {
                                    Return (0x0F)
                                }
                                Else
                                {
                                    Return (0x00)
                                }
                            }
                        }
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Method (_BDN, 0, NotSerialized)
                {
                    Store (0x00, \_SB.MEM.RDID)
                    Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                    Return (\_SB.MEM.RDID)
                }

                Method (_UID, 0, NotSerialized)
                {
                    Store (0x00, \_SB.MEM.RDSN)
                    Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                    Return (\_SB.MEM.RDSN)
                }

                Method (_DCK, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                        If (\_SB.MEM.PAR1)
                        {
                            Store (0x41, \_SB.PCI0.FNC0.SYSR.TRP4)
                            Reset (\_SB.PCI0.DKSQ)
                            Wait (\_SB.PCI0.DKSQ, 0x0BB8)
                            Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                            DIS (0x23)
                            Return (One)
                        }

                        Return (Zero)
                    }
                    Else
                    {
                        Return (One)
                    }
                }

                Method (_EJ0, 1, NotSerialized)
                {
                    If (LOr (\_SB.MEM.BES1, \_SB.MEM.BES2))
                    {
                        Store (0x40, \_SB.PCI0.FNC0.SYSR.TRP4)
                        Reset (\_SB.PCI0.DKSQ)
                        Wait (\_SB.PCI0.DKSQ, 0x1388)
                        Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                    }
                }

                Device (ATAE)
                {
                    Name (_HID, EisaId ("PNP0600"))
                    Name (_UID, 0x04)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x24))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x24))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x24))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x24, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x24)
                    }
                }

                Device (PCE0)
                {
                    Name (_HID, EisaId ("PNP0E00"))
                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (STA (0x25))
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (CRS (0x25))
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (PRS (0x25))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        SRS (0x25, Arg0)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DIS (0x25)
                    }

                    Method (_PS0, 0, NotSerialized)
                    {
                        PS0 (0x25)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        PS3 (0x25)
                    }

                    Method (_PSC, 0, NotSerialized)
                    {
                        Return (PSC (0x25))
                    }

                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x03
                    })
                    Method (_PSW, 1, NotSerialized)
                    {
                        Store (Arg0, \_SB.MEM.WED2)
                    }

                    Device (PCS2)
                    {
                        Name (_ADR, 0x00)
                        Name (_SUN, 0x02)
                    }
                }

                PowerResource (PDOC, 0x01, 0x0000)
                {
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (\_SB.MEM.DSPW)
                    }

                    Method (_ON, 0, NotSerialized)
                    {
                        Store (0x01, \_SB.MEM.DSPW)
                    }

                    Method (_OFF, 0, NotSerialized)
                    {
                        Store (0x00, \_SB.MEM.DSPW)
                    }
                }

                Name (_PR0, Package (0x01)
                {
                    \_SB.PCI0.DOCK.PDOC
                })
                Name (_PR1, Package (0x01)
                {
                    \_SB.PCI0.DOCK.PDOC
                })
            }

            Event (DKSQ)
            Device (NOV0)
            {
                Name (_ADR, 0x00140000)
                OperationRegion (NVC0, PCI_Config, 0x00, 0xFF)
                Field (NVC0, ByteAcc, NoLock, Preserve)
                {
                    TVI0,   16, 
                    TDI0,   16, 
                    Offset (0x09), 
                    TPI0,   8, 
                    TSC0,   8, 
                    TBC0,   8
                }

                Name (_SUN, 0x02)
                Name (_EJD, "\\_SB_.PCI0.DOCK")
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x01, \_SB.MEM.VWE2)
                    }
                    Else
                    {
                        Store (0x00, \_SB.MEM.VWE2)
                    }
                }
            }

            Device (PCI1)
            {
                Name (_ADR, 0x00010000)
                Name (_PRT, Package (0x01)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.PCI0.FNC0.LNKC, 
                        0x00
                    }
                })
                Device (VGA)
                {
                    Name (_ADR, 0x00)
                    Method (_PS0, 0, Serialized)
                    {
                        While (LEqual (\_SB.MEM.VGAR, 0x00)) {}
                        Store (0x01, \_SB.MEM.IESI)
                        Store (0x00, \_SB.MEM.IEDI)
                        SMBR (0xFE00, 0x23, 0x0100, 0x00, 0xB2)
                        If (LEqual (\_SB.MEM.OEAX, 0x00))
                        {
                            Store (0x01, \_SB.MEM.IESI)
                            Store (0x00, \_SB.MEM.IEDI)
                            SMBR (0xFF00, 0x23, 0x0100, 0x00, 0xB2)
                            WPSX (0x0100, 0x01, 0x00, 0x00)
                            Store (0x00, \_SB.MEM.VGAF)
                        }
                    }

                    Method (_PS3, 0, Serialized)
                    {
                        While (LEqual (\_SB.MEM.VGAR, 0x00)) {}
                        Store (0x01, \_SB.MEM.IESI)
                        Store (0x00, \_SB.MEM.IEDI)
                        SMBR (0xFE00, 0x23, 0x0100, 0x00, 0xB2)
                        If (LEqual (\_SB.MEM.OEAX, 0x00))
                        {
                            Store (0x01, \_SB.MEM.IESI)
                            Store (0x00, \_SB.MEM.IEDI)
                            SMBR (0xFF00, 0x23, 0x0100, 0x03, 0xB2)
                            WPSX (0x0100, 0x01, 0x00, 0x03)
                            Store (0x01, \_SB.MEM.VGAF)
                        }
                    }

                    Method (_PSC, 0, NotSerialized)
                    {
                        While (LEqual (\_SB.MEM.VGAR, 0x00)) {}
                        Store (0x01, \_SB.MEM.IESI)
                        Store (0x00, \_SB.MEM.IEDI)
                        SMBR (0xFE00, 0x23, 0x0100, 0x00, 0xB2)
                        Return (\_SB.MEM.OEDX)
                    }

                    Method (_DOS, 1, NotSerialized)
                    {
                        If (LEqual (Arg0, 0x00))
                        {
                            Store (0x01, \_SB.MEM.DCST)
                            Store (0x00, \_SB.MEM.DOS2)
                        }
                        Else
                        {
                            If (LEqual (Arg0, 0x01))
                            {
                                Store (0x00, \_SB.MEM.DCST)
                                Store (0x01, \_SB.MEM.DOS2)
                            }
                            Else
                            {
                                If (LEqual (Arg0, 0x02))
                                {
                                    Store (0x01, \_SB.MEM.DCST)
                                    Store (0x01, \_SB.MEM.DOS2)
                                }
                            }
                        }
                    }

                    Method (_DOD, 0, NotSerialized)
                    {
                        Name (BUFF, Package (0x02)
                        {
                            0x0110, 
                            0x0100
                        })
                        Return (BUFF)
                    }

                    Method (_ROM, 2, NotSerialized)
                    {
                        Add (Arg0, 0x000C0000, Local0)
                        ShiftLeft (Arg1, 0x03, Local1)
                        Name (BUFF, Buffer (Arg1) {})
                        Scope (\)
                        {
                            OperationRegion (VROM, SystemMemory, Local0, Local1)
                            Field (VROM, ByteAcc, NoLock, Preserve)
                            {
                                ROMI,   65536
                            }
                        }

                        Store (\ROMI, BUFF)
                        Return (BUFF)
                    }

                    Device (LCD)
                    {
                        Name (_ADR, 0x0110)
                        Method (_DCS, 0, NotSerialized)
                        {
                            If (\_SB.MEM.CTLA)
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (0x0D)
                            }
                        }

                        Method (_DDC, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x01))
                            {
                                Store (0x80, Local0)
                            }
                            Else
                            {
                                If (LEqual (Arg0, 0x02))
                                {
                                    Store (0x0100, Local0)
                                }
                                Else
                                {
                                    Return (Zero)
                                }
                            }

                            Store (0x00, \_SB.MEM.PRES)
                            ShiftLeft (Arg0, 0x08, Local1)
                            Or (Local1, 0x01, Local1)
                            Name (BUFF, Buffer (Local0) {})
                            SMBR (0xFE00, 0x37, Local1, 0x000EF000, 0xB2)
                            And (Local1, 0xFF00, Local1)
                            Store (0x0100, \_SB.MEM.OECX)
                            While (\_SB.MEM.OECX)
                            {
                                SMBR (0xFE00, 0x37, Local1, 0x00, 0xB2)
                            }

                            Store (\_SB.MEM.FSDP, Local0)
                            Or (Local0, 0x22, \_SB.MEM.FSDP)
                            Subtract (\_SB.MEM.FSDP, Local0, Local0)
                            Subtract (\_SB.MEM.EDCK, Local0, \_SB.MEM.EDCK)
                            Store (\_SB.MEM.PRES, BUFF)
                            Return (BUFF)
                        }

                        Method (_DGS, 0, NotSerialized)
                        {
                            If (\_SB.MEM.NXLA)
                            {
                                Return (One)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (_DSS, 1, NotSerialized)
                        {
                            Store (Arg0, Local0)
                            And (Local0, 0x01, Local1)
                            If (Local1)
                            {
                                Store (0x01, \_SB.MEM.NXLA)
                            }
                            Else
                            {
                                Store (0x00, \_SB.MEM.NXLA)
                            }

                            And (Local0, 0x80000000, Local1)
                            If (Local1)
                            {
                                Store (0x0100, Local1)
                                If (\_SB.MEM.NXLA)
                                {
                                    Or (0x01, Local1, Local1)
                                }

                                If (\_SB.MEM.NXCA)
                                {
                                    Or (0x02, Local1, Local1)
                                }

                                If (\_SB.MEM.NXTA)
                                {
                                    Or (0x04, Local1, Local1)
                                }

                                If (\_SB.MEM.NXDA)
                                {
                                    Or (0x08, Local1, Local1)
                                }

                                SMBR (0xFF00, 0x1C, Local1, 0x00, 0xB2)
                                And (\_SB.MEM.OEAX, 0xFF00, Local1)
                                If (LEqual (Local1, 0x00))
                                {
                                    Store (0x80, Local1)
                                    While (LEqual (Local1, 0x80))
                                    {
                                        SMBR (0xFE00, 0x1C, 0x00, 0x00, 0xB2)
                                        And (\_SB.MEM.OECX, 0x80, Local1)
                                    }

                                    If (\_SB.MEM.CTLA)
                                    {
                                        If (LEqual (\_SB.MEM.LCDS, 0x00))
                                        {
                                            SMBR (0xFF00, 0x02, 0x01, 0x00, 0xB2)
                                            Store (0x01, \_SB.MEM.OEDX)
                                            While (\_SB.MEM.OEDX)
                                            {
                                                SMBR (0xFE00, 0x02, 0x00, 0x00, 0xB2)
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Method (_BCL, 0, NotSerialized)
                        {
                            Name (BUFF, Package (0x05)
                            {
                                0x64, 
                                0x28, 
                                0x00, 
                                0x28, 
                                0x64
                            })
                            If (\_SB.MEM.HPSU)
                            {
                                Store (\_SB.MEM.BCLA, Index (BUFF, 0x00))
                                Store (\_SB.MEM.BCLD, Index (BUFF, 0x01))
                            }

                            Return (BUFF)
                        }

                        Method (_BCM, 1, NotSerialized)
                        {
                            If (LEqual (\_SB.MEM.HPSU, 0x00))
                            {
                                Multiply (Arg0, 0xFFFF, Local0)
                                Divide (Local0, 0x64, , Local0)
                                SMBR (0xFF00, 0x2A, Local0, 0x00, 0xB2)
                            }
                        }

                        Method (_PS0, 0, Serialized)
                        {
                            Store (0x00, \_SB.MEM.LCDS)
                        }

                        Method (_PS3, 0, Serialized)
                        {
                            Store (0x03, \_SB.MEM.LCDS)
                        }

                        Method (_PSC, 0, Serialized)
                        {
                            Return (\_SB.MEM.LCDS)
                        }
                    }

                    Device (CRT)
                    {
                        Name (_ADR, 0x0100)
                        Method (_DCS, 0, NotSerialized)
                        {
                            If (\_SB.MEM.CTCA)
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (0x0D)
                            }
                        }

                        Method (_DDC, 1, NotSerialized)
                        {
                            If (LEqual (Arg0, 0x01))
                            {
                                Store (0x80, Local0)
                            }
                            Else
                            {
                                If (LEqual (Arg0, 0x02))
                                {
                                    Store (0x0100, Local0)
                                }
                                Else
                                {
                                    Return (Zero)
                                }
                            }

                            Store (0x00, \_SB.MEM.PRES)
                            ShiftLeft (Arg0, 0x08, Local1)
                            Or (Local1, 0x02, Local1)
                            Name (BUFF, Buffer (Local0) {})
                            SMBR (0xFE00, 0x37, Local1, 0x000EF000, 0xB2)
                            And (Local1, 0xFF00, Local1)
                            Store (0x0100, \_SB.MEM.OECX)
                            While (\_SB.MEM.OECX)
                            {
                                SMBR (0xFE00, 0x37, Local1, 0x00, 0xB2)
                            }

                            Store (\_SB.MEM.PRES, BUFF)
                            Return (BUFF)
                        }

                        Method (_DGS, 0, NotSerialized)
                        {
                            If (\_SB.MEM.NXCA)
                            {
                                Return (One)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (_DSS, 1, NotSerialized)
                        {
                            Store (Arg0, Local0)
                            And (Local0, 0x01, Local1)
                            If (Local1)
                            {
                                Store (0x01, \_SB.MEM.NXCA)
                            }
                            Else
                            {
                                Store (0x00, \_SB.MEM.NXCA)
                            }

                            And (Local0, 0x80000000, Local1)
                            If (Local1)
                            {
                                Store (0x0100, Local1)
                                If (\_SB.MEM.NXLA)
                                {
                                    Or (0x01, Local1, Local1)
                                }

                                If (\_SB.MEM.NXCA)
                                {
                                    Or (0x02, Local1, Local1)
                                }

                                If (\_SB.MEM.NXTA)
                                {
                                    Or (0x04, Local1, Local1)
                                }

                                SMBR (0xFF00, 0x1C, Local1, 0x00, 0xB2)
                                And (\_SB.MEM.OEAX, 0xFF00, Local1)
                                If (LEqual (Local1, 0x00))
                                {
                                    Store (0x80, Local1)
                                    While (LEqual (Local1, 0x80))
                                    {
                                        SMBR (0xFE00, 0x1C, 0x00, 0x00, 0xB2)
                                        And (\_SB.MEM.OECX, 0x80, Local1)
                                    }

                                    If (\_SB.MEM.CTLA)
                                    {
                                        If (LEqual (\_SB.MEM.LCDS, 0x00))
                                        {
                                            SMBR (0xFF00, 0x02, 0x01, 0x00, 0xB2)
                                            Store (0x01, \_SB.MEM.OEDX)
                                            While (\_SB.MEM.OEDX)
                                            {
                                                SMBR (0xFE00, 0x02, 0x00, 0x00, 0xB2)
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Method (_PS0, 0, Serialized)
                        {
                            Store (0x00, \_SB.MEM.CRTS)
                        }

                        Method (_PS3, 0, Serialized)
                        {
                            Store (0x03, \_SB.MEM.CRTS)
                        }

                        Method (_PSC, 0, Serialized)
                        {
                            Return (\_SB.MEM.CRTS)
                        }
                    }
                }
            }

            Method (_INI, 0, NotSerialized)
            {
                Store (\_SB.MEM.BES1, \_SB.MEM.BT1F)
                Store (\_SB.MEM.BES2, \_SB.MEM.BT2F)
                Store (0x00, \_SB.MEM.DSPW)
                Store (0x00, \_SB.MEM.VGAF)
                Store (0x00, \_SB.MEM.VWE0)
                Store (0x00, \_SB.MEM.VWE1)
                Store (0x00, \_SB.MEM.PPSC)
                Store (0x00, \_SB.MEM.SPSC)
                Store (0x00, Local0)
                If (CMPS (\_OS, "Microsoft Windows NT"))
                {
                    Store (0x03, Local0)
                    If (CondRefOf (\_OSI, Local1))
                    {
                        If (\_OSI ("Windows 2001"))
                        {
                            Store (0x04, Local0)
                        }
                    }
                }
                Else
                {
                    If (CMPS (\_OS, "Microsoft Windows"))
                    {
                        Store (0x01, Local0)
                    }

                    If (CMPS (\_OS, "Microsoft WindowsME:Millennium Edition"))
                    {
                        Store (0x02, Local0)
                    }
                }

                Store (Local0, \_SB.MEM.OSID)
                DIS (0x14)
                DIS (0x23)
                SMBR (0xFF00, 0x1E, 0x01, 0x00, 0xB2)
                Store (0x01, \_SB.MEM.PAR1)
                Store (0x60, \_SB.PCI0.FNC0.SYSR.TRP4)
            }
        }

        Device (BT)
        {
            Name (_HID, "TOS6205")
            Method (_STA, 0, NotSerialized)
            {
                If (\_SB.MEM.BTMD)
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Name (_PRW, Package (0x02)
            {
                0x09, 
                0x04
            })
            Method (BTST, 0, NotSerialized)
            {
                Store (0x00, \_SB.MEM.OESI)
                SMBR (0xFE00, 0x4D, 0x01, 0xC600, 0xB2)
                Store (0x01, Local0)
                While (Local0)
                {
                    SMBR (0xFE00, 0x4D, 0x0101, 0xC600, 0xB2)
                    Store (\_SB.MEM.OESI, Local2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local1)
                    If (Local1)
                    {
                        And (\_SB.MEM.OEAX, 0xFF, Local1)
                        If (LNot (LEqual (Local1, 0x20)))
                        {
                            Store (0x00, Local2)
                            Store (0x00, Local0)
                        }
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }
                }

                And (Local2, 0x02, Local0)
                ShiftLeft (Local0, 0x06, Local0)
                And (Local2, 0x04, Local1)
                ShiftLeft (Local1, 0x04, Local1)
                Or (Local0, Local1, Local0)
                And (Local2, 0x10, Local3)
                ShiftRight (Local3, 0x04, Local3)
                Or (Local0, Local3, Local0)
                Return (Local0)
            }

            Method (AUSB, 0, NotSerialized)
            {
                If (\_SB.MEM.BTMD)
                {
                    Store (0x00, \_SB.MEM.IEDI)
                    Store (0x03, \_SB.MEM.IESI)
                    SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                    Store (0x01, Local0)
                    While (Local0)
                    {
                        SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local1)
                        If (Local1)
                        {
                            And (\_SB.MEM.OEAX, 0xFF, Local1)
                            If (LNot (LEqual (Local1, 0x20)))
                            {
                                Store (0x00, Local0)
                            }
                        }
                        Else
                        {
                            Store (0x00, Local0)
                        }
                    }
                }
            }

            Method (DUSB, 0, NotSerialized)
            {
                If (\_SB.MEM.BTMD)
                {
                    Store (0x00, \_SB.MEM.IEDI)
                    Store (0x04, \_SB.MEM.IESI)
                    SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                    Store (0x01, Local0)
                    While (Local0)
                    {
                        SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local1)
                        If (Local1)
                        {
                            And (\_SB.MEM.OEAX, 0xFF, Local1)
                            If (LNot (LEqual (Local1, 0x20)))
                            {
                                Store (0x00, Local0)
                            }
                        }
                        Else
                        {
                            Store (0x00, Local0)
                        }
                    }
                }
            }

            Method (BTPO, 0, NotSerialized)
            {
                If (\_SB.MEM.BTMD)
                {
                    Store (0x00, \_SB.MEM.IEDI)
                    Store (0x01, \_SB.MEM.IESI)
                    SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                    Store (0x01, Local0)
                    While (Local0)
                    {
                        SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local1)
                        If (Local1)
                        {
                            And (\_SB.MEM.OEAX, 0xFF, Local1)
                            If (LNot (LEqual (Local1, 0x20)))
                            {
                                Store (0x00, Local0)
                            }
                        }
                        Else
                        {
                            Store (0x00, \_SB.MEM.IEDI)
                            Store (0x14, \_SB.MEM.IESI)
                            SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                            Store (0x01, Local2)
                            While (Local2)
                            {
                                SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                                And (\_SB.MEM.OEAX, 0xFF00, Local3)
                                If (Local3)
                                {
                                    And (\_SB.MEM.OEAX, 0xFF, Local3)
                                    If (LNot (LEqual (Local3, 0x20)))
                                    {
                                        Store (0x00, Local2)
                                    }
                                }
                                Else
                                {
                                    Store (0x00, Local2)
                                }
                            }

                            Store (0x00, Local0)
                        }
                    }
                }
            }

            Method (BTPF, 0, NotSerialized)
            {
                If (\_SB.MEM.BTMD)
                {
                    Store (0x00, \_SB.MEM.IEDI)
                    Store (0x02, \_SB.MEM.IESI)
                    SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                    Store (0x01, Local0)
                    While (Local0)
                    {
                        SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local1)
                        If (Local1)
                        {
                            And (\_SB.MEM.OEAX, 0xFF, Local1)
                            If (LNot (LEqual (Local1, 0x20)))
                            {
                                Store (0x00, Local0)
                            }
                        }
                        Else
                        {
                            Store (0x00, \_SB.MEM.IEDI)
                            Store (0x13, \_SB.MEM.IESI)
                            SMBR (0xFF00, 0x4D, 0x01, 0x7C00, 0xB2)
                            Store (0x01, Local2)
                            While (Local2)
                            {
                                SMBR (0xFF00, 0x4D, 0x0101, 0x7C00, 0xB2)
                                And (\_SB.MEM.OEAX, 0xFF00, Local3)
                                If (Local3)
                                {
                                    And (\_SB.MEM.OEAX, 0xFF, Local3)
                                    If (LNot (LEqual (Local3, 0x20)))
                                    {
                                        Store (0x00, Local2)
                                    }
                                }
                                Else
                                {
                                    Store (0x00, Local2)
                                }
                            }

                            Store (0x00, Local0)
                        }
                    }
                }
            }
        }

        Device (LID)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Method (_LID, 0, NotSerialized)
            {
                Return (\_SB.MEM.LIDS)
            }

            Name (_PRW, Package (0x02)
            {
                0x25, 
                0x04
            })
            Method (_PSW, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x00))
                {
                    Store (0x00, \_SB.MEM.EWLD)
                }
                Else
                {
                    Store (0x01, \_SB.MEM.EWLD)
                }
            }
        }

        Device (BAT1)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x01)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                If (\_SB.MEM.BES1)
                {
                    Return (0x1F)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BUFF, Package (0x0D) {})
                Store (0x00, Index (BUFF, 0x00))
                Store (\_SB.MEM.BDV1, Local2)
                Multiply (\_SB.MEM.BDC1, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x01))
                Multiply (\_SB.MEM.BLF1, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x02))
                Store (\_SB.MEM.BTC1, Index (BUFF, 0x03))
                Store (\_SB.MEM.BDV1, Index (BUFF, 0x04))
                Multiply (\_SB.MEM.BCW1, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x05))
                Multiply (\_SB.MEM.BCL1, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x06))
                Multiply (\_SB.MEM.BG11, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x07))
                Multiply (\_SB.MEM.BG21, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x08))
                Store (\_SB.MEM.BMN1, Index (BUFF, 0x09))
                Store (\_SB.MEM.BSN1, Index (BUFF, 0x0A))
                Store (\_SB.MEM.BTP1, Index (BUFF, 0x0B))
                Store (\_SB.MEM.BOI1, Index (BUFF, 0x0C))
                Return (BUFF)
            }

            Method (_BST, 0, NotSerialized)
            {
                If (\_SB.MEM.BES2)
                {
                    And (\_SB.MEM.BST1, 0x03, Local0)
                    And (\_SB.MEM.BST2, 0x03, Local1)
                    If (LOr (Local0, Local1))
                    {
                        Multiply (\_SB.MEM.BPR1, \_SB.MEM.BDV1, Local0)
                        Divide (Local0, 0x07D0, Local1, Local0)
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }
                }
                Else
                {
                    If (LAnd (\_SB.MEM.BST1, 0x03))
                    {
                        Multiply (\_SB.MEM.BPR1, \_SB.MEM.BDV1, Local0)
                        Divide (Local0, 0x03E8, Local1, Local0)
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }
                }

                Name (BUFF, Package (0x04) {})
                Store (\_SB.MEM.BST1, Index (BUFF, 0x00))
                Store (Local0, Index (BUFF, 0x01))
                Multiply (\_SB.MEM.BRC1, \_SB.MEM.BDV1, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x02))
                Store (\_SB.MEM.BPV1, Index (BUFF, 0x03))
                Return (BUFF)
            }

            Method (_BTP, 1, NotSerialized)
            {
                Store (0x01, \_SB.MEM.PAR1)
                Store (Arg0, \_SB.MEM.PAR2)
                Store (0x61, \_SB.PCI0.FNC0.SYSR.TRP4)
            }
        }

        Device (BAT2)
        {
            Name (_HID, EisaId ("PNP0C0A"))
            Name (_UID, 0x02)
            Name (_PCL, Package (0x01)
            {
                \_SB
            })
            Method (_STA, 0, NotSerialized)
            {
                If (\_SB.MEM.BES2)
                {
                    Return (0x1F)
                }
                Else
                {
                    Return (0x0F)
                }
            }

            Method (_BIF, 0, NotSerialized)
            {
                Name (BUFF, Package (0x0D) {})
                Store (0x00, Index (BUFF, 0x00))
                Store (\_SB.MEM.BDV2, Local2)
                Multiply (\_SB.MEM.BDC2, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x01))
                Multiply (\_SB.MEM.BLF2, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x02))
                Store (\_SB.MEM.BTC2, Index (BUFF, 0x03))
                Store (\_SB.MEM.BDV2, Index (BUFF, 0x04))
                Multiply (\_SB.MEM.BCW2, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x05))
                Multiply (\_SB.MEM.BCL2, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x06))
                Multiply (\_SB.MEM.BG12, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x07))
                Multiply (\_SB.MEM.BG22, Local2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x08))
                Store (\_SB.MEM.BMN2, Index (BUFF, 0x09))
                Store (\_SB.MEM.BSN2, Index (BUFF, 0x0A))
                Store (\_SB.MEM.BTP2, Index (BUFF, 0x0B))
                Store (\_SB.MEM.BOI2, Index (BUFF, 0x0C))
                Return (BUFF)
            }

            Method (_BST, 0, NotSerialized)
            {
                If (\_SB.MEM.BES1)
                {
                    And (\_SB.MEM.BST1, 0x03, Local0)
                    And (\_SB.MEM.BST2, 0x03, Local1)
                    If (LOr (Local0, Local1))
                    {
                        Multiply (\_SB.MEM.BPR2, \_SB.MEM.BDV2, Local0)
                        Divide (Local0, 0x07D0, Local1, Local0)
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }
                }
                Else
                {
                    If (LAnd (\_SB.MEM.BST2, 0x03))
                    {
                        Multiply (\_SB.MEM.BPR2, \_SB.MEM.BDV2, Local0)
                        Divide (Local0, 0x03E8, Local1, Local0)
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }
                }

                Name (BUFF, Package (0x04) {})
                Store (\_SB.MEM.BST2, Index (BUFF, 0x00))
                Store (Local0, Index (BUFF, 0x01))
                Multiply (\_SB.MEM.BRC2, \_SB.MEM.BDV2, Local0)
                Divide (Local0, 0x03E8, Local1, Local0)
                Store (Local0, Index (BUFF, 0x02))
                Store (\_SB.MEM.BPV2, Index (BUFF, 0x03))
                Return (BUFF)
            }

            Method (_BTP, 1, NotSerialized)
            {
                Store (0x02, \_SB.MEM.PAR1)
                Store (Arg0, \_SB.MEM.PAR2)
                Store (0x61, \_SB.PCI0.FNC0.SYSR.TRP4)
            }
        }

        Device (ADP1)
        {
            Name (_HID, "ACPI0003")
            Name (_PCL, Package (0x03)
            {
                \_SB, 
                \_SB.BAT1, 
                \_SB.BAT2
            })
            Name (_STA, 0x0F)
            Method (_PSR, 0, NotSerialized)
            {
                Return (\_SB.MEM.ACST)
            }
        }

        Device (VALD)
        {
            Name (_HID, EisaId ("TOS6200"))
            Name (_DDN, "VALD")
            Name (_STA, 0x0B)
            Method (ENAB, 0, NotSerialized)
            {
                Store (0x01, \_SB.MEM.VALF)
                SMBR (0xFF00, 0x16, 0x01, 0x00, 0xB2)
            }

            Method (INFO, 0, NotSerialized)
            {
                Store (0x00, \_SB.MEM.OECX)
                SMBR (0xFE00, 0x16, 0x00, 0x00, 0xB2)
                If (LNot (LEqual (\_SB.MEM.OEAX, 0x00)))
                {
                    Store (0x00, \_SB.MEM.OECX)
                }

                Return (\_SB.MEM.OECX)
            }

            Method (GHCI, 6, Serialized)
            {
                CreateDWordField (Arg0, 0x00, REAX)
                CreateWordField (Arg1, 0x00, R_BX)
                And (REAX, 0xFF00, Local0)
                If (LEqual (Local0, 0xFE00))
                {
                    If (LEqual (R_BX, 0xC000))
                    {
                        Return (G000 (Local0, R_BX, Arg2, Arg3, Arg4, Arg5))
                    }

                    If (LEqual (R_BX, 0xC800))
                    {
                        Return (G800 (Local0, R_BX, Arg2, Arg3, Arg4, Arg5))
                    }

                    If (LEqual (R_BX, 0xC801))
                    {
                        Return (G801 (Local0, R_BX, Arg2, Arg3, Arg4, Arg5))
                    }
                }

                If (LEqual (Local0, 0xFF00))
                {
                    If (LEqual (R_BX, 0xC000))
                    {
                        Return (G000 (Local0, R_BX, Arg2, Arg3, Arg4, Arg5))
                    }

                    If (LEqual (R_BX, 0xC801))
                    {
                        Return (G801 (Local0, R_BX, Arg2, Arg3, Arg4, Arg5))
                    }
                }

                Return (GCH0 (Arg0, Arg1, Arg2, Arg3, Arg4, Arg5))
            }

            Method (GCH0, 6, NotSerialized)
            {
                Store (Arg4, \_SB.MEM.IESI)
                Store (Arg5, \_SB.MEM.IEDI)
                SMBR (Arg0, Arg1, Arg2, Arg3, 0xB2)
                Name (BUFF, Package (0x06) {})
                Store (\_SB.MEM.OEAX, Index (BUFF, 0x00))
                Store (\_SB.MEM.OEBX, Index (BUFF, 0x01))
                Store (\_SB.MEM.OECX, Index (BUFF, 0x02))
                Store (\_SB.MEM.OEDX, Index (BUFF, 0x03))
                Store (\_SB.MEM.OESI, Index (BUFF, 0x04))
                Store (\_SB.MEM.OEDI, Index (BUFF, 0x05))
                Return (BUFF)
            }

            Method (G000, 6, NotSerialized)
            {
                Name (BUFF, Package (0x06) {})
                CreateDWordField (Arg2, 0x00, RECX)
                CreateDWordField (Arg3, 0x00, REDX)
                CreateDWordField (Arg4, 0x00, RESI)
                CreateDWordField (Arg5, 0x00, REDI)
                CreateByteField (Arg2, 0x00, R_CL)
                Store (0x00, Index (BUFF, 0x00))
                Store (Arg1, Index (BUFF, 0x01))
                Store (RECX, Index (BUFF, 0x02))
                Store (REDX, Index (BUFF, 0x03))
                Store (RESI, Index (BUFF, 0x04))
                Store (REDI, Index (BUFF, 0x05))
                If (\_SB.MEM.GCVS)
                {
                    If (LEqual (Arg0, 0xFE00))
                    {
                        If (LEqual (R_CL, 0x00))
                        {
                            Store (\_SB.MEM.TNVS, Local0)
                            Store (Local0, Index (BUFF, 0x02))
                        }
                        Else
                        {
                            If (LAnd (LNot (LLess (R_CL, 0x01)), LNot (LGreater (R_CL, 0x04))))
                            {
                                Store (R_CL, Local0)
                                Or (Local0, 0x3000, Local0)
                                SMBR (0xFA00, Local0, 0x00, 0x00, 0xB2)
                                Store (\_SB.MEM.OECX, Index (BUFF, 0x02))
                                Store (\_SB.MEM.OEDX, Index (BUFF, 0x03))
                            }
                            Else
                            {
                                If (LEqual (R_CL, 0x05))
                                {
                                    Store (0x21, Index (BUFF, 0x02))
                                }
                                Else
                                {
                                    Store (0x8300, Index (BUFF, 0x00))
                                }
                            }
                        }
                    }
                    Else
                    {
                        CreateWordField (Arg3, 0x00, R_DX)
                        If (LEqual (R_CL, 0x00))
                        {
                            If (LEqual (R_DX, 0x00))
                            {
                                Store (0x00, \_SB.MEM.TNVS)
                            }
                            Else
                            {
                                Store (0x01, \_SB.MEM.TNVS)
                            }
                        }
                        Else
                        {
                            If (LEqual (R_CL, 0x01))
                            {
                                Store (R_CL, Local0)
                                Or (Local0, 0x3080, Local0)
                                SMBR (0xFA00, Local0, R_DX, 0x00, 0xB2)
                            }
                            Else
                            {
                                If (LEqual (R_CL, 0x02))
                                {
                                    FindSetRightBit (R_DX, Local0)
                                    Store (Local0, \_SB.MEM.NXDD)
                                    If (LLess (\_SB.MEM.OSID, 0x03))
                                    {
                                        Or (Local0, 0x0100, Local0)
                                        SMBR (0xFF00, 0x1C, Local0, 0x00, 0xB2)
                                        And (\_SB.MEM.OEAX, 0xFF00, Local0)
                                        If (LEqual (Local0, 0x00))
                                        {
                                            Store (0x80, Local0)
                                            While (LEqual (Local0, 0x80))
                                            {
                                                SMBR (0xFE00, 0x1C, 0x00, 0x00, 0xB2)
                                                And (\_SB.MEM.OECX, 0x80, Local0)
                                            }

                                            If (\_SB.MEM.CTLA)
                                            {
                                                If (LEqual (\_SB.MEM.LCDS, 0x00))
                                                {
                                                    SMBR (0xFF00, 0x02, 0x01, 0x00, 0xB2)
                                                    Store (0x01, \_SB.MEM.OEDX)
                                                    While (\_SB.MEM.OEDX)
                                                    {
                                                        SMBR (0xFE00, 0x02, 0x00, 0x00, 0xB2)
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    Else
                                    {
                                        Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                                    }
                                }
                                Else
                                {
                                    Store (0x8300, Index (BUFF, 0x00))
                                }
                            }
                        }
                    }
                }
                Else
                {
                    Store (0x8000, Index (BUFF, 0x00))
                }

                Return (BUFF)
            }

            Method (G800, 6, NotSerialized)
            {
                Store (\_SB.MEM.OSPC, Local0)
                Name (BUFF, Package (0x06) {})
                CreateDWordField (Arg3, 0x00, REDX)
                CreateDWordField (Arg4, 0x00, RESI)
                CreateDWordField (Arg5, 0x00, REDI)
                Store (0x00, Index (BUFF, 0x00))
                Store (Arg1, Index (BUFF, 0x01))
                Store (Local0, Index (BUFF, 0x02))
                Store (REDX, Index (BUFF, 0x03))
                Store (RESI, Index (BUFF, 0x04))
                Store (REDI, Index (BUFF, 0x05))
                Return (BUFF)
            }

            Method (G801, 6, NotSerialized)
            {
                CreateDWordField (Arg2, 0x00, RECX)
                CreateDWordField (Arg3, 0x00, REDX)
                CreateDWordField (Arg4, 0x00, RESI)
                CreateDWordField (Arg5, 0x00, REDI)
                Store (0x8300, Local0)
                Store (RECX, Local1)
                If (LEqual (REDX, 0x01))
                {
                    Store (0x00, Local0)
                    If (LEqual (Arg0, 0xFE00))
                    {
                        Store (\_SB.MEM.PULD, Local1)
                        Store (\_SB.MEM.PULA, Local2)
                        ShiftLeft (Local2, 0x08, Local2)
                        Or (Local1, Local2, Local1)
                    }
                    Else
                    {
                        And (Local1, 0xFF, Local2)
                        ShiftRight (Local1, 0x08, Local3)
                        Store (Local2, \_SB.MEM.PULD)
                        Store (Local3, \_SB.MEM.PULA)
                    }
                }

                If (LEqual (REDX, 0x02))
                {
                    Store (0x00, Local0)
                    If (LEqual (Arg0, 0xFE00))
                    {
                        Store (\_SB.MEM.BCLD, Local1)
                        Store (\_SB.MEM.BCLA, Local2)
                        ShiftLeft (Local2, 0x08, Local2)
                        Or (Local1, Local2, Local1)
                    }
                    Else
                    {
                        And (Local1, 0xFF, Local2)
                        ShiftRight (Local1, 0x08, Local3)
                        Store (Local2, \_SB.MEM.BCLD)
                        Store (Local3, \_SB.MEM.BCLA)
                    }
                }

                Name (BUFF, Package (0x06) {})
                Store (Local0, Index (BUFF, 0x00))
                Store (Arg1, Index (BUFF, 0x01))
                Store (Local1, Index (BUFF, 0x02))
                Store (REDX, Index (BUFF, 0x03))
                Store (RESI, Index (BUFF, 0x04))
                Store (REDI, Index (BUFF, 0x05))
                Return (BUFF)
            }
        }

        Device (VALG)
        {
            Name (_HID, EisaId ("TOS6202"))
            Name (_DDN, "VALGeneral")
            Name (_STA, 0x0B)
            Method (VCID, 0, NotSerialized)
            {
                Store (0x00, \_SB.MEM.RDID)
                Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                Return (\_SB.MEM.RDID)
            }

            Method (VUID, 0, NotSerialized)
            {
                Store (0x00, \_SB.MEM.RDSN)
                Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                Return (\_SB.MEM.RDSN)
            }

            Method (VDCK, 1, NotSerialized)
            {
                If (Arg0)
                {
                    Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
                    If (\_SB.MEM.PAR1)
                    {
                        Store (0x41, \_SB.PCI0.FNC0.SYSR.TRP4)
                        Reset (\_SB.PCI0.DKSQ)
                        Wait (\_SB.PCI0.DKSQ, 0x0BB8)
                        Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                        DIS (0x23)
                        Return (One)
                    }

                    Return (Zero)
                }
                Else
                {
                    Return (One)
                }
            }

            Method (VEJ0, 1, NotSerialized)
            {
                If (LOr (\_SB.MEM.BES1, \_SB.MEM.BES2))
                {
                    Store (0x40, \_SB.PCI0.FNC0.SYSR.TRP4)
                    Reset (\_SB.PCI0.DKSQ)
                    Wait (\_SB.PCI0.DKSQ, 0x1388)
                    Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                }
            }

            Method (DLSZ, 0, NotSerialized)
            {
                Return (0x04)
            }

            Method (DLIB, 0, NotSerialized)
            {
                Name (BUFF, Buffer (0x40)
                {
                    0x80, 0x00, 0x07, 0x06, 0xFF, 0xA0, 0x00, 0x00, 
                    0x79, 0x11, 0x17, 0x06, 0x00, 0x00, 0x00, 0x00, 
                    0x80, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    0x80, 0x00, 0x00, 0x00, 0x02, 0x10, 0x00, 0x00, 
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    0x80, 0x00, 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
                })
                Store (\_SB.PCI0.USB1.UVI1, Local0)
                CreateByteField (BUFF, 0x18, VI1L)
                CreateByteField (BUFF, 0x19, VI1H)
                CreateByteField (BUFF, 0x28, VI2L)
                CreateByteField (BUFF, 0x29, VI2H)
                ShiftRight (Local0, 0x08, Local1)
                And (Local0, 0xFF, Local0)
                Store (Local0, VI1L)
                Store (Local1, VI1H)
                Store (Local0, VI2L)
                Store (Local1, VI2H)
                Store (\_SB.PCI0.USB1.UDI1, Local0)
                CreateByteField (BUFF, 0x1A, DI1L)
                CreateByteField (BUFF, 0x1B, DI1H)
                CreateByteField (BUFF, 0x2A, DI2L)
                CreateByteField (BUFF, 0x2B, DI2H)
                ShiftRight (Local0, 0x08, Local1)
                And (Local0, 0xFF, Local0)
                Store (Local0, DI1L)
                Store (Local1, DI1H)
                Store (Local0, DI2L)
                Store (Local1, DI2H)
                Store (\_SB.PCI0.USB1.UPI1, Local0)
                CreateByteField (BUFF, 0x11, PIC1)
                CreateByteField (BUFF, 0x21, PIC2)
                Store (Local0, PIC1)
                Store (Local0, PIC2)
                Store (\_SB.PCI0.USB1.USC1, Local0)
                CreateByteField (BUFF, 0x12, SCC1)
                CreateByteField (BUFF, 0x22, SCC2)
                Store (Local0, SCC1)
                Store (Local0, SCC2)
                Store (\_SB.PCI0.USB1.UBC1, Local0)
                CreateByteField (BUFF, 0x13, BCC1)
                CreateByteField (BUFF, 0x23, BCC2)
                Store (Local0, BCC1)
                Store (Local0, BCC2)
                If (LAnd (LEqual (\_SB.PCI0.IEEE.IVI0, 0x104C), LEqual (\_SB.PCI0.IEEE.IDI0, 0x8023)))
                {
                    Store (\_SB.PCI0.IEEE.IVI0, Local0)
                    CreateByteField (BUFF, 0x38, VI3L)
                    CreateByteField (BUFF, 0x39, VI3H)
                    ShiftRight (Local0, 0x08, Local1)
                    And (Local0, 0xFF, Local0)
                    Store (Local0, VI3L)
                    Store (Local1, VI3H)
                    Store (\_SB.PCI0.IEEE.IDI0, Local0)
                    CreateByteField (BUFF, 0x3A, DI3L)
                    CreateByteField (BUFF, 0x3B, DI3H)
                    ShiftRight (Local0, 0x08, Local1)
                    And (Local0, 0xFF, Local0)
                    Store (Local0, DI3L)
                    Store (Local1, DI3H)
                    Store (\_SB.PCI0.IEEE.IPI0, Local0)
                    CreateByteField (BUFF, 0x31, PIC3)
                    Store (Local0, PIC3)
                    Store (\_SB.PCI0.IEEE.ISC0, Local0)
                    CreateByteField (BUFF, 0x32, SCC3)
                    Store (Local0, SCC3)
                    Store (\_SB.PCI0.IEEE.IBC0, Local0)
                    CreateByteField (BUFF, 0x33, BCC3)
                    Store (Local0, BCC3)
                }
                Else
                {
                    CreateByteField (BUFF, 0x30, VLD3)
                    Store (0x00, VLD3)
                }

                Return (BUFF)
            }

            Method (VNTF, 1, NotSerialized)
            {
                And (Arg0, 0xFFFF, Local0)
                ShiftRight (Arg0, 0x10, Local1)
                If (LEqual (Local1, 0x01))
                {
                    Notify (\_PR.CPU0, Local0)
                }
            }
        }
    }

    Scope (\_TZ)
    {
        PowerResource (PFAN, 0x00, 0x0000)
        {
            Method (_STA, 0, NotSerialized)
            {
                SMBR (0xFA00, 0x2201, 0x00, 0x00, 0xB2)
                If (\_SB.MEM.OECX)
                {
                    Return (One)
                }
                Else
                {
                    Return (0x00)
                }
            }

            Method (_ON, 0, Serialized)
            {
                SMBR (0xFA00, 0x2200, 0xFF, 0x00, 0xB2)
            }

            Method (_OFF, 0, Serialized)
            {
                SMBR (0xFA00, 0x2200, 0x00, 0x00, 0xB2)
            }
        }

        Device (FAN)
        {
            Name (_HID, EisaId ("PNP0C0B"))
            Name (_PR0, Package (0x01)
            {
                \_TZ.PFAN
            })
        }

        ThermalZone (THRM)
        {
            Method (_TMP, 0, NotSerialized)
            {
                If (LNot (LGreater (\_SB.MEM.TMP1, 0x0B4C)))
                {
                    Store (0x0B4C, \_SB.MEM.AST1)
                    Return (0x0B4C)
                }
                Else
                {
                    Store (\_SB.MEM.TMP1, \_SB.MEM.AST1)
                    Return (\_SB.MEM.TMP1)
                }
            }

            Method (_AC0, 0, NotSerialized)
            {
                Return (\_SB.MEM.AC01)
            }

            Method (_AC1, 0, NotSerialized)
            {
                Return (\_SB.MEM.AC11)
            }

            Name (_AL0, Package (0x01)
            {
                \_TZ.FAN
            })
            Name (_AL1, Package (0x01)
            {
                \_TZ.FAN
            })
            Method (_PSV, 0, NotSerialized)
            {
                Return (\_SB.MEM.PSV1)
            }

            Name (_PSL, Package (0x01)
            {
                \_PR.CPU0
            })
            Method (_CRT, 0, NotSerialized)
            {
                Return (\_SB.MEM.CRT1)
            }

            Name (_TC1, 0x09)
            Name (_TC2, 0x02)
            Name (_TSP, 0x0708)
        }
    }

    Scope (\_GPE)
    {
        Method (_L08, 0, Serialized)
        {
            If (\_SB.MEM.GP72)
            {
                Store (0x00, \_SB.MEM.GP72)
                Notify (\_SB.PCI0.FNC0.COM, 0x02)
            }
        }

        Method (_L09, 0, Serialized)
        {
            If (LNot (LEqual (\_SB.PCI0.LAN.PLVI, 0xFFFF)))
            {
                And (\_SB.PCI0.LAN.PMES, 0x80, Local0)
                If (LEqual (Local0, 0x80))
                {
                    Notify (\_SB.PCI0.LAN, 0x02)
                }
            }

            While (LOr (\_SB.MEM.GP73, LOr (\_SB.MEM.GP74, LOr (\_SB.MEM.GP75, LOr (\_SB.MEM.GP83, LOr (\_SB.MEM.BWUE, LOr (\_SB.MEM.WUIE, LOr (\_SB.MEM.WSF0, \_SB.MEM.WSF1))))))))
            {
                If (\_SB.MEM.GP73)
                {
                    Store (0x00, \_SB.MEM.GP73)
                    Notify (\_SB.PCI0.ASND, 0x02)
                }

                If (\_SB.MEM.GP74)
                {
                    Store (0x00, \_SB.MEM.GP74)
                    Notify (\_SB.PCI0.FNC0.PCC0, 0x02)
                    Notify (\_SB.PCI0.VIY0, 0x02)
                    Notify (\_SB.PCI0.VIY1, 0x02)
                    Notify (\_SB.PCI0.NOV0, 0x02)
                }

                If (\_SB.MEM.GP75)
                {
                    Store (0x00, \_SB.MEM.GP75)
                    Notify (\_SB.PCI0.USB1, 0x02)
                }

                If (\_SB.MEM.GP83)
                {
                    Store (0x00, \_SB.MEM.GP83)
                    Notify (\_SB.PCI0.LAN, 0x02)
                }

                If (\_SB.MEM.BWUE)
                {
                    Store (0x00, \_SB.MEM.BWUE)
                    Notify (\_SB.BT, 0x80)
                }

                If (\_SB.MEM.WUIE)
                {
                    Store (0x00, \_SB.MEM.WUIE)
                    Notify (\_SB.PCI0.IEEE, 0x02)
                }

                If (\_SB.MEM.WSF0)
                {
                    Store (0x00, \_SB.MEM.WSF0)
                    Notify (\_SB.PCI0.MPC0, 0x02)
                }
            }
        }

        Method (_L25, 0, Serialized)
        {
            Store (0xAF, \_SB.MEM.IEDI)
            SMBR (0xFF00, 0x0028B10B, 0x00, 0x00, 0xB2)
            While (LOr (\_SB.MEM.GP50, LOr (\_SB.MEM.GP51, LOr (\_SB.MEM.GP52, LOr (\_SB.MEM.GP53, LOr (\_SB.MEM.GP54, LOr (\_SB.MEM.GP60, LOr (\_SB.MEM.GP61, LOr (\_SB.MEM.GP62, LOr (\_SB.MEM.GP63, LOr (\_SB.MEM.GP64, LOr (\_SB.MEM.GP66, LOr (\_SB.MEM.GP70, LOr (\_SB.MEM.GP71, \_SB.MEM.BPFE))))))))))))))
            {
                If (\_SB.MEM.GP50)
                {
                    Store (0x00, \_SB.MEM.GP50)
                    Notify (\_SB.ADP1, 0x80)
                }

                If (\_SB.MEM.GP51)
                {
                    Store (0x00, \_SB.MEM.GP51)
                    If (LEqual (\_SB.MEM.BES2, \_SB.MEM.BT2F))
                    {
                        Notify (\_SB.BAT2, 0x80)
                    }
                    Else
                    {
                        Store (\_SB.MEM.BES2, \_SB.MEM.BT2F)
                        If (\_SB.MEM.BES2)
                        {
                            Notify (\_SB.BAT2, 0x00)
                        }
                        Else
                        {
                            Notify (\_SB.BAT2, 0x01)
                        }
                    }
                }

                If (\_SB.MEM.GP52)
                {
                    Store (0x00, \_SB.MEM.GP52)
                    If (LEqual (\_SB.MEM.BES1, \_SB.MEM.BT1F))
                    {
                        Notify (\_SB.BAT1, 0x80)
                    }
                    Else
                    {
                        Store (\_SB.MEM.BES1, \_SB.MEM.BT1F)
                        If (\_SB.MEM.BES1)
                        {
                            Notify (\_SB.BAT1, 0x00)
                        }
                        Else
                        {
                            Notify (\_SB.BAT1, 0x01)
                        }
                    }
                }

                If (\_SB.MEM.GP53)
                {
                    Store (0x00, \_SB.MEM.GP53)
                    If (LNot (LEqual (\_SB.MEM.TMP1, \_SB.MEM.AST1)))
                    {
                        Notify (\_TZ.THRM, 0x80)
                    }
                }

                If (\_SB.MEM.GP54)
                {
                    Store (0x00, \_SB.MEM.GP54)
                    If (\_SB.MEM.LANA)
                    {
                        Store (0x00, \_SB.MEM.LANA)
                        Notify (\_SB.PCI0.LAN, 0x01)
                    }
                }

                If (\_SB.MEM.GP60)
                {
                    Store (0x00, \_SB.MEM.GP60)
                    SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local0)
                    If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                    {
                        Notify (\_SB.PCI0.DOCK, 0x00)
                    }
                    Else
                    {
                        Notify (\_SB.VALG, 0x83)
                    }
                }

                If (\_SB.MEM.GP61)
                {
                    Signal (\_SB.PCI0.DKSQ)
                    Store (0x00, \_SB.MEM.GP61)
                    SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local0)
                    If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                    {
                        Notify (\_SB.PCI0.DOCK, 0x00)
                    }
                    Else
                    {
                        Notify (\_SB.VALG, 0x83)
                    }
                }

                If (\_SB.MEM.GP62)
                {
                    Store (0x00, \_SB.MEM.GP62)
                    SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local0)
                    If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                    {
                        Notify (\_SB.PCI0.DOCK, 0x01)
                    }
                    Else
                    {
                        Notify (\_SB.VALG, 0x82)
                    }
                }

                If (\_SB.MEM.GP63)
                {
                    Store (0x00, \_SB.MEM.GP63)
                    If (LEqual (\_SB.MEM.DCKF, 0x00))
                    {
                        Store (0x01, \_SB.MEM.DCKF)
                        SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local0)
                        If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                        {
                            Notify (\_SB.PCI0.DOCK, 0x00)
                        }
                        Else
                        {
                            Notify (\_SB.VALG, 0x81)
                        }
                    }
                    Else
                    {
                        Signal (\_SB.PCI0.DKSQ)
                        Store (0x00, \_SB.MEM.DCKF)
                    }
                }

                If (\_SB.MEM.GP64)
                {
                    Store (0x00, \_SB.MEM.GP64)
                    If (\_SB.MEM.VALF)
                    {
                        Notify (\_SB.VALD, 0x80)
                    }
                    Else
                    {
                        If (\_SB.MEM.SBL0)
                        {
                            Store (0x00, \_SB.MEM.SBL0)
                            SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                            Store (\_SB.MEM.OECX, \_SB.MEM.BDID)
                            If (LNot (LEqual (\_SB.MEM.OECX, 0x00)))
                            {
                                If (LEqual (\_SB.MEM.OECX, 0x01)) {}
                                Else
                                {
                                    If (LEqual (\_SB.MEM.OECX, 0x04)) {}
                                    Else
                                    {
                                        Notify (\_SB.PCI0.FNC1.IDE1, 0x03)
                                    }
                                }
                            }
                        }

                        If (\_SB.MEM.SBL1)
                        {
                            Store (0x00, \_SB.MEM.SBL1)
                            SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                            If (LNot (LEqual (\_SB.MEM.OECX, 0x00)))
                            {
                                If (LEqual (\_SB.MEM.OECX, 0x01)) {}
                                Else
                                {
                                    If (LEqual (\_SB.MEM.OECX, 0x04)) {}
                                    Else
                                    {
                                        Notify (\_SB.PCI0.FNC1.IDE1, 0x00)
                                        Sleep (0x64)
                                        Notify (\_SB.PCI0.FNC1.IDE1, 0x01)
                                    }
                                }
                            }
                        }

                        If (\_SB.MEM.SBL2)
                        {
                            Store (0x00, \_SB.MEM.SBL2)
                            If (LNot (LEqual (\_SB.MEM.BDID, 0x00)))
                            {
                                If (LEqual (\_SB.MEM.BDID, 0x01)) {}
                                Else
                                {
                                    If (LEqual (\_SB.MEM.BDID, 0x04)) {}
                                    Else
                                    {
                                        Notify (\_SB.PCI0.FNC1.IDE1, 0x01)
                                    }
                                }
                            }
                        }

                        If (\_SB.MEM.SBL3)
                        {
                            Store (0x00, \_SB.MEM.SBL3)
                        }
                    }
                }

                If (\_SB.MEM.GP66)
                {
                    Store (0x00, \_SB.MEM.GP66)
                    SMBR (0xFE00, 0x14, 0x00, 0x00, 0xB2)
                    If (LNot (LEqual (\_SB.MEM.OECX, 0x00)))
                    {
                        If (LEqual (\_SB.MEM.OECX, 0x01)) {}
                        Else
                        {
                            If (LEqual (\_SB.MEM.OECX, 0x04))
                            {
                                Notify (\_SB.BAT2, 0x00)
                            }
                            Else
                            {
                                Notify (\_SB.PCI0.FNC1.IDE1, 0x00)
                                Sleep (0x64)
                                Notify (\_SB.PCI0.FNC1.IDE1, 0x01)
                            }
                        }
                    }
                }

                If (\_SB.MEM.GP70)
                {
                    Store (0x00, \_SB.MEM.GP70)
                    If (\_SB.MEM.VALF)
                    {
                        Notify (\_SB.VALD, 0x80)
                    }

                    If (LEqual (\_SB.MEM.HKCD, 0x3D))
                    {
                        TRAP (\_SB.MEM.HKCD)
                    }

                    If (LEqual (\_SB.MEM.DOS2, 0x00))
                    {
                        If (LEqual (\_SB.MEM.HKCD, 0x3F))
                        {
                            If (LEqual (\_SB.MEM.TNVS, 0x00))
                            {
                                Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                            }
                        }
                    }
                }

                If (\_SB.MEM.GP71)
                {
                    Store (0x00, \_SB.MEM.GP71)
                    Notify (\_SB.LID, 0x80)
                }

                If (\_SB.MEM.BPFE)
                {
                    Store (0x00, \_SB.MEM.BPFE)
                    Notify (\_SB.BT, 0x90)
                }
            }
        }
    }

    Method (_PTS, 1, NotSerialized)
    {
        If (LOr (LOr (\_SB.MEM.VWE0, \_SB.MEM.VWE1), \_SB.MEM.VWE2))
        {
            Store (0x01, \_SB.MEM.WED2)
        }
        Else
        {
            Store (0x00, \_SB.MEM.WED2)
        }

        Store (\_SB.MEM.ACST, \_SB.MEM.ACBK)
        If (LAnd (LNot (LLess (Arg0, 0x01)), LNot (LGreater (Arg0, 0x04))))
        {
            Store (\_SB.MEM.EWLD, \_SB.MEM.PAR1)
            Store (0x60, \_SB.PCI0.FNC0.SYSR.TRP4)
        }

        And (Arg0, 0x07, Local0)
        Or (Local0, 0x2100, Local0)
        SMBR (0xFA00, Local0, 0x00, 0x00, 0xB2)
    }

    Method (_WAK, 1, NotSerialized)
    {
        And (Arg0, 0x07, Local0)
        Or (Local0, 0x2180, Local0)
        SMBR (0xFA00, Local0, 0x00, 0x00, 0xB2)
        Notify (\_SB.PCI0.FNC1.IDE1, 0x00)
        Store (0x00, \_SB.MEM.RDID)
        Store (0x00, \_SB.MEM.RDSN)
        Store (0x05, \_SB.PCI0.FNC0.SYSR.TRP4)
        If (LEqual (\_SB.MEM.PAR1, 0x00))
        {
            If (LOr (LEqual (0x1B51F351, \_SB.MEM.RDID), LEqual (0x1C51F351, \_SB.MEM.RDID)))
            {
                If (LOr (LNot (LEqual (\_SB.MEM.RDID, \_SB.MEM.DLID)), LNot (LEqual (\_SB.MEM.RDSN, \_SB.MEM.DSRN))))
                {
                    SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                    And (\_SB.MEM.OEAX, 0xFF00, Local0)
                    If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                    {
                        Notify (\_SB.PCI0.DOCK, 0x00)
                    }
                    Else
                    {
                        Notify (\_SB.VALG, 0x81)
                    }
                }
            }
            Else
            {
                If (LEqual (0x1D51F351, \_SB.MEM.RDID))
                {
                    If (LOr (LNot (LEqual (\_SB.MEM.RDID, \_SB.MEM.DLID)), LNot (LEqual (\_SB.MEM.RDSN, \_SB.MEM.DSRN))))
                    {
                        SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                        And (\_SB.MEM.OEAX, 0xFF00, Local0)
                        If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                        {
                            Notify (\_SB.PCI0.DOCK, 0x00)
                        }
                        Else
                        {
                            Notify (\_SB.VALG, 0x81)
                        }
                    }
                }
            }
        }
        Else
        {
            If (\_SB.MEM.DLID)
            {
                SMBR (0x0136FA00, 0x05F3, 0x00, 0x00, 0xB2)
                And (\_SB.MEM.OEAX, 0xFF00, Local0)
                If (LOr (LAnd (LEqual (Local0, 0x00), LEqual (\_SB.MEM.OECX, 0x00)), LNot (LEqual (Local0, 0x00))))
                {
                    Notify (\_SB.PCI0.DOCK, 0x01)
                }
                Else
                {
                    Notify (\_SB.VALG, 0x83)
                }
            }
        }

        If (LEqual (\_SB.MEM.DOS2, 0x00))
        {
            If (LOr (LNot (LEqual (\_SB.MEM.CTLA, \_SB.MEM.NXLA)), LNot (LEqual (\_SB.MEM.CTCA, \_SB.MEM.NXCA))))
            {
                Notify (\_SB.PCI0.PCI1.VGA, 0x80)
            }
            Else
            {
                If (LNot (LEqual (\_SB.MEM.CTTA, \_SB.MEM.NXTA)))
                {
                    Notify (\_SB.PCI0.PCI1.VGA, 0x80)
                }
            }
        }

        DIS (0x14)
        DIS (0x23)
        SMBR (0xFF00, 0x1E, 0x01, 0x00, 0xB2)
        If (LNot (LGreater (\_SB.MEM.OSID, 0x03)))
        {
            While (LEqual (\_SB.MEM.KBCR, 0x00)) {}
        }

        Store (0x01, \_SB.MEM.PAR1)
        Store (0x60, \_SB.PCI0.FNC0.SYSR.TRP4)
        If (LNot (LEqual (\_SB.MEM.ACST, \_SB.MEM.ACBK)))
        {
            Notify (\_PR.CPU0, 0x80)
        }

        Name (BUFF, Package (0x02)
        {
            0x00, 
            0x01
        })
        If (LEqual (\_SB.MEM.ACST, 0x00))
        {
            And (\_SB.MEM.BST1, 0x04, Local0)
            If (LEqual (Local0, 0x04))
            {
                Store (0x01, Index (BUFF, 0x00))
            }
        }

        Return (BUFF)
    }

    Method (TRAP, 1, NotSerialized)
    {
        Add (Arg0, 0x12340000, Debug)
    }

    Method (SMBR, 5, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.IEAX)
        Store (Arg1, \_SB.MEM.IEBX)
        Store (Arg2, \_SB.MEM.IECX)
        Store (Arg3, \_SB.MEM.IEDX)
        Store (Arg4, \_SB.PCI0.FNC0.SYSR.TRP4)
    }

    Method (STA, 1, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.PAR1)
        Store (0x00, \_SB.MEM.PAR2)
        Store (0x00, \_SB.MEM.PAR3)
        Store (0x00, \_SB.MEM.PAR4)
        Store (0x00, \_SB.MEM.PAR5)
        Store (0x00, \_SB.MEM.PAR6)
        Store (0x01, \_SB.PCI0.FNC0.SYSR.TRP4)
        Return (\_SB.MEM.PAR4)
    }

    Method (CRS, 1, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.PAR1)
        Store (0x00, \_SB.MEM.PAR2)
        Store (0x00, \_SB.MEM.PAR3)
        Store (0x00, \_SB.MEM.PAR4)
        Store (0x00, \_SB.MEM.PAR5)
        Store (0x00, \_SB.MEM.PAR6)
        Store (0x01, \_SB.PCI0.FNC0.SYSR.TRP4)
        If (LEqual (\_SB.MEM.PAR3, 0x00))
        {
            Return (ResourceTemplate ()
            {
            })
        }

        Name (BUFF, Buffer (\_SB.MEM.PAR3) {})
        Store (\_SB.MEM.PRES, BUFF)
        Return (BUFF)
    }

    Method (PRS, 1, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.PAR1)
        Store (0x01, \_SB.MEM.PAR2)
        Store (0x00, \_SB.MEM.PAR3)
        Store (0x00, \_SB.MEM.PAR4)
        Store (0x00, \_SB.MEM.PAR5)
        Store (0x00, \_SB.MEM.PAR6)
        Store (0x01, \_SB.PCI0.FNC0.SYSR.TRP4)
        If (LEqual (\_SB.MEM.PAR3, 0x00))
        {
            Return (ResourceTemplate ()
            {
            })
        }

        Name (BUFF, Buffer (\_SB.MEM.PAR3) {})
        Store (\_SB.MEM.PRES, BUFF)
        Return (BUFF)
    }

    Method (SRS, 2, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.PAR1)
        Store (0x00, \_SB.MEM.PAR2)
        Store (0x00, \_SB.MEM.PAR3)
        Store (0x00, \_SB.MEM.PAR4)
        Store (0x00, \_SB.MEM.PAR5)
        Store (0x00, \_SB.MEM.PAR6)
        Store (Arg1, \_SB.MEM.PRES)
        Store (0x02, \_SB.PCI0.FNC0.SYSR.TRP4)
    }

    Method (DIS, 1, NotSerialized)
    {
        Store (Arg0, \_SB.MEM.PAR1)
        Store (0x00, \_SB.MEM.PAR2)
        Store (0x00, \_SB.MEM.PAR3)
        Store (0x00, \_SB.MEM.PAR4)
        Store (0x00, \_SB.MEM.PAR5)
        Store (0x00, \_SB.MEM.PAR6)
        Store (0x03, \_SB.PCI0.FNC0.SYSR.TRP4)
    }

    Method (PS0, 1, NotSerialized)
    {
        Store (0x00, \_SB.MEM.IESI)
        SMBR (0xFE00, 0x23, Arg0, 0x00, 0xB2)
        If (LEqual (\_SB.MEM.OEAX, 0x00))
        {
            Store (0x00, \_SB.MEM.IESI)
            SMBR (0xFF00, 0x23, Arg0, 0x00, 0xB2)
            WPSX (Arg0, 0x00, 0x00, 0x00)
        }
    }

    Method (PS3, 1, NotSerialized)
    {
        Store (0x00, \_SB.MEM.IESI)
        SMBR (0xFE00, 0x23, Arg0, 0x00, 0xB2)
        If (LEqual (\_SB.MEM.OEAX, 0x00))
        {
            Store (0x00, \_SB.MEM.IESI)
            SMBR (0xFF00, 0x23, Arg0, 0x03, 0xB2)
            WPSX (Arg0, 0x00, 0x00, 0x03)
        }
    }

    Method (WPSX, 4, NotSerialized)
    {
        Store (Arg1, \_SB.MEM.IESI)
        Store (Arg2, \_SB.MEM.IEDI)
        SMBR (0xFE00, 0x23, Arg0, 0x00, 0xB2)
        While (LNot (LEqual (\_SB.MEM.OECX, 0x00)))
        {
            Store (Arg1, \_SB.MEM.IESI)
            Store (Arg2, \_SB.MEM.IEDI)
            SMBR (0xFE00, 0x23, Arg0, 0x00, 0xB2)
        }
    }

    Method (PSC, 1, NotSerialized)
    {
        Store (0x00, \_SB.MEM.IESI)
        SMBR (0xFE00, 0x23, Arg0, 0x00, 0xB2)
        Return (\_SB.MEM.OEDX)
    }

    Method (CMPS, 2, NotSerialized)
    {
        If (LEqual (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (One)
        }
        Else
        {
            Return (Zero)
        }
    }

    Method (STAL, 1, NotSerialized)
    {
        If (LEqual (Arg0, 0x00))
        {
            Return (0x09)
        }
        Else
        {
            Return (0x0B)
        }
    }

    Method (CRSL, 1, NotSerialized)
    {
        Name (IRQB, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared)
                {}
        })
        CreateWordField (IRQB, 0x01, INTX)
        If (LNot (LEqual (Arg0, 0x00)))
        {
            Name (IRQT, Package (0x10)
            {
                0x00, 
                0x0200, 
                0x08, 
                0x0400, 
                0x10, 
                0x20, 
                0x80, 
                0x40, 
                0x02, 
                0x0800, 
                0x00, 
                0x1000, 
                0x00, 
                0x4000, 
                0x00, 
                0x8000
            })
            Store (DerefOf (Index (IRQT, Arg0)), Local0)
            Store (Local0, INTX)
        }

        Return (IRQB)
    }

    Mutex (MTEX, 0x00)
}

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux