Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 05 Jun 2009 11:17:25 +0200
From:      Josef Moellers <josef.moellers@ts.fujitsu.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        "freebsd-acpi@freebsd.org" <freebsd-acpi@freebsd.org>
Subject:   Re: Failure to get past a PCI bridge
Message-ID:  <4A28E2A5.9030107@ts.fujitsu.com>
In-Reply-To: <200906041229.54888.jhb@freebsd.org>
References:  <4A24D29A.5030604@ts.fujitsu.com> <200906020811.35082.jhb@freebsd.org> <4A27D73D.1010703@ts.fujitsu.com> <200906041229.54888.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------030700020801060702040401
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

John Baldwin wrote:
> On Thursday 04 June 2009 10:16:29 am Josef Moellers wrote:
>   
>> John Baldwin wrote:
>>     
>>> On Tuesday 02 June 2009 3:19:54 am Josef Moellers wrote:
>>>   
>>>       
>>>> Hi,
>>>>
>>>> (I've posted this to freebsd-questions before. Ian Smith redirected me 
>>>> to this list).
>>>>
>>>> I'm trying to install 7.2-RELEASE on a pretty new system (a Fujitsu 
>>>> RX300S5).
>>>> The first obstacle was the fact that while the system has an 
>>>> AT-Keyboard-Controller, it ist not used (keyboard and mouse are 
>>>> connected via USB) and I have found that I can get past that by 
>>>>         
> specifying
>   
>>>> set hint.atkbd.0.disabled=1
>>>> set hint.atkbdc.0.disabled=1
>>>>
>>>> The install kernel then boots properly and reaches the "Country 
>>>>         
> Selection".
>   
>>>> At that point, no keyboard input is accepted. An optical mouse is off, 
>>>> so I assume the USB power to be off.
>>>>
>>>> I have hooked up a serial connection to log the kernel's output (some 
>>>> 1000+ lines):
>>>>
>>>> set boot_serial=1
>>>> set boot_verbose=1
>>>> set boot_multicons=1
>>>> set console="comconsole vidconsole"
>>>>
>>>> The following lines make me wonder if the kernel fails to get past PCI 
>>>> bridges and thus can't reach the UHCI controllers:
>>>>
>>>> pcib0: <ACPI Host-PCI bridge> on acpi0
>>>> pcib0: could not get PCI interrupt routing table for \_SB_.CPU0 - 
>>>> AE_NOT_FOUND
>>>> :
>>>> pcib1: <ACPI Host-PCI bridge> on acpi0
>>>> pcib1: could not get PCI interrupt routing table for \_SB_.CPU1 - 
>>>> AE_NOT_FOUND
>>>> :
>>>> pcib2: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
>>>> pcib2: couldn't find _ADR
>>>> pcib2: trying bus number 2
>>>> pci2: <ACPI PCI bus> on pcib2
>>>> pci2: domain=0, physical bus=2
>>>>
>>>> I talked to the guy who does the BIOS for the machine and he says that 
>>>> it makes no sense for the kernel to try and find the _PRT for \_SB_.CPU0 
>>>> or \_SB_.CPU1!
>>>>     
>>>>         
>>> Can you get an acpidump?  It seems that the BIOS has the wrong _HID for 
>>>       
> the 
>   
>>> CPU objects and has marked them as Host-PCI bridges instead.  Although 
>>>       
> CPUs 
>   
>>> should be Processor objects and not Device objects anyway.  Sounds like a 
>>> very busted BIOS.
>>>   
>>>       
>> Does this help?
>>     
>
> Hmm, not quite.  Can you do 'acpidump -d -t > foo' instead?
>   
Difficult, since I can't boot properly.
However, I have managed to get the dsdt using a SuSE Linux and have run 
that through acpidump -d on a 7.2 running on a XEN virtual machine. 
Here's the result.


-- 
These are my personal views and not those of Fujitsu Technology Solutions!
Josef Möllers (Pinguinpfleger bei FTS)
	If failure had no penalty success would not be a prize (T.  Pratchett)
Company Details: http://de.ts.fujitsu.com/imprint.html


--------------030700020801060702040401
Content-Type: text/plain;
 name="dsdt-RX300S5.out"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="dsdt-RX300S5.out"

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20070320
 *
 * Disassembly of /tmp/acpidump.tvBS6J, Fri Jun  5 10:49:36 2009
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x000048A4 (18596)
 *     Revision         0x01
 *     OEM ID           "FSC   "
 *     OEM Table ID     "D2619   "
 *     OEM Revision     0x00060000 (393216)
 *     Creator ID       "MSFT"
 *     Creator Revision 0x03000001 (50331649)
 */
DefinitionBlock ("/tmp/acpidump.aml", "DSDT", 1, "FSC   ", "D2619   ", 0x00060000)
{
    External (\_PR_.PR17._PSS)
    External (\_PR_.PR17._PPC)
    External (\_PR_.PR16._PSS)
    External (\_PR_.PR16._PPC)
    External (\_PR_.PR15._PSS)
    External (\_PR_.PR15._PPC)
    External (\_PR_.PR14._PSS)
    External (\_PR_.PR14._PPC)
    External (\_PR_.PR13._PSS)
    External (\_PR_.PR13._PPC)
    External (\_PR_.PR12._PSS)
    External (\_PR_.PR12._PPC)
    External (\_PR_.PR11._PSS)
    External (\_PR_.PR11._PPC)
    External (\_PR_.PR10._PSS)
    External (\_PR_.PR10._PPC)
    External (\_PR_.PR07._PSS)
    External (\_PR_.PR07._PPC)
    External (\_PR_.PR06._PSS)
    External (\_PR_.PR06._PPC)
    External (\_PR_.PR05._PSS)
    External (\_PR_.PR05._PPC)
    External (\_PR_.PR04._PSS)
    External (\_PR_.PR04._PPC)
    External (\_PR_.PR03._PSS)
    External (\_PR_.PR03._PPC)
    External (\_PR_.PR02._PSS)
    External (\_PR_.PR02._PPC)
    External (\_PR_.PR01._PSS)
    External (\_PR_.PR01._PPC)
    External (\_PR_.PR00._PSS)
    External (\_PR_.PR00._PPC)

    Scope (\)
    {
        Name (SUCA, 0x07)
        Name (MTYP, 0x00)
        Name (MARC, 0x00015F90)
        Name (MSMT, 0x03E8)
        Name (MINA, 0x07D0)
        Name (MAXA, 0x0FA0)
        Name (TPHM, 0xFFFFFFFF)
        Name (HLIC, Ones)
        Name (MICL, 0x0007A120)
        Name (MACL, 0x000AAE60)
        Name (PMMC, 0x000493E0)
        Name (HLMT, 0x000AAE60)
        Name (PAIC, 0x07D0)
    }

    Scope (\_SB)
    {
        Device (PSD)
        {
            Name (_HID, "ACPI0003")
            Name (_UID, 0x01)
            Name (_STA, 0x0F)
            Method (_PSR, 0, NotSerialized)
            {
                Return (0x01)
            }
        }

        Device (PMO)
        {
            Name (_HID, "ACPI000D")
            Name (_STA, 0x0F)
            Method (_PMC, 0, NotSerialized)
            {
                Name (PMCD, Package (0x0E)
                {
                    SUCA, 
                    0x00, 
                    MTYP, 
                    MARC, 
                    MSMT, 
                    MINA, 
                    MAXA, 
                    TPHM, 
                    HLIC, 
                    MICL, 
                    MACL, 
                    "Model Number", 
                    "Serial Number", 
                    "OEM Information"
                })
                Return (PMCD)
            }

            Method (_PMD, 0, NotSerialized)
            {
                Return (Package (0x01)
                {
                    "_SB"
                })
            }

            Method (_PMM, 0, NotSerialized)
            {
                Return (PMMC)
            }

            Method (_PAI, 1, NotSerialized)
            {
                If (LOr (LGreater (Arg0, MAXA), LLess (Arg0, MINA)))
                {
                    Return (0x01)
                }

                Store (Arg0, PAIC)
                Return (0x00)
            }

            Method (_GAI, 0, NotSerialized)
            {
                Return (PAIC)
            }

            Method (_PTP, 2, NotSerialized)
            {
                If (LOr (LGreater (PMMC, Arg0), LLess (PMMC, Arg1)))
                {
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (_GHL, 0, NotSerialized)
            {
                Return (HLMT)
            }

            Method (_SHL, 1, NotSerialized)
            {
                If (LOr (LGreater (Arg0, MACL), LLess (Arg0, MICL)))
                {
                    Return (0x01)
                }

                Store (Arg0, HLMT)
                Return (0x00)
            }
        }
    }

    Name (C1EN, 0x01)
    Name (C2EN, 0x01)
    Name (SLPS, 0x00)
    Name (OSFL, 0x00)
    Name (PICM, 0x00)
    Method (OSCK, 0, NotSerialized)
    {
        Store (One, OSFL)
        Store (Zero, \_SB.PCI0.LPC.AAOF)
        If (STRC (\_OS, "Microsoft Windows"))
        {
            Store (Zero, OSFL)
            Store (One, \_SB.PCI0.LPC.AAOF)
        }

        If (STRC (\_OS, "Microsoft WindowsME: Millennium Edition"))
        {
            Store (Zero, OSFL)
            Store (0x02, \_SB.PCI0.LPC.AAOF)
        }

        If (CondRefOf (\_OSI, Local0))
        {
            If (\_OSI ("Windows 2001"))
            {
                Store (0x03, \_SB.PCI0.LPC.AAOF)
            }

            If (\_OSI ("Windows 2006"))
            {
                Store (0x08, \_SB.PCI0.LPC.AAOF)
            }
        }
    }

    Method (STRC, 2, NotSerialized)
    {
        If (LNotEqual (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (Zero)
        }

        Add (SizeOf (Arg0), One, Local0)
        Name (STR1, Buffer (Local0) {})
        Store (Arg0, STR1)
        Name (STR2, Buffer (Local0) {})
        Store (Arg1, STR2)
        While (Local0)
        {
            Decrement (Local0)
            If (LNotEqual (DerefOf (Index (STR1, Local0)), DerefOf (Index (
                STR2, Local0))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Method (_PIC, 1, NotSerialized)
    {
        Store (Arg0, PICM)
    }

    Name (_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (_S1, Package (0x04)
    {
        0x01, 
        0x01, 
        0x00, 
        0x00
    })
    Name (_S4, Package (0x04)
    {
        0x06, 
        0x06, 
        0x00, 
        0x00
    })
    Name (_S5, Package (0x04)
    {
        0x07, 
        0x07, 
        0x00, 
        0x00
    })
    Method (\_PTS, 1, NotSerialized)
    {
        \_SB.PCI0.LPC.SIO2.SLEP (Arg0)
        If (LEqual (Arg0, 0x05))
        {
            \_SB.PHSR (0x4B, 0x00, 0x00)
        }

        Store (Arg0, SLPS)
    }

    Method (\_WAK, 1, NotSerialized)
    {
        \_SB.PCI0.LPC.SIO2.WAKE (Arg0)
        Store (Zero, SLPS)
        If (LEqual (Arg0, 0x04))
        {
            Notify (\_SB.PWRB, 0x02)
            Notify (\_SB.PCI0.USB1, 0x00)
            Notify (\_SB.PCI0.USB2, 0x00)
            Notify (\_SB.PCI0.USB3, 0x00)
            Notify (\_SB.PCI0.USB4, 0x00)
            Notify (\_SB.PCI0.USB5, 0x00)
            Notify (\_SB.PCI0.USB6, 0x00)
            Notify (\_SB.PCI0.USB7, 0x00)
            Notify (\_SB.PCI0.USB8, 0x00)
        }
    }

    Scope (\_PR)
    {
        Processor (PR00, 0x00, 0x00000000, 0x00) {}
        Processor (PR01, 0x08, 0x00000000, 0x00) {}
        Processor (PR02, 0x01, 0x00000000, 0x00) {}
        Processor (PR03, 0x09, 0x00000000, 0x00) {}
        Processor (PR04, 0x02, 0x00000000, 0x00) {}
        Processor (PR05, 0x0A, 0x00000000, 0x00) {}
        Processor (PR06, 0x03, 0x00000000, 0x00) {}
        Processor (PR07, 0x0B, 0x00000000, 0x00) {}
        Processor (PR10, 0x04, 0x00000000, 0x00) {}
        Processor (PR11, 0x0C, 0x00000000, 0x00) {}
        Processor (PR12, 0x05, 0x00000000, 0x00) {}
        Processor (PR13, 0x0D, 0x00000000, 0x00) {}
        Processor (PR14, 0x06, 0x00000000, 0x00) {}
        Processor (PR15, 0x0E, 0x00000000, 0x00) {}
        Processor (PR16, 0x07, 0x00000000, 0x00) {}
        Processor (PR17, 0x0F, 0x00000000, 0x00) {}
    }

    Scope (\_GPE)
    {
        Method (_L03, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB1, 0x02)
        }

        Method (_L04, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB2, 0x02)
        }

        Method (_L05, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB5, 0x02)
        }

        Method (_L09, 0, NotSerialized)
        {
            While (\_SB.PCI0.PE1A.PS)
            {
                Store (One, \_SB.PCI0.PE1A.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE1A.PS))
                {
                    Notify (\_SB.PCI0.PE1A, 0x02)
                }
            }

            While (\_SB.PCI0.PE1A.PMCS)
            {
                Store (One, \_SB.PCI0.PE1A.PMCS)
                Sleep (0x0A)
            }

            While (\_SB.PCI0.PE1E.PS)
            {
                Store (One, \_SB.PCI0.PE1E.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE1E.PS))
                {
                    Notify (\_SB.PCI0.PE1E, 0x02)
                }
            }

            While (\_SB.PCI0.PE1E.PMCS)
            {
                Store (One, \_SB.PCI0.PE1E.PMCS)
                Sleep (0x0A)
            }

            While (\_SB.PCI0.PE0.PS)
            {
                Store (One, \_SB.PCI0.PE0.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE0.PS))
                {
                    Notify (\_SB.PCI0.PE0, 0x02)
                }
            }

            While (\_SB.PCI0.PE1.PS)
            {
                Store (One, \_SB.PCI0.PE1.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE1.PS))
                {
                    Notify (\_SB.PCI0.PE1, 0x02)
                }
            }

            While (\_SB.PCI0.PE3.PS)
            {
                Store (One, \_SB.PCI0.PE3.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE3.PS))
                {
                    Notify (\_SB.PCI0.PE3, 0x02)
                }
            }

            While (\_SB.PCI0.PE5.PS)
            {
                Store (One, \_SB.PCI0.PE5.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE5.PS))
                {
                    Notify (\_SB.PCI0.PE5, 0x02)
                }
            }

            While (\_SB.PCI0.PE7.PS)
            {
                Store (One, \_SB.PCI0.PE7.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE7.PS))
                {
                    Notify (\_SB.PCI0.PE7, 0x02)
                }
            }

            While (\_SB.PCI0.PE8.PS)
            {
                Store (One, \_SB.PCI0.PE8.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE8.PS))
                {
                    Notify (\_SB.PCI0.PE8, 0x02)
                }
            }

            While (\_SB.PCI0.PE9.PS)
            {
                Store (One, \_SB.PCI0.PE9.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE9.PS))
                {
                    Notify (\_SB.PCI0.PE9, 0x02)
                }
            }

            While (\_SB.PCI0.PE10.PS)
            {
                Store (One, \_SB.PCI0.PE10.PS)
                Sleep (0x0A)
                If (LNot (\_SB.PCI0.PE10.PS))
                {
                    Notify (\_SB.PCI0.PE10, 0x02)
                }
            }
        }

        Method (_L0C, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB3, 0x02)
        }

        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB7, 0x02)
            Notify (\_SB.PCI0.USB8, 0x02)
        }

        Method (_L0E, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB4, 0x02)
        }

        Method (_L16, 0, NotSerialized)
        {
            \_SB.PCI0.LPC.KCS5.SIRS ()
        }

        Method (_L18, 0, NotSerialized)
        {
            If (LAnd (\_SB.PCI0.LPC.SIO2.RI1S, \_SB.PCI0.LPC.SIO2.RI1E))
            {
                Notify (\_SB.PWRB, 0x02)
                Notify (\_SB.PCI0.LPC.SIO2.COM1, 0x02)
                While (\_SB.PCI0.LPC.SIO2.RI1S)
                {
                    Store (One, \_SB.PCI0.LPC.SIO2.RI1S)
                }
            }

            If (LAnd (\_SB.PCI0.LPC.SIO2.RI2S, \_SB.PCI0.LPC.SIO2.RI2E))
            {
                Notify (\_SB.PWRB, 0x02)
                Notify (\_SB.PCI0.LPC.SIO2.COM2, 0x02)
                While (\_SB.PCI0.LPC.SIO2.RI2S)
                {
                    Store (One, \_SB.PCI0.LPC.SIO2.RI2S)
                }
            }
        }

        Method (_L20, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB6, 0x02)
        }
    }

    Scope (\_SI)
    {
        Method (_SST, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x01))
            {
                SSIL (0x01, 0x00, 0x01)
            }

            If (LEqual (Arg0, 0x03))
            {
                SSIL (0x01, 0x01, 0x01)
            }
        }

        Method (SSIL, 3, NotSerialized)
        {
            Store (Arg0, \_SB.PCI0.LPC.SSLE)
            Store (Arg1, \_SB.PCI0.LPC.SPLB)
            Store (Arg2, \_SB.PCI0.LPC.SPLE)
        }
    }

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

        OperationRegion (SMI1, SystemMemory, 0xBF7CBEBC, 0x00000090)
        Field (SMI1, AnyAcc, NoLock, Preserve)
        {
            BCMD,   8, 
            DID,    32, 
            INFO,   1024
        }

        OperationRegion (TCG1, SystemMemory, 0xBF7CBEB5, 0x0007)
        Field (TCG1, AnyAcc, NoLock, Preserve)
        {
            PPRQ,   8, 
            PPLO,   8, 
            PPRP,   8, 
            PPOR,   8, 
            TPRS,   8, 
            TPMV,   8, 
            MOR,    8
        }

        Method (PHSR, 3, Serialized)
        {
            Store (Arg0, BCMD)
            Store (Arg1, DID)
            Store (Arg2, INFO)
            Store (Zero, SMIC)
            If (LEqual (BCMD, Arg0)) {}
            Store (Zero, BCMD)
            Store (Zero, DID)
            Return (0x00)
        }

        OperationRegion (PECF, SystemMemory, 0xE0000000, 0x00100000)
        Field (PECF, DWordAcc, NoLock, Preserve)
        {
                    Offset (0x188), 
                ,   2, 
            PME0,   1, 
                    Offset (0x18C), 
            PEI0,   1, 
                    Offset (0x8188), 
                ,   2, 
            PME1,   1, 
                    Offset (0x818C), 
            PEI1,   1, 
                    Offset (0x18188), 
                ,   2, 
            PME3,   1, 
                    Offset (0x1818C), 
            PEI3,   1, 
                    Offset (0x28188), 
                ,   2, 
            PME5,   1, 
                    Offset (0x2818C), 
            PEI5,   1, 
                    Offset (0x38188), 
                ,   2, 
            PME7,   1, 
                    Offset (0x3818C), 
            PEI7,   1, 
                    Offset (0x40188), 
                ,   2, 
            PME8,   1, 
                    Offset (0x4018C), 
            PEI8,   1, 
                    Offset (0x48188), 
                ,   2, 
            PME9,   1, 
                    Offset (0x4818C), 
            PEI9,   1, 
                    Offset (0x50188), 
                ,   2, 
            PMEA,   1, 
                    Offset (0x5018C), 
            PEIA,   1
        }

        Device (MCFG)
        {
            Name (_HID, EisaId ("PNP0C02"))
            Name (_UID, 0x02)
            Name (CRES, ResourceTemplate ()
            {
                DWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y00, AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, NotSerialized)
            {
                CreateDWordField (CRES, \_SB.MCFG._Y00._MIN, MINP)
                CreateDWordField (CRES, \_SB.MCFG._Y00._MAX, MAXP)
                CreateDWordField (CRES, \_SB.MCFG._Y00._LEN, LENP)
                If (LEqual (\_SB.CPU0.SAD.VID, 0x8086))
                {
                    ShiftLeft (\_SB.CPU0.SAD.CFGA, 0x14, MINP)
                    If (LEqual (\_SB.CPU0.SAD.CFGS, 0x06))
                    {
                        Store (0x04000000, LENP)
                    }

                    If (LEqual (\_SB.CPU0.SAD.CFGS, 0x07))
                    {
                        Store (0x08000000, LENP)
                    }

                    If (LEqual (\_SB.CPU0.SAD.CFGS, 0x00))
                    {
                        Store (0x10000000, LENP)
                    }
                }
                Else
                {
                    ShiftLeft (\_SB.CPU1.SAD.CFGA, 0x14, MINP)
                    If (LEqual (\_SB.CPU1.SAD.CFGS, 0x06))
                    {
                        Store (0x04000000, LENP)
                    }

                    If (LEqual (\_SB.CPU1.SAD.CFGS, 0x07))
                    {
                        Store (0x08000000, LENP)
                    }

                    If (LEqual (\_SB.CPU1.SAD.CFGS, 0x00))
                    {
                        Store (0x10000000, LENP)
                    }
                }

                Add (MINP, LENP, MAXP)
                Decrement (MAXP)
                Return (CRES)
            }
        }

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

        Device (CPU0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x01)
            Name (_BBN, 0xFF)
            Name (CRES, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x00FF,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0001,             // Length
                    ,, )
            })
            Method (_CRS, 0, NotSerialized)
            {
                Return (CRES)
            }

            Device (SAD)
            {
                Name (_ADR, 0x01)
                Name (_STA, 0x0F)
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                    VID,    16, 
                            Offset (0x40), 
                    PAM0,   8, 
                    PAM1,   8, 
                    PAM2,   8, 
                    PAM3,   8, 
                    PAM4,   8, 
                    PAM5,   8, 
                    PAM6,   8, 
                            Offset (0x50), 
                    CFGE,   1, 
                    CFGS,   3, 
                        ,   16, 
                    CFGA,   20
                }
            }
        }

        Device (CPU1)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x02)
            Name (_BBN, 0xFE)
            Name (CRES, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x00FE,             // Range Minimum
                    0x00FE,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0001,             // Length
                    ,, )
            })
            Method (_CRS, 0, NotSerialized)
            {
                Return (CRES)
            }

            Device (SAD)
            {
                Name (_ADR, 0x01)
                Name (_STA, 0x0F)
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                    VID,    16, 
                            Offset (0x40), 
                    PAM0,   8, 
                    PAM1,   8, 
                    PAM2,   8, 
                    PAM3,   8, 
                    PAM4,   8, 
                    PAM5,   8, 
                    PAM6,   8, 
                            Offset (0x50), 
                    CFGE,   1, 
                    CFGS,   3, 
                        ,   16, 
                    CFGA,   20
                }
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08"))
            Name (_CID, 0x030AD041)
            Name (_UID, 0x00)
            Name (_BBN, 0x00)
            Method (_INI, 0, NotSerialized)
            {
                \OSCK ()
            }

            Name (CRES, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x003D,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x003E,             // Length
                    ,, )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x0CF7,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0CF8,             // Length
                    ,, , TypeStatic)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0D00,             // Range Minimum
                    0xFFFF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0xF300,             // Length
                    ,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00018000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y01, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xF0000000,         // Range Minimum
                    0xFEBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0EC00000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFED00000,         // Range Minimum
                    0xFEDFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00100000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFEF00000,         // Range Minimum
                    0xFFBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00D00000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, NotSerialized)
            {
                CreateDWordField (CRES, \_SB.PCI0._Y01._MIN, MIN1)
                CreateDWordField (CRES, \_SB.PCI0._Y01._MAX, MAX1)
                CreateDWordField (CRES, \_SB.PCI0._Y01._LEN, LEN1)
                Add (\_SB.PCI0.CORE.TOLM, 0x01, Local0)
                ShiftLeft (Local0, 0x1A, MIN1)
                If (LEqual (\_SB.CPU0.SAD.VID, 0x8086))
                {
                    ShiftLeft (\_SB.CPU0.SAD.CFGA, 0x14, MAX1)
                }
                Else
                {
                    ShiftLeft (\_SB.CPU1.SAD.CFGA, 0x14, MAX1)
                }

                Decrement (MAX1)
                Subtract (MAX1, MIN1, LEN1)
                Increment (LEN1)
                Return (CRES)
            }

            Method (_PRT, 0, NotSerialized)
            {
                If (LEqual (PICM, 0x00))
                {
                    Return (Package (0x2D)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0001FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

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

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

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

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

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

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

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

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001AFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001AFFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001AFFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKC, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001CFFFF, 
                            0x03, 
                            \_SB.PCI0.LPC.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKH, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKG, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x02, 
                            \_SB.PCI0.LPC.LNKF, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            0x00, 
                            \_SB.PCI0.LPC.LNKA, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            0x01, 
                            \_SB.PCI0.LPC.LNKB, 
                            0x00
                        }
                    })
                }
                Else
                {
                    Return (Package (0x2D)
                    {
                        Package (0x04)
                        {
                            0xFFFF, 
                            0x00, 
                            0x00, 
                            0x2F
                        }, 

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

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

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

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

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

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

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

                        Package (0x04)
                        {
                            0x0003FFFF, 
                            0x03, 
                            0x00, 
                            0x24
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x00, 
                            0x00, 
                            0x1A
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x01, 
                            0x00, 
                            0x19
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x02, 
                            0x00, 
                            0x1B
                        }, 

                        Package (0x04)
                        {
                            0x0005FFFF, 
                            0x03, 
                            0x00, 
                            0x1D
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x00, 
                            0x00, 
                            0x1E
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x01, 
                            0x00, 
                            0x25
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x02, 
                            0x00, 
                            0x27
                        }, 

                        Package (0x04)
                        {
                            0x0007FFFF, 
                            0x03, 
                            0x00, 
                            0x26
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x00, 
                            0x00, 
                            0x1F
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x01, 
                            0x00, 
                            0x27
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x02, 
                            0x00, 
                            0x26
                        }, 

                        Package (0x04)
                        {
                            0x0008FFFF, 
                            0x03, 
                            0x00, 
                            0x25
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x00, 
                            0x00, 
                            0x20
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x01, 
                            0x00, 
                            0x2A
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x02, 
                            0x00, 
                            0x2F
                        }, 

                        Package (0x04)
                        {
                            0x0009FFFF, 
                            0x03, 
                            0x00, 
                            0x29
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x00, 
                            0x00, 
                            0x21
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x01, 
                            0x00, 
                            0x1F
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x02, 
                            0x00, 
                            0x2E
                        }, 

                        Package (0x04)
                        {
                            0x000AFFFF, 
                            0x03, 
                            0x00, 
                            0x2D
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x00, 
                            0x00, 
                            0x2B
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x01, 
                            0x00, 
                            0x2C
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x02, 
                            0x00, 
                            0x2D
                        }, 

                        Package (0x04)
                        {
                            0x0016FFFF, 
                            0x03, 
                            0x00, 
                            0x2E
                        }, 

                        Package (0x04)
                        {
                            0x001AFFFF, 
                            0x00, 
                            0x00, 
                            0x13
                        }, 

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

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

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

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

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

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

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

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

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

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

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

            Device (PE0)
            {
                Name (_ADR, 0x00)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME0)
                    Store (One, \_SB.PEI0)
                    Store (Zero, PIE)
                }
            }

            Device (PE1)
            {
                Name (_ADR, 0x00010000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME1)
                    Store (One, \_SB.PEI1)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x1C
                            }, 

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

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

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

                Device (SLT1)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x01)
                }
            }

            Device (PE3)
            {
                Name (_ADR, 0x00030000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME3)
                    Store (One, \_SB.PEI3)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x18
                            }, 

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

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

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

                Device (SLT7)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x07)
                }
            }

            Device (PE5)
            {
                Name (_ADR, 0x00050000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME5)
                    Store (One, \_SB.PEI5)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x1A
                            }, 

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

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

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

                Device (SLT6)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x06)
                }
            }

            Device (PE7)
            {
                Name (_ADR, 0x00070000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME7)
                    Store (One, \_SB.PEI7)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x1E
                            }, 

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

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

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

                Device (SLT5)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x05)
                }
            }

            Device (PE8)
            {
                Name (_ADR, 0x00080000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME8)
                    Store (One, \_SB.PEI8)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x1F
                            }, 

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

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

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

                Device (SLT4)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x04)
                }
            }

            Device (PE9)
            {
                Name (_ADR, 0x00090000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PME9)
                    Store (One, \_SB.PEI9)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x20
                            }, 

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

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

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

                Device (SLT3)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x03)
                }
            }

            Device (PE10)
            {
                Name (_ADR, 0x000A0000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xAC), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0xB0), 
                            Offset (0xB2), 
                    PS,     1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, \_SB.PMEA)
                    Store (One, \_SB.PEIA)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPC.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPC.LNKD, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x21
                            }, 

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

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

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

                Device (SLT2)
                {
                    Name (_ADR, 0xFFFF)
                    Name (_SUN, 0x02)
                }
            }

            Device (CORE)
            {
                Name (_ADR, 0x00140000)
                Name (_STA, 0x0F)
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0xD0), 
                        ,   26, 
                    TOLM,   6
                }
            }

            Device (PE1A)
            {
                Name (_ADR, 0x001C0000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0x5C), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0x60), 
                            Offset (0x62), 
                    PS,     1, 
                            Offset (0xD8), 
                        ,   31, 
                    PMCE,   1, 
                        ,   31, 
                    PMCS,   1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, PMCE)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x02)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPC.LNKB, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x02)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x10
                            }, 

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

                Device (LAN1)
                {
                    Name (_ADR, 0x00)
                    Name (_STA, 0x0F)
                }

                Device (LAN2)
                {
                    Name (_ADR, 0x01)
                    Name (_STA, 0x0F)
                }
            }

            Device (PE1E)
            {
                Name (_ADR, 0x001C0004)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x09, 
                    0x04
                })
                OperationRegion (PECF, PCI_Config, 0x00, 0x0100)
                Field (PECF, DWordAcc, NoLock, Preserve)
                {
                            Offset (0x5C), 
                        ,   3, 
                    PIE,    1, 
                            Offset (0x60), 
                            Offset (0x62), 
                    PS,     1, 
                            Offset (0xD8), 
                        ,   31, 
                    PMCE,   1, 
                        ,   31, 
                    PMCS,   1
                }

                Method (_INI, 0, NotSerialized)
                {
                    Store (One, PMCE)
                    Store (Zero, PIE)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (LEqual (PICM, 0x00))
                    {
                        Return (Package (0x01)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPC.LNKA, 
                                0x00
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x01)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x10
                            }
                        })
                    }
                }

                Device (VGA)
                {
                    Name (_ADR, 0x00)
                    Name (_STA, 0x0F)
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x03, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0001)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x04, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001D0002)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x0C, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0000)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001A0001)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x05, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB6)
            {
                Name (_ADR, 0x001A0002)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x20, 
                    0x01
                })
                OperationRegion (RES1, PCI_Config, 0xC4, 0x01)
                Field (RES1, AnyAcc, NoLock, Preserve)
                {
                    P0E1,   1, 
                    P1E1,   1
                }

                Method (_PSW, 1, NotSerialized)
                {
                    Store (Arg0, P0E1)
                    Store (Arg0, P1E1)
                }
            }

            Device (USB7)
            {
                Name (_ADR, 0x001D0007)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x01
                })
            }

            Device (USB8)
            {
                Name (_ADR, 0x001A0007)
                Name (_STA, 0x0F)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x01
                })
            }

            Device (PCIH)
            {
                Name (_ADR, 0x001E0000)
                Name (_STA, 0x0F)
                Name (NATA, Package (0x02)
                {
                    0x001F0002, 
                    0x001F0005
                })
            }

            Device (ATA1)
            {
                Name (_ADR, 0x001F0002)
                Name (_STA, 0x0F)
            }

            Device (ATA2)
            {
                Name (_ADR, 0x001F0005)
                Name (_STA, 0x0F)
            }

            Device (PM)
            {
                Name (_ADR, 0x001F0003)
                Name (_STA, 0x0F)
            }

            Device (LPC)
            {
                Name (_ADR, 0x001F0000)
                Name (_STA, 0x0F)
                OperationRegion (PIRQ, PCI_Config, 0x60, 0x0C)
                Field (PIRQ, ByteAcc, NoLock, Preserve)
                {
                    PIRA,   8, 
                    PIRB,   8, 
                    PIRC,   8, 
                    PIRD,   8, 
                            Offset (0x08), 
                    PIRE,   8, 
                    PIRF,   8, 
                    PIRG,   8, 
                    PIRH,   8
                }

                OperationRegion (DCOD, PCI_Config, 0x80, 0x10)
                Field (DCOD, ByteAcc, NoLock, Preserve)
                {
                    COMA,   3, 
                        ,   1, 
                    COMB,   3, 
                            Offset (0x02), 
                    CMAE,   1, 
                    CMBE,   1, 
                            Offset (0x04), 
                    GDR1,   16
                }

                OperationRegion (GPIO, SystemIO, 0x1180, 0x80)
                Field (GPIO, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x0C), 
                        ,   14, 
                    SSLE,   1, 
                        ,   4, 
                    SPLE,   1, 
                            Offset (0x18), 
                        ,   19, 
                    SPLB,   1
                }

                OperationRegion (CMSI, SystemIO, 0x72, 0x02)
                Field (CMSI, ByteAcc, NoLock, Preserve)
                {
                    INDX,   8, 
                    DATA,   8
                }

                IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                {
                            Offset (0x7E), 
                    AAOF,   4
                }

                Method (DCR1, 1, NotSerialized)
                {
                    Store (GDR1, Local0)
                    Store (Arg0, GDR1)
                    Return (Local0)
                }

                Device (TPM)
                {
                    OperationRegion (TPMC, SystemMemory, 0xFED40000, 0x5000)
                    Field (TPMC, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0xF00), 
                        TIID,   32
                    }

                    Name (_HID, EisaId ("IFX0102"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LEqual (TIID, 0x000B15D1))
                        {
                            Store (0x0F, Local0)
                        }
                        Else
                        {
                            Store (0x00, Local0)
                        }

                        Return (Local0)
                    }

                    Name (_UID, 0x01)
                    Name (_CID, 0x310CD041)
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0xFED40000,         // Address Base
                            0x00005000,         // Address Length
                            )
                    })
                    Method (UCMP, 2, NotSerialized)
                    {
                        If (LNotEqual (0x10, SizeOf (Arg0)))
                        {
                            Return (0x00)
                        }

                        If (LNotEqual (0x10, SizeOf (Arg1)))
                        {
                            Return (0x00)
                        }

                        Store (0x00, Local0)
                        While (LLess (Local0, 0x10))
                        {
                            If (LNotEqual (DerefOf (Index (Arg0, Local0)), DerefOf (Index (
                                Arg1, Local0))))
                            {
                                Return (0x00)
                            }

                            Increment (Local0)
                        }

                        Return (0x01)
                    }

                    Method (_DSM, 4, NotSerialized)
                    {
                        If (LEqual (UCMP (Arg0, Buffer (0x10)
                                    {
                                        /* 0000 */    0xA6, 0xFA, 0xDD, 0x3D, 0x1B, 0x36, 0xB4, 0x4E, 
                                        /* 0008 */    0xA4, 0x24, 0x8D, 0x10, 0x08, 0x9D, 0x16, 0x53
                                    }), 0x01))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Return (Buffer (0x01)
                                {
                                    0x7F
                                })
                            }

                            If (LEqual (Arg2, 0x01))
                            {
                                Return (Buffer (0x04)
                                {
                                    "1.0"
                                })
                            }

                            If (LEqual (Arg2, 0x02))
                            {
                                If (TPRS)
                                {
                                    Store (DerefOf (Index (Arg3, 0x00)), PPRQ)
                                    If (LOr (LOr (LGreater (PPLO, 0x0E), LEqual (PPLO, 0x0C)), LEqual (
                                        PPLO, 0x0D)))
                                    {
                                        Store (0x00, PPRQ)
                                        Return (0x01)
                                    }

                                    Return (0x00)
                                }

                                Return (0x01)
                            }

                            If (LEqual (Arg2, 0x03))
                            {
                                Name (TMP1, Package (0x02)
                                {
                                    0x00, 
                                    0xFFFFFFFF
                                })
                                Store (PPRQ, Index (TMP1, 0x01))
                                Return (TMP1)
                            }

                            If (LEqual (Arg2, 0x04))
                            {
                                Return (0x01)
                            }

                            If (LEqual (Arg2, 0x05))
                            {
                                Name (TMP2, Package (0x03)
                                {
                                    0x00, 
                                    0xFFFFFFFF, 
                                    0xFFFFFFFF
                                })
                                Store (PPLO, Index (TMP2, 0x01))
                                If (LOr (LOr (LGreater (PPLO, 0x0E), LEqual (PPLO, 0x0C)), LEqual (
                                    PPLO, 0x0D)))
                                {
                                    Store (0xFFFFFFF1, Index (TMP2, 0x02))
                                    Return (TMP2)
                                }

                                If (LEqual (PPRP, 0xFF))
                                {
                                    Store (0xFFFFFFF1, Index (TMP2, 0x02))
                                    Return (TMP2)
                                }

                                If (PPOR)
                                {
                                    Store (0xFFFFFFF0, Index (TMP2, 0x02))
                                    Return (TMP2)
                                }

                                Store (PPRP, Index (TMP2, 0x02))
                                Return (TMP2)
                            }

                            If (LEqual (Arg2, 0x06))
                            {
                                Return (0x01)
                            }

                            Return (0x01)
                        }

                        If (LEqual (UCMP (Arg0, Buffer (0x10)
                                    {
                                        /* 0000 */    0xED, 0x54, 0x60, 0x37, 0x13, 0xCC, 0x75, 0x46, 
                                        /* 0008 */    0x90, 0x1C, 0x47, 0x56, 0xD7, 0xF2, 0xD4, 0x5D
                                    }), 0x01))
                        {
                            If (LEqual (Arg2, 0x00))
                            {
                                Return (Buffer (0x01)
                                {
                                    0x01
                                })
                            }

                            If (LEqual (Arg2, 0x01))
                            {
                                If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x00))
                                {
                                    Store (0x00, \_SB.MOR)
                                    Return (0x00)
                                }

                                If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x01))
                                {
                                    Store (0x01, \_SB.MOR)
                                    Return (0x00)
                                }
                            }

                            Return (0x01)
                        }

                        Return (Buffer (0x01)
                        {
                            0x00
                        })
                    }
                }

                Device (LNKA)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x01)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRA, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRA, 0x80, PIRA)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y02)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKA._CRS._Y02._INT, INTA)
                        Store (Zero, INTA)
                        If (LLess (PIRA, 0x80))
                        {
                            And (PIRA, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTA)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTA)
                        FindSetRightBit (INTA, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRA, 0x70), PIRA)
                    }
                }

                Device (LNKB)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRB, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRB, 0x80, PIRB)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y03)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKB._CRS._Y03._INT, INTB)
                        Store (Zero, INTB)
                        If (LLess (PIRB, 0x80))
                        {
                            And (PIRB, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTB)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTB)
                        FindSetRightBit (INTB, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRB, 0x70), PIRB)
                    }
                }

                Device (LNKC)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x03)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRC, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRC, 0x80, PIRC)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y04)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKC._CRS._Y04._INT, INTC)
                        Store (Zero, INTC)
                        If (LLess (PIRC, 0x80))
                        {
                            And (PIRC, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTC)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTC)
                        FindSetRightBit (INTC, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRC, 0x70), PIRC)
                    }
                }

                Device (LNKD)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x04)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRD, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRD, 0x80, PIRD)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y05)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKD._CRS._Y05._INT, INTD)
                        Store (Zero, INTD)
                        If (LLess (PIRD, 0x80))
                        {
                            And (PIRD, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTD)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTD)
                        FindSetRightBit (INTD, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRD, 0x70), PIRD)
                    }
                }

                Device (LNKE)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x05)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRE, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRE, 0x80, PIRE)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y06)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKE._CRS._Y06._INT, INTE)
                        Store (Zero, INTE)
                        If (LLess (PIRE, 0x80))
                        {
                            And (PIRE, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTE)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTE)
                        FindSetRightBit (INTE, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRE, 0x70), PIRE)
                    }
                }

                Device (LNKF)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x06)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRF, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRF, 0x80, PIRF)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y07)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKF._CRS._Y07._INT, INTF)
                        Store (Zero, INTF)
                        If (LLess (PIRF, 0x80))
                        {
                            And (PIRF, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTF)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTF)
                        FindSetRightBit (INTF, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRF, 0x70), PIRF)
                    }
                }

                Device (LNKG)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x07)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRG, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRG, 0x80, PIRG)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y08)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKG._CRS._Y08._INT, INTG)
                        Store (Zero, INTG)
                        If (LLess (PIRG, 0x80))
                        {
                            And (PIRG, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTG)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTG)
                        FindSetRightBit (INTG, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRG, 0x70), PIRG)
                    }
                }

                Device (LNKH)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x08)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (PIRH, 0x80))
                        {
                            Return (0x0B)
                        }
                        Else
                        {
                            Return (0x09)
                        }
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,9,10,11,12,14,15}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Or (PIRH, 0x80, PIRH)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y09)
                                {}
                        })
                        CreateWordField (BUFF, \_SB.PCI0.LPC.LNKH._CRS._Y09._INT, INTH)
                        Store (Zero, INTH)
                        If (LLess (PIRH, 0x80))
                        {
                            And (PIRH, 0x0F, Local0)
                            ShiftLeft (One, Local0, INTH)
                        }

                        Return (BUFF)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateWordField (Arg0, 0x01, INTH)
                        FindSetRightBit (INTH, Local0)
                        If (LNotEqual (Local0, Zero))
                        {
                            Decrement (Local0)
                        }

                        Or (Local0, And (PIRH, 0x70), PIRH)
                    }
                }

                Device (MBRD)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x01)
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Range Minimum
                            0x0010,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0022,             // Range Minimum
                            0x0022,             // Range Maximum
                            0x01,               // Alignment
                            0x0C,               // Length
                            )
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0030,             // Range Minimum
                            0x0030,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x004E,             // Range Minimum
                            0x004E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0072,             // Range Minimum
                            0x0072,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0074,             // Range Minimum
                            0x0074,             // Range Maximum
                            0x01,               // Alignment
                            0x0C,               // Length
                            )
                        IO (Decode16,
                            0x0090,             // Range Minimum
                            0x0090,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x00A2,             // Range Minimum
                            0x00A2,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B4,             // Range Minimum
                            0x00B4,             // Range Maximum
                            0x01,               // Alignment
                            0x0C,               // Length
                            )
                        IO (Decode16,
                            0x00E0,             // Range Minimum
                            0x00E0,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0200,             // Range Minimum
                            0x0200,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0810,             // Range Minimum
                            0x0810,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0CA0,             // Range Minimum
                            0x0CA0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0CA4,             // Range Minimum
                            0x0CA4,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0CA8,             // Range Minimum
                            0x0CA8,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0CAE,             // Range Minimum
                            0x0CAE,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0E00,             // Range Minimum
                            0x0E00,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x1000,             // Range Minimum
                            0x1000,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x1100,             // Range Minimum
                            0x1100,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x1180,             // Range Minimum
                            0x1180,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0xFE00,             // Range Minimum
                            0xFE00,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0xFF00,             // Range Minimum
                            0xFF00,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFEC00000,         // Address Base
                            0x00100000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0xFEE00000,         // Address Base
                            0x00100000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                    })
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_STA, 0x0F)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer16, )
                            {4}
                    })
                }

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

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

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

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

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

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (AE)
                        {
                            Store (0x0F, Local0)
                        }
                        Else
                        {
                            Store (0x09, Local0)
                        }

                        Return (Local0)
                    }

                    OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x3420)
                    Field (RCRB, DWordAcc, NoLock, Preserve)
                    {
                                Offset (0x3404), 
                        AS,     2, 
                            ,   5, 
                        AE,     1
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUFF, ResourceTemplate ()
                        {
                            Memory32Fixed (ReadWrite,
                                0x00000000,         // Address Base
                                0x00000000,         // Address Length
                                _Y0A)
                        })
                        CreateDWordField (BUFF, \_SB.PCI0.LPC.HPET._CRS._Y0A._LEN, HTML)
                        CreateDWordField (BUFF, \_SB.PCI0.LPC.HPET._CRS._Y0A._BAS, HTMB)
                        If (AE)
                        {
                            Store (0x0400, HTML)
                            ShiftLeft (AS, 0x0C, Local0)
                            Add (0xFED00000, Local0, HTMB)
                        }

                        Return (BUFF)
                    }
                }

                Device (SIO2)
                {
                    Name (_HID, EisaId ("PNP0A05"))
                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        ULCK ()
                        Store (0x02, FUNC)
                        If (LEqual (FUNC, 0x02))
                        {
                            Store (0x0F, Local0)
                        }
                        Else
                        {
                            Store (0x08, Local0)
                        }

                        LCK ()
                        Return (Local0)
                    }

                    OperationRegion (QLGC, SystemIO, 0x4E, 0x02)
                    Field (QLGC, ByteAcc, NoLock, Preserve)
                    {
                        INDX,   8, 
                        DATA,   8
                    }

                    IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                    {
                                Offset (0x07), 
                        FUNC,   8, 
                                Offset (0x23), 
                            ,   3, 
                        CFGL,   1, 
                                Offset (0x30), 
                        DEN,    8, 
                                Offset (0x60), 
                        DADH,   8, 
                        DADL,   8, 
                                Offset (0x70), 
                        DIR,    4
                    }

                    OperationRegion (GPES, SystemIO, 0x0208, 0x02)
                    Field (GPES, ByteAcc, NoLock, WriteAsZeros)
                    {
                        RI1S,   1, 
                        RI2S,   1
                    }

                    OperationRegion (GPEE, SystemIO, 0x020C, 0x02)
                    Field (GPEE, ByteAcc, NoLock, Preserve)
                    {
                        RI1E,   1, 
                        RI2E,   1
                    }

                    Method (_INI, 0, NotSerialized)
                    {
                        ULCK ()
                        Store (0x02, FUNC)
                        Store (DEN, C1EN)
                        Store (0x01, FUNC)
                        Store (DEN, C2EN)
                        LCK ()
                    }

                    Method (ULCK, 0, NotSerialized)
                    {
                        Store (0x5A, INDX)
                    }

                    Method (LCK, 0, NotSerialized)
                    {
                        Store (0xA5, INDX)
                    }

                    Method (WAKE, 1, NotSerialized)
                    {
                        SMC (Zero, RefOf (RI1E), RefOf (RI1S))
                        SMC (Zero, RefOf (RI2E), RefOf (RI2S))
                    }

                    Method (SLEP, 1, NotSerialized)
                    {
                        If (LEqual (Arg0, 0x01))
                        {
                            SMC (One, RefOf (RI1E), RefOf (RI1S))
                            SMC (One, RefOf (RI2E), RefOf (RI2S))
                        }
                    }

                    Method (SMC, 3, NotSerialized)
                    {
                        If (Arg0)
                        {
                            Store (One, Arg2)
                            Store (One, Arg1)
                        }
                        Else
                        {
                            Store (Zero, Arg1)
                            Store (One, Arg2)
                        }
                    }

                    Device (COM1)
                    {
                        Name (_HID, EisaId ("PNP0501"))
                        Name (_UID, 0x01)
                        Method (_STA, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x02, FUNC)
                            If (LEqual (C1EN, 0x01))
                            {
                                If (DEN)
                                {
                                    Store (0x0F, Local0)
                                }
                                Else
                                {
                                    Store (0x0D, Local0)
                                }
                            }
                            Else
                            {
                                Store (0x08, Local0)
                            }

                            LCK ()
                            Return (Local0)
                        }

                        Method (_PRW, 0, NotSerialized)
                        {
                            Return (Package (0x02)
                            {
                                0x18, 
                                0x01
                            })
                        }

                        Method (_PSW, 1, NotSerialized)
                        {
                            Store (Arg0, \_SB.PCI0.LPC.SIO2.RI1E)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x02, FUNC)
                            Store (Zero, DEN)
                            LCK ()
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x02, FUNC)
                            Name (BUFF, ResourceTemplate ()
                            {
                                IO (Decode16,
                                    0x0000,             // Range Minimum
                                    0x0000,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    _Y0B)
                                IRQ (Edge, ActiveHigh, Exclusive, _Y0C)
                                    {0}
                            })
                            CreateByteField (BUFF, \_SB.PCI0.LPC.SIO2.COM1._CRS._Y0B._MIN, AD1L)
                            CreateByteField (BUFF, 0x03, AD1H)
                            CreateByteField (BUFF, \_SB.PCI0.LPC.SIO2.COM1._CRS._Y0B._MAX, AD2L)
                            CreateByteField (BUFF, 0x05, AD2H)
                            Store (DADL, AD1L)
                            Store (DADH, AD1H)
                            Store (DADL, AD2L)
                            Store (DADH, AD2H)
                            CreateWordField (BUFF, \_SB.PCI0.LPC.SIO2.COM1._CRS._Y0C._INT, IRQS)
                            Store (One, Local0)
                            ShiftLeft (Local0, DIR, IRQS)
                            LCK ()
                            Return (BUFF)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            StartDependentFn (0x00, 0x00)
                            {
                                IO (Decode16,
                                    0x03F8,             // Range Minimum
                                    0x03F8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {4}
                            }
                            StartDependentFn (0x01, 0x01)
                            {
                                IO (Decode16,
                                    0x03E8,             // Range Minimum
                                    0x03E8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {4}
                            }
                            StartDependentFn (0x02, 0x02)
                            {
                                IO (Decode16,
                                    0x02F8,             // Range Minimum
                                    0x02F8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {3}
                            }
                            StartDependentFn (0x02, 0x02)
                            {
                                IO (Decode16,
                                    0x02E8,             // Range Minimum
                                    0x02E8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {3}
                            }
                            EndDependentFn ()
                        })
                        Name (CM1L, Package (0x04)
                        {
                            0x03F8, 
                            0x02F8, 
                            0x02E8, 
                            0x03E8
                        })
                        Name (CM1C, Package (0x04)
                        {
                            0x00, 
                            0x01, 
                            0x05, 
                            0x07
                        })
                        Method (_SRS, 1, NotSerialized)
                        {
                            ULCK ()
                            Store (0x02, FUNC)
                            CreateByteField (Arg0, 0x02, IOSL)
                            CreateByteField (Arg0, 0x03, IOSH)
                            CreateWordField (Arg0, 0x02, IOSA)
                            CreateWordField (Arg0, 0x09, IRQS)
                            Store (IOSL, DADL)
                            Store (IOSH, DADH)
                            Store (DerefOf (Index (CM1C, Match (CM1L, MEQ, IOSA, MTR, 0x00, 
                                0x00))), COMA)
                            FindSetRightBit (IRQS, Local0)
                            If (Local0)
                            {
                                Decrement (Local0)
                            }

                            Store (Local0, DIR)
                            Store (One, DEN)
                            LCK ()
                        }
                    }

                    Device (COM2)
                    {
                        Name (_HID, EisaId ("PNP0501"))
                        Name (_UID, 0x02)
                        Method (_STA, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x01, FUNC)
                            If (LEqual (C2EN, 0x01))
                            {
                                If (DEN)
                                {
                                    Store (0x0F, Local0)
                                }
                                Else
                                {
                                    Store (0x0D, Local0)
                                }
                            }
                            Else
                            {
                                Store (0x08, Local0)
                            }

                            LCK ()
                            Return (Local0)
                        }

                        Method (_PRW, 0, NotSerialized)
                        {
                            Return (Package (0x02)
                            {
                                0x18, 
                                0x01
                            })
                        }

                        Method (_PSW, 1, NotSerialized)
                        {
                            Store (Arg0, \_SB.PCI0.LPC.SIO2.RI2E)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x01, FUNC)
                            Store (Zero, DEN)
                            LCK ()
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            ULCK ()
                            Store (0x01, FUNC)
                            Name (BUFF, ResourceTemplate ()
                            {
                                IO (Decode16,
                                    0x0000,             // Range Minimum
                                    0x0000,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    _Y0D)
                                IRQ (Edge, ActiveHigh, Exclusive, _Y0E)
                                    {0}
                            })
                            CreateByteField (BUFF, \_SB.PCI0.LPC.SIO2.COM2._CRS._Y0D._MIN, AD1L)
                            CreateByteField (BUFF, 0x03, AD1H)
                            CreateByteField (BUFF, \_SB.PCI0.LPC.SIO2.COM2._CRS._Y0D._MAX, AD2L)
                            CreateByteField (BUFF, 0x05, AD2H)
                            Store (DADL, AD1L)
                            Store (DADH, AD1H)
                            Store (DADL, AD2L)
                            Store (DADH, AD2H)
                            CreateWordField (BUFF, \_SB.PCI0.LPC.SIO2.COM2._CRS._Y0E._INT, IRQS)
                            Store (One, Local0)
                            ShiftLeft (Local0, DIR, IRQS)
                            LCK ()
                            Return (BUFF)
                        }

                        Name (_PRS, ResourceTemplate ()
                        {
                            StartDependentFn (0x00, 0x00)
                            {
                                IO (Decode16,
                                    0x02F8,             // Range Minimum
                                    0x02F8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {3}
                            }
                            StartDependentFn (0x01, 0x01)
                            {
                                IO (Decode16,
                                    0x02E8,             // Range Minimum
                                    0x02E8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {3}
                            }
                            StartDependentFn (0x02, 0x02)
                            {
                                IO (Decode16,
                                    0x03F8,             // Range Minimum
                                    0x03F8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {4}
                            }
                            StartDependentFn (0x02, 0x02)
                            {
                                IO (Decode16,
                                    0x03E8,             // Range Minimum
                                    0x03E8,             // Range Maximum
                                    0x08,               // Alignment
                                    0x08,               // Length
                                    )
                                IRQ (Edge, ActiveHigh, Exclusive, )
                                    {4}
                            }
                            EndDependentFn ()
                        })
                        Name (CM2L, Package (0x04)
                        {
                            0x03F8, 
                            0x02F8, 
                            0x02E8, 
                            0x03E8
                        })
                        Name (CM2C, Package (0x04)
                        {
                            0x00, 
                            0x01, 
                            0x05, 
                            0x07
                        })
                        Method (_SRS, 1, NotSerialized)
                        {
                            ULCK ()
                            Store (0x01, FUNC)
                            CreateByteField (Arg0, 0x02, IOSL)
                            CreateByteField (Arg0, 0x03, IOSH)
                            CreateWordField (Arg0, 0x02, IOSA)
                            CreateWordField (Arg0, 0x09, IRQS)
                            Store (IOSL, DADL)
                            Store (IOSH, DADH)
                            Store (DerefOf (Index (CM2C, Match (CM2L, MEQ, IOSA, MTR, 0x00, 
                                0x00))), COMB)
                            FindSetRightBit (IRQS, Local0)
                            If (Local0)
                            {
                                Decrement (Local0)
                            }

                            Store (Local0, DIR)
                            Store (One, DEN)
                            LCK ()
                        }
                    }
                }

                Device (MI0)
                {
                    Name (_HID, EisaId ("IPI0001"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (\_SB.PCI0.LPC.AAOF, 0x08))
                        {
                            Return (0x08)
                        }
                        Else
                        {
                            Return (0x0F)
                        }
                    }

                    Name (_UID, 0x00)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0CA2,             // Range Minimum
                            0x0CA2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                    Method (_IFT, 0, NotSerialized)
                    {
                        Return (0x01)
                    }

                    Method (_SRV, 0, NotSerialized)
                    {
                        Return (0x0200)
                    }
                }

                Device (KCS1)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x04)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LLess (\_SB.PCI0.LPC.AAOF, 0x08))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (0x08)
                        }
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0CA2,             // Range Minimum
                            0x0CA2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                }

                Device (KCS5)
                {
                    Name (_HID, EisaId ("PNP0A05"))
                    Name (_UID, 0x03)
                    Name (_STA, 0x0F)
                    OperationRegion (KCSR, SystemIO, 0x0CA4, 0x04)
                    Field (KCSR, ByteAcc, NoLock, Preserve)
                    {
                        D_OU,   8, 
                        OBF,    1, 
                        IBF,    1, 
                        SMS,    1, 
                        CD,     1, 
                        OEM1,   1, 
                        OEM2,   1, 
                        S0,     1, 
                        S1,     1
                    }

                    OperationRegion (KCSW, SystemIO, 0x0CA4, 0x04)
                    Field (KCSW, ByteAcc, NoLock, Preserve)
                    {
                        D_IN,   8, 
                        CMD,    8
                    }

                    Name (_S1D, 0x03)
                    Name (_S2D, 0x03)
                    Name (_S3D, 0x03)
                    Name (_S4D, 0x03)
                    Name (_PSC, 0x00)
                    Method (_INI, 0, NotSerialized)
                    {
                        WAKE ()
                    }

                    Method (WAKE, 0, NotSerialized)
                    {
                        Store (0x00, _PSC)
                        Name (BUFG, Buffer (0x06)
                        {
                            0xB8, 0xF1, 0x80, 0x28, 0x00, 0x29
                        })
                        Name (RET1, Buffer (0x0101)
                        {
                            0x00
                        })
                        If (LNot (SEND (BUFG, RET1)))
                        {
                            If (DerefOf (Index (RET1, 0x00)))
                            {
                                If (LNot (DerefOf (Index (RET1, 0x03))))
                                {
                                    Name (BUFS, Buffer (0x0A)
                                    {
                                        /* 0000 */    0xB8, 0xF1, 0x80, 0x28, 0x00, 0x28, 0x01, 0x80, 
                                        /* 0008 */    0x00, 0x00
                                    })
                                    Or (DerefOf (Index (BUFS, 0x06)), DerefOf (Index (RET1, 0x07
                                        )), Index (BUFS, 0x06))
                                    Or (DerefOf (Index (BUFS, 0x07)), DerefOf (Index (RET1, 0x08
                                        )), Index (BUFS, 0x07))
                                    Store (DerefOf (Index (RET1, 0x09)), Index (BUFS, 0x08))
                                    Store (DerefOf (Index (RET1, 0x0A)), Index (BUFS, 0x09))
                                    Name (RET2, Buffer (0x0101)
                                    {
                                        0x00
                                    })
                                    If (LNot (SEND (BUFS, RET2)))
                                    {
                                        If (DerefOf (Index (RET2, 0x00)))
                                        {
                                            If (LNot (DerefOf (Index (RET2, 0x03))))
                                            {
                                                Name (SMIP, Buffer (0x08)
                                                {
                                                    /* 0000 */    0xB8, 0xF1, 0x80, 0x28, 0x00, 0x32, 0x00, 0x00
                                                })
                                                Name (RET3, Buffer (0x0101)
                                                {
                                                    0x00
                                                })
                                                If (CondRefOf (\_PR.PR00._PPC, Local0))
                                                {
                                                    Store (SizeOf (\_PR.PR00._PSS), Index (SMIP, 0x06))
                                                }

                                                SEND (SMIP, RET3)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    Method (SLEP, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                        Name (SMIP, Buffer (0x08)
                        {
                            /* 0000 */    0xB8, 0xF1, 0x80, 0x28, 0x00, 0x32, 0x00, 0x00
                        })
                        Name (RET0, Buffer (0x0101)
                        {
                            0x00
                        })
                        If (LNot (SEND (SMIP, RET0)))
                        {
                            If (DerefOf (Index (RET0, 0x00)))
                            {
                                If (LNot (DerefOf (Index (RET0, 0x03))))
                                {
                                    Name (BUFG, Buffer (0x06)
                                    {
                                        0xB8, 0xF1, 0x80, 0x28, 0x00, 0x29
                                    })
                                    Name (RET1, Buffer (0x0101)
                                    {
                                        0x00
                                    })
                                    If (LNot (SEND (BUFG, RET1)))
                                    {
                                        If (DerefOf (Index (RET1, 0x00)))
                                        {
                                            If (LNot (DerefOf (Index (RET1, 0x03))))
                                            {
                                                Name (BUFS, Buffer (0x0A)
                                                {
                                                    /* 0000 */    0xB8, 0xF1, 0x80, 0x28, 0x00, 0x28, 0xFE, 0x00, 
                                                    /* 0008 */    0x00, 0x00
                                                })
                                                And (DerefOf (Index (BUFS, 0x06)), DerefOf (Index (RET1, 0x07
                                                    )), Index (BUFS, 0x06))
                                                Store (DerefOf (Index (RET1, 0x09)), Index (BUFS, 0x08))
                                                Store (DerefOf (Index (RET1, 0x0A)), Index (BUFS, 0x09))
                                                Name (RET2, Buffer (0x0101)
                                                {
                                                    0x00
                                                })
                                                SEND (BUFS, RET2)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    Method (SIRS, 0, NotSerialized)
                    {
                        Name (SMIS, Buffer (0x06)
                        {
                            0xB8, 0xF1, 0x80, 0x28, 0x00, 0x2A
                        })
                        Name (RETS, Buffer (0x0101)
                        {
                            0x00
                        })
                        If (LNot (\_SB.PCI0.LPC.KCS5.SEND (SMIS, RETS)))
                        {
                            If (DerefOf (Index (RETS, 0x00)))
                            {
                                If (LNot (DerefOf (Index (RETS, 0x03))))
                                {
                                    If (And (DerefOf (Index (RETS, 0x07)), 0x01))
                                    {
                                        If (And (DerefOf (Index (RETS, 0x08)), 0x80))
                                        {
                                            Name (SMIR, Buffer (0x0A)
                                            {
                                                /* 0000 */    0xB8, 0xF1, 0x80, 0x28, 0x00, 0x2B, 0x01, 0x80, 
                                                /* 0008 */    0x00, 0x00
                                            })
                                            Name (RETR, Buffer (0x0101)
                                            {
                                                0x00
                                            })
                                            \_SB.PCI0.LPC.KCS5.SEND (SMIR, RETR)
                                            Store (0x10, Local0)
                                            While (Local0)
                                            {
                                                CSPS (And (DerefOf (Index (RETS, 0x08)), 0x0F), Local0)
                                                Decrement (Local0)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    Method (CSPS, 2, NotSerialized)
                    {
                        While (One)
                        {
                            Name (_T_0, 0x00)
                            Store (Arg1, _T_0)
                            If (LEqual (_T_0, 0x01))
                            {
                                If (CondRefOf (\_PR.PR00._PPC, Local0))
                                {
                                    If (LGreaterEqual (Arg0, SizeOf (\_PR.PR00._PSS)))
                                    {
                                        Subtract (SizeOf (\_PR.PR00._PSS), 0x01, Arg0)
                                    }

                                    Store (Arg0, \_PR.PR00._PPC)
                                    Notify (\_PR.PR00, 0x80)
                                }
                            }
                            Else
                            {
                                If (LEqual (_T_0, 0x02))
                                {
                                    If (CondRefOf (\_PR.PR01._PPC, Local0))
                                    {
                                        If (LGreaterEqual (Arg0, SizeOf (\_PR.PR01._PSS)))
                                        {
                                            Subtract (SizeOf (\_PR.PR01._PSS), 0x01, Arg0)
                                        }

                                        Store (Arg0, \_PR.PR01._PPC)
                                        Notify (\_PR.PR01, 0x80)
                                    }
                                }
                                Else
                                {
                                    If (LEqual (_T_0, 0x03))
                                    {
                                        If (CondRefOf (\_PR.PR02._PPC, Local0))
                                        {
                                            If (LGreaterEqual (Arg0, SizeOf (\_PR.PR02._PSS)))
                                            {
                                                Subtract (SizeOf (\_PR.PR02._PSS), 0x01, Arg0)
                                            }

                                            Store (Arg0, \_PR.PR02._PPC)
                                            Notify (\_PR.PR02, 0x80)
                                        }
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_0, 0x04))
                                        {
                                            If (CondRefOf (\_PR.PR03._PPC, Local0))
                                            {
                                                If (LGreaterEqual (Arg0, SizeOf (\_PR.PR03._PSS)))
                                                {
                                                    Subtract (SizeOf (\_PR.PR03._PSS), 0x01, Arg0)
                                                }

                                                Store (Arg0, \_PR.PR03._PPC)
                                                Notify (\_PR.PR03, 0x80)
                                            }
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_0, 0x05))
                                            {
                                                If (CondRefOf (\_PR.PR04._PPC, Local0))
                                                {
                                                    If (LGreaterEqual (Arg0, SizeOf (\_PR.PR04._PSS)))
                                                    {
                                                        Subtract (SizeOf (\_PR.PR04._PSS), 0x01, Arg0)
                                                    }

                                                    Store (Arg0, \_PR.PR04._PPC)
                                                    Notify (\_PR.PR04, 0x80)
                                                }
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_0, 0x06))
                                                {
                                                    If (CondRefOf (\_PR.PR05._PPC, Local0))
                                                    {
                                                        If (LGreaterEqual (Arg0, SizeOf (\_PR.PR05._PSS)))
                                                        {
                                                            Subtract (SizeOf (\_PR.PR05._PSS), 0x01, Arg0)
                                                        }

                                                        Store (Arg0, \_PR.PR05._PPC)
                                                        Notify (\_PR.PR05, 0x80)
                                                    }
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_0, 0x07))
                                                    {
                                                        If (CondRefOf (\_PR.PR06._PPC, Local0))
                                                        {
                                                            If (LGreaterEqual (Arg0, SizeOf (\_PR.PR06._PSS)))
                                                            {
                                                                Subtract (SizeOf (\_PR.PR06._PSS), 0x01, Arg0)
                                                            }

                                                            Store (Arg0, \_PR.PR06._PPC)
                                                            Notify (\_PR.PR06, 0x80)
                                                        }
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_0, 0x08))
                                                        {
                                                            If (CondRefOf (\_PR.PR07._PPC, Local0))
                                                            {
                                                                If (LGreaterEqual (Arg0, SizeOf (\_PR.PR07._PSS)))
                                                                {
                                                                    Subtract (SizeOf (\_PR.PR07._PSS), 0x01, Arg0)
                                                                }

                                                                Store (Arg0, \_PR.PR07._PPC)
                                                                Notify (\_PR.PR07, 0x80)
                                                            }
                                                        }
                                                        Else
                                                        {
                                                            If (LEqual (_T_0, 0x09))
                                                            {
                                                                If (CondRefOf (\_PR.PR10._PPC, Local0))
                                                                {
                                                                    If (LGreaterEqual (Arg0, SizeOf (\_PR.PR10._PSS)))
                                                                    {
                                                                        Subtract (SizeOf (\_PR.PR10._PSS), 0x01, Arg0)
                                                                    }

                                                                    Store (Arg0, \_PR.PR10._PPC)
                                                                    Notify (\_PR.PR10, 0x80)
                                                                }
                                                            }
                                                            Else
                                                            {
                                                                If (LEqual (_T_0, 0x0A))
                                                                {
                                                                    If (CondRefOf (\_PR.PR11._PPC, Local0))
                                                                    {
                                                                        If (LGreaterEqual (Arg0, SizeOf (\_PR.PR11._PSS)))
                                                                        {
                                                                            Subtract (SizeOf (\_PR.PR11._PSS), 0x01, Arg0)
                                                                        }

                                                                        Store (Arg0, \_PR.PR11._PPC)
                                                                        Notify (\_PR.PR11, 0x80)
                                                                    }
                                                                }
                                                                Else
                                                                {
                                                                    If (LEqual (_T_0, 0x0B))
                                                                    {
                                                                        If (CondRefOf (\_PR.PR12._PPC, Local0))
                                                                        {
                                                                            If (LGreaterEqual (Arg0, SizeOf (\_PR.PR12._PSS)))
                                                                            {
                                                                                Subtract (SizeOf (\_PR.PR12._PSS), 0x01, Arg0)
                                                                            }

                                                                            Store (Arg0, \_PR.PR12._PPC)
                                                                            Notify (\_PR.PR12, 0x80)
                                                                        }
                                                                    }
                                                                    Else
                                                                    {
                                                                        If (LEqual (_T_0, 0x0C))
                                                                        {
                                                                            If (CondRefOf (\_PR.PR13._PPC, Local0))
                                                                            {
                                                                                If (LGreaterEqual (Arg0, SizeOf (\_PR.PR13._PSS)))
                                                                                {
                                                                                    Subtract (SizeOf (\_PR.PR13._PSS), 0x01, Arg0)
                                                                                }

                                                                                Store (Arg0, \_PR.PR13._PPC)
                                                                                Notify (\_PR.PR13, 0x80)
                                                                            }
                                                                        }
                                                                        Else
                                                                        {
                                                                            If (LEqual (_T_0, 0x0D))
                                                                            {
                                                                                If (CondRefOf (\_PR.PR14._PPC, Local0))
                                                                                {
                                                                                    If (LGreaterEqual (Arg0, SizeOf (\_PR.PR14._PSS)))
                                                                                    {
                                                                                        Subtract (SizeOf (\_PR.PR14._PSS), 0x01, Arg0)
                                                                                    }

                                                                                    Store (Arg0, \_PR.PR14._PPC)
                                                                                    Notify (\_PR.PR14, 0x80)
                                                                                }
                                                                            }
                                                                            Else
                                                                            {
                                                                                If (LEqual (_T_0, 0x0E))
                                                                                {
                                                                                    If (CondRefOf (\_PR.PR15._PPC, Local0))
                                                                                    {
                                                                                        If (LGreaterEqual (Arg0, SizeOf (\_PR.PR15._PSS)))
                                                                                        {
                                                                                            Subtract (SizeOf (\_PR.PR15._PSS), 0x01, Arg0)
                                                                                        }

                                                                                        Store (Arg0, \_PR.PR15._PPC)
                                                                                        Notify (\_PR.PR15, 0x80)
                                                                                    }
                                                                                }
                                                                                Else
                                                                                {
                                                                                    If (LEqual (_T_0, 0x0F))
                                                                                    {
                                                                                        If (CondRefOf (\_PR.PR16._PPC, Local0))
                                                                                        {
                                                                                            If (LGreaterEqual (Arg0, SizeOf (\_PR.PR16._PSS)))
                                                                                            {
                                                                                                Subtract (SizeOf (\_PR.PR16._PSS), 0x01, Arg0)
                                                                                            }

                                                                                            Store (Arg0, \_PR.PR16._PPC)
                                                                                            Notify (\_PR.PR16, 0x80)
                                                                                        }
                                                                                    }
                                                                                    Else
                                                                                    {
                                                                                        If (LEqual (_T_0, 0x10))
                                                                                        {
                                                                                            If (CondRefOf (\_PR.PR17._PPC, Local0))
                                                                                            {
                                                                                                If (LGreaterEqual (Arg0, SizeOf (\_PR.PR17._PSS)))
                                                                                                {
                                                                                                    Subtract (SizeOf (\_PR.PR17._PSS), 0x01, Arg0)
                                                                                                }

                                                                                                Store (Arg0, \_PR.PR17._PPC)
                                                                                                Notify (\_PR.PR17, 0x80)
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            Break
                        }
                    }

                    Method (SEND, 2, NotSerialized)
                    {
                        Name (WRST, 0x61)
                        Name (WREN, 0x62)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (COBF ())
                        {
                            Return (0x04)
                        }

                        Store (WRST, CMD)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (LNotEqual (CHKW (), Zero))
                        {
                            Return (EREX ())
                        }

                        If (COBF ())
                        {
                            Return (0x04)
                        }

                        Store (0x00, Local0)
                        Store (SizeOf (Arg0), Local1)
                        Decrement (Local1)
                        While (LNotEqual (Local0, Local1))
                        {
                            Store (DerefOf (Index (Arg0, Local0)), D_IN)
                            If (WIBF ())
                            {
                                Return (0x03)
                            }

                            If (LNotEqual (CHKW (), Zero))
                            {
                                Return (EREX ())
                            }

                            If (COBF ())
                            {
                                Return (0x04)
                            }

                            Increment (Local0)
                        }

                        Store (WREN, CMD)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (LNotEqual (CHKW (), Zero))
                        {
                            Return (0x01)
                        }

                        If (COBF ())
                        {
                            Return (0x04)
                        }

                        Store (DerefOf (Index (Arg0, Local0)), D_IN)
                        Name (REAB, 0x68)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        Store (0x01, Local0)
                        While (LEqual (CHKR (), Zero))
                        {
                            If (WOBF ())
                            {
                                Return (0x03)
                            }

                            Store (D_OU, Index (Arg1, Local0))
                            Store (REAB, D_IN)
                            If (WIBF ())
                            {
                                Return (0x03)
                            }

                            Increment (Local0)
                        }

                        Decrement (Local0)
                        Store (Local0, Index (Arg1, 0x00))
                        If (LNotEqual (CHKI (), Zero))
                        {
                            Return (EREX ())
                        }

                        If (WOBF ())
                        {
                            Return (0x03)
                        }

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

                    Method (EREX, 0, NotSerialized)
                    {
                        Store (0x00, Local0)
                        While (LLess (Local0, 0x0A))
                        {
                            If (LEqual (ERCH (), Zero))
                            {
                                Return (0x01)
                            }

                            Increment (Local0)
                        }

                        Return (0x02)
                    }

                    Method (ERCH, 0, NotSerialized)
                    {
                        Name (GSAB, 0x60)
                        Name (REAB, 0x68)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        Store (GSAB, CMD)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (COBF ())
                        {
                            Return (0x04)
                        }

                        Store (0x00, D_IN)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (LNotEqual (CHKR (), Zero))
                        {
                            Return (0x01)
                        }

                        If (WOBF ())
                        {
                            Return (0x03)
                        }

                        Store (D_OU, Local0)
                        Store (REAB, D_IN)
                        If (WIBF ())
                        {
                            Return (0x03)
                        }

                        If (LNotEqual (CHKI (), Zero))
                        {
                            Return (0x01)
                        }

                        If (WOBF ())
                        {
                            Return (0x03)
                        }

                        If (COBF ())
                        {
                            Return (0x04)
                        }

                        Return (0x00)
                    }

                    Method (CHKW, 0, NotSerialized)
                    {
                        Store (S0, Local0)
                        Store (S1, Local1)
                        If (LNotEqual (Local0, Zero))
                        {
                            Return (0x01)
                        }

                        If (LEqual (Local1, Zero))
                        {
                            Return (0x01)
                        }

                        Return (0x00)
                    }

                    Method (CHKR, 0, NotSerialized)
                    {
                        Store (S0, Local0)
                        Store (S1, Local1)
                        If (LEqual (Local0, Zero))
                        {
                            Return (0x01)
                        }

                        If (LNotEqual (Local1, Zero))
                        {
                            Return (0x01)
                        }

                        Return (0x00)
                    }

                    Method (CHKI, 0, NotSerialized)
                    {
                        Store (S0, Local0)
                        Store (S1, Local1)
                        If (LNotEqual (Local0, Zero))
                        {
                            Return (0x01)
                        }

                        If (LNotEqual (Local1, Zero))
                        {
                            Return (0x01)
                        }

                        Return (0x00)
                    }

                    Method (WOBF, 0, NotSerialized)
                    {
                        Store (0x1388, Local2)
                        While (LGreater (Local2, Zero))
                        {
                            Store (OBF, Local1)
                            If (Local1)
                            {
                                Return (0x00)
                            }

                            Sleep (0x0A)
                            Subtract (Local2, 0x0A, Local2)
                        }

                        Return (0x01)
                    }

                    Method (WIBF, 0, NotSerialized)
                    {
                        Store (0x1388, Local2)
                        While (LGreater (Local2, Zero))
                        {
                            Store (IBF, Local1)
                            If (LNot (Local1))
                            {
                                Return (0x00)
                            }

                            Sleep (0x0A)
                            Subtract (Local2, 0x0A, Local2)
                        }

                        Return (0x01)
                    }

                    Method (COBF, 0, NotSerialized)
                    {
                        Store (0x03E8, Local0)
                        While (LGreater (Local0, Zero))
                        {
                            Store (OBF, Local1)
                            If (Local1)
                            {
                                Store (D_OU, Local1)
                                Decrement (Local0)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                    }
                }
            }
        }
    }
}


--------------030700020801060702040401--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4A28E2A5.9030107>