Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Aug 2009 19:21:17 +1200
From:      Tim Matthews <tim.matthews7@gmail.com>
To:        freebsd-acpi@freebsd.org
Subject:   laptop doesn't power off
Message-ID:  <3f1d93450908080021j2e34286fxb46991bfea2da1b8@mail.gmail.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
I have a sony vaio sz483n. The powering down works almost fine up until the
last step. The screen goes clear as it is about to power down but then it
just stays in a kind of on state.

The power light stays on but it doesn't do anything else. Even holding down
the power button for a long time which would work at any other time does
nothing.  Rebooting works fine.  Other operating systems on this machine can
poweroff fine. Using either gnome's shutdown, shutdown or halt makes no
difference.

I have attached my asl

Thanks

[-- Attachment #2 --]
/*
  RSD PTR: OEM=PTLTD, ACPI_Rev=2.0x (2)
	XSDT=0x7f673582, length=36, cksum=63
 */
/*
  XSDT: Length=140, Revision=1, Checksum=163,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x6040000,
	Creator ID=PTL, Creator Revision=0x0
	Entries={ 0x7f67bbf8, 0x7f67bcec, 0x7f67bd54, 0x7f67bd8c, 0x7f67bdc8, 0x7f67bdfa, 0x7f67bf70, 0x7f67bfd8, 0x7f674ede, 0x7f67467d, 0x7f673b9a, 0x7f673af4, 0x7f67360e }
 */
/*
  FACP: Length=244, Revision=3, Checksum=30,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x1
 	FACS=0x7f67cfc0, DSDT=0x7f6756f2
	INT_MODEL=PIC
	Preferred_PM_Profile=Mobile (2)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xf0, ACPI_DISABLE=0xf1, S4BIOS_REQ=0xf2
	PSTATE_CNT=0x80
	PM1a_EVT_BLK=0x1000-0x1003
	PM1a_CNT_BLK=0x1004-0x1005
	PM2_CNT_BLK=0x1020-0x1020
	PM_TMR_BLK=0x1008-0x100b
	GPE0_BLK=0x1028-0x102f
	CST_CNT=0x85
	P_LVL2_LAT=1 us, P_LVL3_LAT=1001 us
	FLUSH_SIZE=0, FLUSH_STRIDE=0
	DUTY_OFFSET=1, DUTY_WIDTH=3
	DAY_ALRM=13, MON_ALRM=0, CENTURY=50
	IAPC_BOOT_ARCH={8042}
	Flags={WBINVD,PROC_C1,PWR_BUTTON,SLP_BUTTON,RTC_S4,DCK_CAP,RESET_REG}
	RESET_REG=0x64:0[8] (IO), RESET_VALUE=0xfe
	X_FACS=0x7f67cfc0, X_DSDT=0x7f6756f2
	X_PM1a_EVT_BLK=0x1000:0[32] (IO)
	X_PM1a_CNT_BLK=0x1004:0[16] (IO)
	X_PM_TMR_BLK=0x1008:0[32] (IO)
	X_GPE0_BLK=0x1028:0[64] (IO)
 */
/*
  FACS:	Length=64, HwSig=0x000016e0, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=1
 */
/*
  DSDT: Length=25730, Revision=1, Checksum=81,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
  APIC: Length=104, Revision=1, Checksum=226,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x5a
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

	Type=Local APIC
	ACPI CPU=0
	Flags={ENABLED}
	APIC ID=0

	Type=Local APIC
	ACPI CPU=1
	Flags={ENABLED}
	APIC ID=1

	Type=IO APIC
	APIC ID=1
	INT BASE=0
	ADDR=0x00000000fec00000

	Type=INT Override
	BUS=0
	IRQ=0
	INTR=2
	Flags={Polarity=conforming, Trigger=conforming}

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-hi, Trigger=level}

	Type=Local NMI
	ACPI CPU=0
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=1
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}
 */
/*
  HPET: Length=56, Revision=1, Checksum=32,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x5a
	HPET Number=0
	ADDR=0xfed00000:0[0] (Memory)	HW Rev=0x1
	Comparitors=2
	Counter Size=1
	Legacy IRQ routing capable={TRUE}
	PCI Vendor ID=0x8086
	Minimal Tick=128
 */
/*
  MCFG: Length=60, Revision=1, Checksum=72,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x5a

	Base Address= 0x00000000e0000000
	Segment Group= 0x0000
	Start Bus= 0
	End Bus= 255
 */
/*
  TCPA: Length=50, Revision=1, Checksum=54,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x5a52
 */
/*
  SLIC: Length=374, Revision=1, Checksum=38,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x1000000
 */
/*
  APIC: Length=104, Revision=1, Checksum=54,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x0
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

	Type=Local APIC
	ACPI CPU=0
	Flags={ENABLED}
	APIC ID=0

	Type=Local APIC
	ACPI CPU=1
	Flags={ENABLED}
	APIC ID=1

	Type=IO APIC
	APIC ID=2
	INT BASE=0
	ADDR=0x00000000fec00000

	Type=Local NMI
	ACPI CPU=0
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=Local NMI
	ACPI CPU=1
	LINT Pin=1
	Flags={Polarity=active-hi, Trigger=edge}

	Type=INT Override
	BUS=0
	IRQ=0
	INTR=2
	Flags={Polarity=active-hi, Trigger=edge}

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-hi, Trigger=level}
 */
/*
  BOOT: Length=40, Revision=1, Checksum=71,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x1
 */
/*
  SSDT: Length=2068, Revision=1, Checksum=72,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
  SSDT: Length=2145, Revision=1, Checksum=182,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
  SSDT: Length=607, Revision=1, Checksum=119,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
  SSDT: Length=166, Revision=1, Checksum=29,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
  SSDT: Length=1254, Revision=1, Checksum=193,
	OEMID=Sony, OEM Table ID=VAIO, OEM Revision=0x20070412,
	Creator ID=PTL, Creator Revision=0x20050624
 */
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20070320
 *
 * Disassembly of /tmp/acpidump.EKkHpG, Wed Aug  5 21:47:46 2009
 *
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x00007C2E (31790)
 *     Revision         0x01
 *     OEM ID           "Sony"
 *     OEM Table ID     "VAIO"
 *     OEM Revision     0x20070412 (537330706)
 *     Creator ID       "PTL "
 *     Creator Revision 0x20050624 (537200164)
 */
DefinitionBlock ("/tmp/acpidump.aml", "DSDT", 1, "Sony", "VAIO", 0x20070412)
{
    External (_PSS, IntObj)
    External (\_PR_.CPU0._PPC)

    OperationRegion (PRT0, SystemIO, 0x80, 0x04)
    Field (PRT0, DWordAcc, Lock, Preserve)
    {
        P80H,   32
    }

    OperationRegion (S_IO, SystemIO, 0x06B0, 0x11)
    Field (S_IO, ByteAcc, NoLock, Preserve)
    {
        PMS0,   8, 
        PME0,   8, 
        PMS1,   8, 
        PMS2,   8, 
        PMS3,   8, 
        PME1,   8, 
        PME2,   8, 
        PME3,   8, 
        SMS1,   8, 
        SMS2,   8, 
        SME1,   8, 
        SME2,   8, 
        RT10,   1, 
        RT11,   1, 
            ,   1, 
        RT13,   1, 
                Offset (0x0E), 
        RT30,   1, 
        RT31,   1, 
        RT32,   1, 
        RT33,   1, 
        RT34,   1, 
        RT35,   1, 
        RT36,   1, 
        RT37,   1, 
                Offset (0x10), 
        DLPC,   1, 
        CK33,   1, 
        CK14,   1
    }

    OperationRegion (IO_T, SystemIO, 0x0800, 0x10)
    Field (IO_T, ByteAcc, NoLock, Preserve)
    {
                Offset (0x08), 
        TRP0,   8
    }

    OperationRegion (PMIO, SystemIO, 0x1000, 0x80)
    Field (PMIO, ByteAcc, NoLock, Preserve)
    {
                Offset (0x42), 
            ,   1, 
        GPEC,   1
    }

    OperationRegion (GPIO, SystemIO, 0x1180, 0x3C)
    Field (GPIO, ByteAcc, NoLock, Preserve)
    {
        GU00,   8, 
        GU01,   8, 
        GU02,   8, 
        GU03,   8, 
        GIO0,   8, 
        GIO1,   8, 
        GIO2,   8, 
        GIO3,   8, 
                Offset (0x0C), 
        GL00,   8, 
            ,   4, 
        GP12,   1, 
                Offset (0x0E), 
        GL02,   8, 
        GL03,   8, 
                Offset (0x18), 
        GB00,   8, 
        GB01,   8, 
        GB02,   8, 
        GB03,   8, 
                Offset (0x2C), 
        GIV0,   8, 
        GIV1,   8, 
        GIV2,   8, 
        GIV3,   8, 
        GU04,   8, 
        GU05,   8, 
        GU06,   8, 
        GU07,   8, 
        GIO4,   8, 
        GIO5,   8, 
        GIO6,   8, 
        GIO7,   8, 
            ,   7, 
        GP39,   1, 
        GL05,   8, 
        GL06,   8, 
        GL07,   8
    }

    OperationRegion (GNVS, SystemMemory, 0x7F67C9F7, 0x0100)
    Field (GNVS, AnyAcc, Lock, Preserve)
    {
        OSYS,   16, 
        SMIF,   8, 
        PRM0,   8, 
        PRM1,   8, 
        SCIF,   8, 
        PRM2,   8, 
        PRM3,   8, 
        LCKF,   8, 
        PRM4,   8, 
        PRM5,   8, 
        P80D,   32, 
                Offset (0x10), 
                Offset (0x11), 
        DBGS,   8, 
        LINX,   8, 
                Offset (0x14), 
        ACTT,   8, 
        PSVT,   8, 
        TC1V,   8, 
        TC2V,   8, 
        TSPV,   8, 
        CRTT,   8, 
        DTSE,   8, 
        DTS1,   8, 
        DTS2,   8, 
                Offset (0x1E), 
        BNUM,   8, 
        B0SC,   8, 
        B1SC,   8, 
        B2SC,   8, 
        B0SS,   8, 
        B1SS,   8, 
        B2SS,   8, 
                Offset (0x28), 
        APIC,   8, 
        MPEN,   8, 
                Offset (0x2B), 
        PPCM,   8, 
        PCP0,   8, 
        PCP1,   8, 
                Offset (0x32), 
        NATP,   8, 
        CMAP,   8, 
        CMBP,   8, 
        LPTP,   8, 
        FDCP,   8, 
        CMCP,   8, 
        CIRP,   8, 
                Offset (0x3C), 
        IGDS,   8, 
        TLST,   8, 
        CADL,   8, 
        PADL,   8, 
        CSTE,   16, 
        NSTE,   16, 
        SSTE,   16, 
        NDID,   8, 
        DID1,   32, 
        DID2,   32, 
        DID3,   32, 
        DID4,   32, 
        DID5,   32, 
                Offset (0x67), 
        BLCS,   8, 
        BRTL,   8, 
        ALSE,   8, 
        ALAF,   8, 
        LLOW,   8, 
        LHIH,   8, 
                Offset (0x6E), 
        EMAE,   8, 
        EMAP,   16, 
        EMAL,   16, 
                Offset (0x74), 
        MEFE,   8, 
                Offset (0x78), 
        TPMP,   8, 
        TPME,   8, 
                Offset (0x82), 
        GTF0,   56, 
        GTF2,   56, 
        IDEM,   8
    }

    OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
    Field (RCRB, DWordAcc, Lock, Preserve)
    {
                Offset (0x1000), 
                Offset (0x3000), 
                Offset (0x3404), 
        HPAS,   2, 
            ,   5, 
        HPAE,   1, 
                Offset (0x3418), 
            ,   1, 
        PATD,   1, 
        SATD,   1, 
        SMBD,   1, 
        HDAD,   1, 
        A97D,   1, 
                Offset (0x341A), 
        RP1D,   1, 
        RP2D,   1, 
        RP3D,   1, 
        RP4D,   1, 
        RP5D,   1, 
        RP6D,   1
    }

    Mutex (MUTX, 0x00)
    Name (_S0, Package (0x03)
    {
        0x00, 
        0x00, 
        0x00
    })
    Name (_S3, Package (0x03)
    {
        0x05, 
        0x05, 
        0x00
    })
    Name (_S4, Package (0x03)
    {
        0x06, 
        0x06, 
        0x00
    })
    Name (_S5, Package (0x03)
    {
        0x07, 
        0x07, 
        0x00
    })
    Scope (\_PR)
    {
        Processor (CPU0, 0x00, 0x00001010, 0x06) {}
        Processor (CPU1, 0x01, 0x00001010, 0x06) {}
    }

    Name (\DSEN, 0x01)
    Name (\ECON, 0x00)
    Name (\GPIC, 0x00)
    Name (\CTYP, 0x00)
    Name (\L01C, 0x00)
    Name (\VFN0, 0x00)
    Method (\_PIC, 1, NotSerialized)
    {
        Store (Arg0, GPIC)
    }

    Method (_PTS, 1, NotSerialized)
    {
        Store (0x00, P80D)
        If (LEqual (Arg0, 0x03)) {}
        If (LEqual (Arg0, 0x05))
        {
            \_SB.PHSR (0x4B)
        }

        Store (\_SB.PCI0.LPCB.EC0.DOKD, \_SB.PCI0.LPCB.EC0.DCKB)
        Store (\_SB.PCI0.LPCB.EC0.BT1A, \_SB.PCI0.LPCB.EC0.BT1B)
        Store (\_SB.PCI0.LPCB.EC0.BT2A, \_SB.PCI0.LPCB.EC0.BT2B)
        Store (\_SB.PCI0.LPCB.EC0.ACAT, \_SB.PCI0.LPCB.EC0.ACAB)
        If (LEqual (Arg0, 0x03))
        {
            Store (\_SB.PCI0.LPCB.SPIC._CRS (), \_SB.PCI0.LPCB.SPIC.SSRC)
            If (And (\_SB.PCI0.LPCB.SNC.LRST, 0x04))
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    PHSW (0xD5, 0x9E, 0x80)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.LIDE)
                }
            }

            Store (0xB3, P80H)
            Store (PHS (0xA0), Local0)
        }

        If (LEqual (Arg0, 0x04))
        {
            Store (\_SB.PCI0.LPCB.SPIC._CRS (), \_SB.PCI0.LPCB.SPIC.SSRC)
            If (And (\_SB.PCI0.LPCB.SNC.LRST, 0x02))
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    PHSW (0xD5, 0x9E, 0x80)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.LIDE)
                }
            }

            Store (0xB4, P80H)
            Store (PHS (0xA2), Local0)
        }

        If (LEqual (Arg0, 0x05))
        {
            If (And (\_SB.PCI0.LPCB.SNC.LRST, 0x01))
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    PHSW (0xD5, 0x9E, 0x80)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.LIDE)
                }
            }

            Store (0xB5, P80H)
            Store (PHS (0xA7), Local0)
        }

        If (LEqual (DBGS, 0x00))
        {
            Store (0x00, RT10)
            Store (0x20, PME1)
            Store (0x01, PME0)
            Store (0x20, PMS1)
            Store (0x01, PMS0)
        }
    }

    Method (_WAK, 1, NotSerialized)
    {
        If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
        {
            If (And (CFGD, 0x01000000))
            {
                If (CondRefOf (\_OSI, Local0))
                {
                    If (LNot (\_OSI ("Windows 2001 SP2")))
                    {
                        If (And (CFGD, 0xF0))
                        {
                            TRAP (0x3D)
                        }
                    }
                }
            }
        }

        If (LEqual (RP1D, 0x00))
        {
            Notify (\_SB.PCI0.RP01, 0x00)
        }

        If (LEqual (RP4D, 0x00))
        {
            Notify (\_SB.PCI0.RP04, 0x00)
        }

        Store (\_SB.PCI0.LPCB.EC0.WUP0, \_SB.PCI0.LPCB.EC0.WUP1)
        If (LEqual (Arg0, 0x03))
        {
            \_SB.PCI0.LPCB.SPIC._SRS (\_SB.PCI0.LPCB.SPIC.SSRC)
            If (PHS (0xC7))
            {
                Notify (\_SB.PCI0.RP02, 0x02)
                Notify (\_SB.PCI0.RP03, 0x02)
                Notify (\_SB.PCI0.RP04, 0x02)
            }

            If (\_SB.PCI0.LPCB.EC0.BT1A)
            {
                Notify (\_SB.PCI0.LPCB.EC0.BAT1, 0x81)
            }

            If (LNotEqual (\_SB.PCI0.LPCB.EC0.WUP1, 0x01))
            {
                Notify (\_SB.PWRB, 0x02)
            }

            Store (0x00, \_SB.PCI0.LPCB.EC0.UDRQ)
            If (\_SB.PCI0.LPCB.EC0.DCKB)
            {
                If (\_SB.PCI0.LPCB.EC0.DOKD)
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.IUSE)
                    If (LEqual (\_SB.PCI0.LPCB.EC0.WUP1, 0x02))
                    {
                        Store (0x01, \_SB.PCI0.LPCB.EC0.UDRQ)
                        Notify (\_SB.DOCK, 0x03)
                    }
                }
                Else
                {
                    Store (0x00, \_SB.PCI0.LPCB.EC0.IUSE)
                    Notify (\_SB.DOCK, 0x00)
                    Notify (\_SB.PCI0.RP04, 0x00)
                    Notify (\_SB.PCI0, 0x01)
                }
            }
            Else
            {
                If (\_SB.PCI0.LPCB.EC0.DOKD)
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.IUSE)
                    If (LEqual (\_SB.PCI0.LPCB.EC0.WUP1, 0x02)) {}
                    Else
                    {
                        Notify (\_SB.DOCK, 0x00)
                    }
                }
            }

            If (LEqual (0x00, ACTT)) {}
        }

        If (LEqual (Arg0, 0x04))
        {
            \_SB.PCI0.LPCB.SPIC._SRS (\_SB.PCI0.LPCB.SPIC.SSRC)
            If (LEqual (\_SB.PCI0.LPCB.EC0.BAT1._STA (), 0x1F))
            {
                Notify (\_SB.PCI0.LPCB.EC0.BAT1, 0x81)
            }

            Notify (\_SB.PWRB, 0x02)
            Store (Zero, \_SB.PCI0.PCIB.CRD2.CD44)
            If (\_OSI ("Windows 2006"))
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    PHSW (0xD5, 0x97, 0x01)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.LPCB.EC0.OSTP)
                }
            }

            Store (0x00, \_SB.PCI0.LPCB.EC0.UDRQ)
            If (\_SB.PCI0.LPCB.EC0.DCKB)
            {
                If (\_SB.PCI0.LPCB.EC0.DOKD)
                {
                    If (LEqual (\_SB.PCI0.LPCB.EC0.WUP1, 0x02))
                    {
                        Store (0x01, \_SB.PCI0.LPCB.EC0.UDRQ)
                        Notify (\_SB.DOCK, 0x03)
                    }
                }
                Else
                {
                    Notify (\_SB.DOCK, 0x00)
                    Notify (\_SB.PCI0.RP04, 0x00)
                    Notify (\_SB.PCI0, 0x01)
                }
            }
            Else
            {
                If (\_SB.PCI0.LPCB.EC0.DOKD)
                {
                    If (LEqual (\_SB.PCI0.LPCB.EC0.WUP1, 0x02)) {}
                    Else
                    {
                        Notify (\_SB.DOCK, 0x00)
                    }
                }
            }
        }

        If (LEqual (OSYS, 0x07D2))
        {
            If (And (CFGD, 0x01))
            {
                If (LGreater (\_PR.CPU0._PPC, 0x00))
                {
                    Subtract (\_PR.CPU0._PPC, 0x01, \_PR.CPU0._PPC)
                    PNOT ()
                    Add (\_PR.CPU0._PPC, 0x01, \_PR.CPU0._PPC)
                    PNOT ()
                }
                Else
                {
                    Add (\_PR.CPU0._PPC, 0x01, \_PR.CPU0._PPC)
                    PNOT ()
                    Subtract (\_PR.CPU0._PPC, 0x01, \_PR.CPU0._PPC)
                    PNOT ()
                }
            }
        }

        Return (Package (0x02)
        {
            0x00, 
            0x00
        })
    }

    Scope (\_GPE)
    {
        Method (_L01, 0, NotSerialized)
        {
            Add (L01C, 0x01, L01C)
            Sleep (0x64)
            If (LAnd (LEqual (RP1D, 0x00), \_SB.PCI0.RP01.HPCS))
            {
                If (\_SB.PCI0.RP01.PDC1)
                {
                    Store (0x01, \_SB.PCI0.RP01.PDC1)
                    Store (0x01, \_SB.PCI0.RP01.HPCS)
                    Notify (\_SB.PCI0.RP01, 0x00)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.RP01.HPCS)
                }
            }

            If (LAnd (LEqual (RP2D, 0x00), \_SB.PCI0.RP02.HPCS))
            {
                If (\_SB.PCI0.RP02.PDC2)
                {
                    Store (0x01, \_SB.PCI0.RP02.PDC2)
                    Store (0x01, \_SB.PCI0.RP02.HPCS)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.RP02.HPCS)
                }
            }

            If (LAnd (LEqual (RP3D, 0x00), \_SB.PCI0.RP03.HPCS))
            {
                If (\_SB.PCI0.RP03.PDC3)
                {
                    Store (0x01, \_SB.PCI0.RP03.PDC3)
                    Store (0x01, \_SB.PCI0.RP03.HPCS)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.RP03.HPCS)
                }
            }

            If (LAnd (LEqual (RP4D, 0x00), \_SB.PCI0.RP04.HPCS))
            {
                If (\_SB.PCI0.RP04.PDC4)
                {
                    Store (0x01, \_SB.PCI0.RP04.PDC4)
                    Store (0x01, \_SB.PCI0.RP04.HPCS)
                }
                Else
                {
                    Store (0x01, \_SB.PCI0.RP04.HPCS)
                }
            }
        }

        Method (_L02, 0, NotSerialized)
        {
            Store (0x00, GPEC)
        }

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

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

        Method (_L05, 0, NotSerialized)
        {
            If (HDAD)
            {
                Notify (\_SB.PCI0.MODM, 0x02)
            }
            Else
            {
                Notify (\_SB.PCI0.HDEF, 0x02)
            }
        }

        Method (_L07, 0, NotSerialized)
        {
            Store (0x20, \_SB.PCI0.SBUS.HSTS)
        }

        Method (_L08, 0, NotSerialized)
        {
        }

        Method (_L09, 0, NotSerialized)
        {
            If (\_SB.PCI0.RP01.PSP1)
            {
                Store (0x01, \_SB.PCI0.RP01.PSP1)
                Store (0x01, \_SB.PCI0.RP01.PMCS)
                Notify (\_SB.PCI0.RP01, 0x02)
            }

            If (\_SB.PCI0.RP03.PSP3)
            {
                Store (0x01, \_SB.PCI0.RP03.PSP3)
                Store (0x01, \_SB.PCI0.RP03.PMCS)
                Notify (\_SB.PCI0.RP03, 0x02)
            }

            If (\_SB.PCI0.RP04.PSP4)
            {
                Store (0x01, \_SB.PCI0.RP04.PSP4)
                Store (0x01, \_SB.PCI0.RP04.PMCS)
                Notify (\_SB.PCI0.RP04, 0x02)
            }
        }

        Method (_L0B, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.PCIB, 0x02)
        }

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

        Method (_L1D, 0, NotSerialized)
        {
        }
    }

    Scope (\_SB)
    {
        Name (OSTB, Ones)
        OperationRegion (OSTY, SystemMemory, 0x7F67CAF7, 0x00000001)
        Field (OSTY, AnyAcc, NoLock, Preserve)
        {
            TPOS,   8
        }

        Method (OSTP, 0, NotSerialized)
        {
            If (LEqual (^OSTB, Ones))
            {
                If (CondRefOf (\_OSI, Local0))
                {
                    If (\_OSI ("Windows 2001.1"))
                    {
                        Store (0x20, ^OSTB)
                        Store (0x20, ^TPOS)
                    }
                    Else
                    {
                        If (\_OSI ("Windows 2001 SP1"))
                        {
                            Store (0x10, ^OSTB)
                            Store (0x10, ^TPOS)
                        }
                        Else
                        {
                            If (\_OSI ("Windows 2001"))
                            {
                                Store (0x08, ^OSTB)
                                Store (0x08, ^TPOS)
                            }
                            Else
                            {
                                Store (0x00, ^OSTB)
                                Store (0x00, ^TPOS)
                            }
                        }
                    }
                }
                Else
                {
                    If (CondRefOf (\_OS, Local0))
                    {
                        If (^SEQL (\_OS, "Microsoft Windows"))
                        {
                            Store (0x01, ^OSTB)
                            Store (0x01, ^TPOS)
                        }
                        Else
                        {
                            If (^SEQL (\_OS, "Microsoft WindowsME: Millennium Edition"))
                            {
                                Store (0x02, ^OSTB)
                                Store (0x02, ^TPOS)
                            }
                            Else
                            {
                                If (^SEQL (\_OS, "Microsoft Windows NT"))
                                {
                                    Store (0x04, ^OSTB)
                                    Store (0x04, ^TPOS)
                                }
                                Else
                                {
                                    Store (0x00, ^OSTB)
                                    Store (0x00, ^TPOS)
                                }
                            }
                        }
                    }
                    Else
                    {
                        Store (0x00, ^OSTB)
                        Store (0x00, ^TPOS)
                    }
                }
            }

            Return (^OSTB)
        }

        Method (SEQL, 2, Serialized)
        {
            Store (SizeOf (Arg0), Local0)
            Store (SizeOf (Arg1), Local1)
            If (LNotEqual (Local0, Local1))
            {
                Return (Zero)
            }

            Name (BUF0, Buffer (Local0) {})
            Store (Arg0, BUF0)
            Name (BUF1, Buffer (Local0) {})
            Store (Arg1, BUF1)
            Store (Zero, Local2)
            While (LLess (Local2, Local0))
            {
                Store (DerefOf (Index (BUF0, Local2)), Local3)
                Store (DerefOf (Index (BUF1, Local2)), Local4)
                If (LNotEqual (Local3, Local4))
                {
                    Return (Zero)
                }

                Increment (Local2)
            }

            Return (One)
        }
    }

    Method (BTTM, 1, Serialized)
    {
        If (PWRS)
        {
            If (LGreaterEqual (Arg0, B0SC))
            {
                Store (Arg0, B0SC)
            }
        }
        Else
        {
            If (LLessEqual (Arg0, B0SC))
            {
                Store (Arg0, B0SC)
            }
        }
    }

    Method (GETB, 3, Serialized)
    {
        Multiply (Arg0, 0x08, Local0)
        Multiply (Arg1, 0x08, Local1)
        CreateField (Arg2, Local0, Local1, TBF3)
        Return (TBF3)
    }

    Method (P8XH, 2, Serialized)
    {
        If (LEqual (Arg0, 0x00))
        {
            Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)
        }

        If (LEqual (Arg0, 0x01))
        {
            Store (Or (And (P80D, 0xFFFF00FF), ShiftLeft (Arg1, 0x08)
                ), P80D)
        }

        If (LEqual (Arg0, 0x02))
        {
            Store (Or (And (P80D, 0xFF00FFFF), ShiftLeft (Arg1, 0x10)
                ), P80D)
        }

        If (LEqual (Arg0, 0x03))
        {
            Store (Or (And (P80D, 0x00FFFFFF), ShiftLeft (Arg1, 0x18)
                ), P80D)
        }

        Store (P80D, P80H)
    }

    Method (PNOT, 0, Serialized)
    {
        If (MPEN)
        {
            If (And (PDC0, 0x08))
            {
                Notify (\_PR.CPU0, 0x80)
                If (And (PDC0, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU0, 0x81)
                }
            }

            If (And (PDC1, 0x08))
            {
                Notify (\_PR.CPU1, 0x80)
                If (And (PDC1, 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU1, 0x81)
                }
            }
        }
        Else
        {
            Notify (\_PR.CPU0, 0x80)
            Sleep (0x64)
            Notify (\_PR.CPU0, 0x81)
        }
    }

    Method (TRAP, 1, Serialized)
    {
        Store (Arg0, SMIF)
        Store (0x00, TRP0)
        Return (SMIF)
    }

    Method (GETP, 1, Serialized)
    {
        If (LEqual (And (Arg0, 0x09), 0x00))
        {
            Return (0xFFFFFFFF)
        }

        If (LEqual (And (Arg0, 0x09), 0x08))
        {
            Return (0x0384)
        }

        ShiftRight (And (Arg0, 0x0300), 0x08, Local0)
        ShiftRight (And (Arg0, 0x3000), 0x0C, Local1)
        Return (Multiply (0x1E, Subtract (0x09, Add (Local0, Local1))
            ))
    }

    Method (GDMA, 5, Serialized)
    {
        If (Arg0)
        {
            If (LAnd (Arg1, Arg4))
            {
                Return (0x14)
            }

            If (LAnd (Arg2, Arg4))
            {
                Return (Multiply (Subtract (0x04, Arg3), 0x0F))
            }

            Return (Multiply (Subtract (0x04, Arg3), 0x1E))
        }

        Return (0xFFFFFFFF)
    }

    Method (GETT, 1, Serialized)
    {
        Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02
            ), 0x03), And (Arg0, 0x03)))))
    }

    Method (GETF, 3, Serialized)
    {
        Name (TMPF, 0x00)
        If (Arg0)
        {
            Or (TMPF, 0x01, TMPF)
        }

        If (And (Arg2, 0x02))
        {
            Or (TMPF, 0x02, TMPF)
        }

        If (Arg1)
        {
            Or (TMPF, 0x04, TMPF)
        }

        If (And (Arg2, 0x20))
        {
            Or (TMPF, 0x08, TMPF)
        }

        If (And (Arg2, 0x4000))
        {
            Or (TMPF, 0x10, TMPF)
        }

        Return (TMPF)
    }

    Method (SETP, 3, Serialized)
    {
        If (LGreater (Arg0, 0xF0))
        {
            Return (0x08)
        }
        Else
        {
            If (And (Arg1, 0x02))
            {
                If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
                {
                    Return (0x2301)
                }

                If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, 0x01)))
                {
                    Return (0x2101)
                }
            }

            Return (0x1001)
        }
    }

    Method (SDMA, 1, Serialized)
    {
        If (LLessEqual (Arg0, 0x14))
        {
            Return (0x01)
        }

        If (LLessEqual (Arg0, 0x1E))
        {
            Return (0x02)
        }

        If (LLessEqual (Arg0, 0x2D))
        {
            Return (0x01)
        }

        If (LLessEqual (Arg0, 0x3C))
        {
            Return (0x02)
        }

        If (LLessEqual (Arg0, 0x5A))
        {
            Return (0x01)
        }

        Return (0x00)
    }

    Method (SETT, 3, Serialized)
    {
        If (And (Arg1, 0x02))
        {
            If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
            {
                Return (0x0B)
            }

            If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, 0x01)))
            {
                Return (0x09)
            }
        }

        Return (0x04)
    }

    Scope (\_TZ)
    {
        ThermalZone (ATF0)
        {
            Method (KELV, 1, NotSerialized)
            {
                Store (Arg0, Local0)
                Multiply (Local0, 0x0A, Local0)
                Add (Local0, 0x0AAB, Local0)
                Return (Local0)
            }

            Method (_TMP, 0, Serialized)
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    Store (PHSD (0xD4, 0xC0), Local1)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.A1TP, Local1)
                }

                ShiftRight (Local1, 0x08, Local0)
                If (LGreater (Local0, 0x80))
                {
                    Sleep (0x32)
                    If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                    {
                        Store (PHSD (0xD4, 0xC0), Local1)
                    }
                    Else
                    {
                        Store (\_SB.PCI0.LPCB.EC0.A1TP, Local1)
                    }

                    ShiftRight (Local1, 0x08, Local0)
                }

                Return (KELV (Local0))
            }

            Method (_PSV, 0, NotSerialized)
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    Store (PHSD (0xD4, 0xC4), Local1)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.A1PT, Local1)
                }

                ShiftRight (Local1, 0x08, Local0)
                Return (KELV (Local0))
            }

            Method (_PSL, 0, Serialized)
            {
                If (MPEN)
                {
                    Return (Package (0x02)
                    {
                        \_PR.CPU0, 
                        \_PR.CPU1
                    })
                }

                Return (Package (0x01)
                {
                    \_PR.CPU0
                })
            }

            Method (_CRT, 0, Serialized)
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    Store (PHSD (0xD4, 0xC6), Local1)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.A1CT, Local1)
                }

                ShiftRight (Local1, 0x08, Local0)
                Return (KELV (Local0))
            }

            Name (_TC1, 0x01)
            Name (_TC2, 0x02)
            Name (_TSP, 0x32)
        }

        ThermalZone (DTS0)
        {
            Name (_PSV, 0x0E92)
            Name (_CRT, 0x0E9C)
            Method (_PSL, 0, Serialized)
            {
                If (MPEN)
                {
                    Return (Package (0x02)
                    {
                        \_PR.CPU0, 
                        \_PR.CPU1
                    })
                }

                Return (Package (0x01)
                {
                    \_PR.CPU0
                })
            }

            Name (_TC1, 0x01)
            Name (_TC2, 0x02)
            Name (_TSP, 0x32)
            Method (_TMP, 0, NotSerialized)
            {
                Store (PHSB (0xA6, 0x00), Local0)
                Multiply (Local0, 0x0A, Local0)
                Add (Local0, 0x0AAB, Local0)
                Return (Local0)
            }
        }

        ThermalZone (DTS1)
        {
            Name (_PSV, 0x0E92)
            Name (_CRT, 0x0E9C)
            Method (_PSL, 0, Serialized)
            {
                If (MPEN)
                {
                    Return (Package (0x02)
                    {
                        \_PR.CPU0, 
                        \_PR.CPU1
                    })
                }

                Return (Package (0x01)
                {
                    \_PR.CPU0
                })
            }

            Name (_TC1, 0x01)
            Name (_TC2, 0x02)
            Name (_TSP, 0x32)
            Method (_TMP, 0, NotSerialized)
            {
                If (MPEN)
                {
                    Store (PHSB (0xA6, 0x01), Local0)
                }
                Else
                {
                    Store (PHSB (0xA6, 0x00), Local0)
                }

                Multiply (Local0, 0x0A, Local0)
                Add (Local0, 0x0AAB, Local0)
                Return (Local0)
            }
        }
    }

    OperationRegion (SMI0, SystemMemory, 0x7F67CAF8, 0x00000415)
    Field (SMI0, AnyAcc, NoLock, Preserve)
    {
        BCMD,   8, 
        DID,    32, 
        INFO,   4096
    }

    Field (SMI0, AnyAcc, NoLock, Preserve)
    {
                Offset (0x05), 
        INFB,   8
    }

    Field (SMI0, AnyAcc, NoLock, Preserve)
    {
                Offset (0x05), 
        INFD,   32
    }

    Field (SMI0, AnyAcc, NoLock, Preserve)
    {
                Offset (0x05), 
        SXBF,   8320
    }

    Field (SMI0, AnyAcc, NoLock, Preserve)
    {
                Offset (0x05), 
        INF1,   8, 
        INF2,   8
    }

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

    Mutex (MPHS, 0x00)
    Method (PHS0, 1, NotSerialized)
    {
        Store (Arg0, BCMD)
        Store (Zero, SMIC)
        While (LEqual (BCMD, Arg0)) {}
        Store (0x00, BCMD)
    }

    Method (PHS, 1, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (0x00, DID)
        PHS0 (Arg0)
        Store (INFD, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PHSD, 2, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (0x00, DID)
        Store (Arg1, INFD)
        PHS0 (Arg0)
        Store (INFD, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PHSW, 3, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (0x00, DID)
        Store (Arg1, INF1)
        Store (Arg2, INF2)
        PHS0 (Arg0)
        Store (INFB, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PHSB, 2, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (0x00, DID)
        Store (Arg1, INFB)
        PHS0 (Arg0)
        Store (INFB, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PSCS, 1, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (Arg0, DID)
        Store (Zero, INFO)
        PHS0 (0x00)
        Store (INFO, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PSSS, 2, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (Arg0, DID)
        Store (Arg1, INFO)
        PHS0 (0x01)
        Release (MPHS)
    }

    Method (PSPS, 1, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (Arg0, DID)
        Store (Zero, INFO)
        PHS0 (0x02)
        Store (INFO, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Method (PSDI, 1, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (Arg0, DID)
        PHS0 (0x03)
        Release (MPHS)
    }

    Method (PSST, 1, Serialized)
    {
        Acquire (MPHS, 0xFFFF)
        Store (Arg0, DID)
        PHS0 (0x04)
        Store (INFB, Local0)
        Release (MPHS)
        Return (Local0)
    }

    Scope (\_SB)
    {
        OperationRegion (TCG1, SystemMemory, 0x7F67C9F0, 0x00000007)
        Field (TCG1, AnyAcc, NoLock, Preserve)
        {
            PPRQ,   8, 
            PPLO,   8, 
            PPRP,   8, 
            PPOR,   8, 
            TPRS,   8, 
            TPMV,   8, 
            MOR,    8
        }

        Method (PHSR, 1, Serialized)
        {
            Store (Arg0, BCMD)
            Store (Zero, DID)
            Store (Zero, SMIC)
            If (LEqual (BCMD, Arg0)) {}
            Store (Zero, BCMD)
            Store (Zero, DID)
            Return (0x00)
        }

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

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

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

        Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (\_OSI, Local0))
            {
                If (\_OSI ("Linux"))
                {
                    Store (0x01, LINX)
                }

                If (\_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (\_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (\_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (\_OSI ("Windows 2006"))
                {
                    Store (0x07D6, OSYS)
                    If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                    {
                        PHSW (0xD5, 0x97, 0x01)
                    }
                    Else
                    {
                        Store (0x01, \_SB.PCI0.LPCB.EC0.OSTP)
                    }
                }
            }
        }

        Device (LID0)
        {
            Name (_HID, EisaId ("PNP0C0D"))
            Method (_LID, 0, NotSerialized)
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    And (PHSB (0xD4, 0x82), 0x04, Local0)
                }
                Else
                {
                    Store (\_SB.PCI0.LPCB.EC0.LIDS, Local0)
                }

                Return (Local0)
            }
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Name (_PRW, Package (0x02)
            {
                0x1D, 
                0x04
            })
        }

        Mutex (PLOK, 0x00)
        Method (NCPU, 0, NotSerialized)
        {
            Acquire (PLOK, 0xFFFF)
            Notify (\_PR.CPU0, 0x80)
            If (MPEN)
            {
                Notify (\_PR.CPU1, 0x80)
            }

            Sleep (0x64)
            Notify (\_PR.CPU0, 0x81)
            If (MPEN)
            {
                Notify (\_PR.CPU1, 0x81)
            }

            Release (PLOK)
        }

        Device (PCI0)
        {
            Method (_S3D, 0, NotSerialized)
            {
                Return (0x02)
            }

            Method (_S4D, 0, NotSerialized)
            {
                Return (0x02)
            }

            Name (_HID, EisaId ("PNP0A08"))
            Name (_CID, 0x030AD041)
            Name (_ADR, 0x00)
            Name (SUPP, 0x00)
            Name (CTRL, 0x00)
            Method (_OSC, 4, NotSerialized)
            {
                CreateDWordField (Arg3, 0x00, CDW1)
                CreateDWordField (Arg3, 0x04, CDW2)
                CreateDWordField (Arg3, 0x08, CDW3)
                If (LEqual (Arg0, Buffer (0x10)
                        {
                            /* 0000 */    0x5B, 0x4D, 0xDB, 0x33, 0xF7, 0x1F, 0x1C, 0x40, 
                            /* 0008 */    0x96, 0x57, 0x74, 0x41, 0xC0, 0x3D, 0xD7, 0x66
                        }))
                {
                    Store (CDW2, SUPP)
                    Store (CDW3, CTRL)
                    Store (0x00, CTRL)
                    If (LNotEqual (Arg1, One))
                    {
                        Or (CDW1, 0x08, CDW1)
                    }

                    If (LNotEqual (CDW3, CTRL))
                    {
                        Or (CDW1, 0x10, CDW1)
                    }

                    Store (CTRL, CDW3)
                    Return (Arg3)
                }
                Else
                {
                    Or (CDW1, 0x04, CDW1)
                    Return (Arg3)
                }
            }

            Name (_BBN, 0x00)
            OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
            Field (HBUS, DWordAcc, NoLock, Preserve)
            {
                        Offset (0x50), 
                    ,   4, 
                PM0H,   2, 
                        Offset (0x51), 
                PM1L,   2, 
                    ,   2, 
                PM1H,   2, 
                        Offset (0x52), 
                PM2L,   2, 
                    ,   2, 
                PM2H,   2, 
                        Offset (0x53), 
                PM3L,   2, 
                    ,   2, 
                PM3H,   2, 
                        Offset (0x54), 
                PM4L,   2, 
                    ,   2, 
                PM4H,   2, 
                        Offset (0x55), 
                PM5L,   2, 
                    ,   2, 
                PM5H,   2, 
                        Offset (0x56), 
                PM6L,   2, 
                    ,   2, 
                PM6H,   2, 
                        Offset (0x57), 
                    ,   7, 
                HENA,   1, 
                        Offset (0x5C), 
                    ,   3, 
                TOUD,   5
            }

            Name (BUF0, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000CF7,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000CF8,         // Length
                    ,, , TypeStatic)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000D00,         // Range Minimum
                    0x0000FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0000F300,         // Length
                    ,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C0000,         // Range Minimum
                    0x000C3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y00, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C4000,         // Range Minimum
                    0x000C7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y01, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000CBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y02, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000CC000,         // Range Minimum
                    0x000CFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y03, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D0000,         // Range Minimum
                    0x000D3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y04, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D4000,         // Range Minimum
                    0x000D7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y05, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D8000,         // Range Minimum
                    0x000DBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y06, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000DC000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y07, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E0000,         // Range Minimum
                    0x000E3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y08, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E4000,         // Range Minimum
                    0x000E7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y09, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E8000,         // Range Minimum
                    0x000EBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y0A, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000EC000,         // Range Minimum
                    0x000EFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, _Y0B, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000F0000,         // Range Minimum
                    0x000FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00010000,         // Length
                    ,, _Y0C, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFEBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y0E, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFED40000,         // Range Minimum
                    0xFED44FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y0D, AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, Serialized)
            {
                If (PM1L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y00._LEN, C0LN)
                    Store (Zero, C0LN)
                }

                If (LEqual (PM1L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y00._RW, C0RW)
                    Store (Zero, C0RW)
                }

                If (PM1H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y01._LEN, C4LN)
                    Store (Zero, C4LN)
                }

                If (LEqual (PM1H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y01._RW, C4RW)
                    Store (Zero, C4RW)
                }

                If (PM2L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y02._LEN, C8LN)
                    Store (Zero, C8LN)
                }

                If (LEqual (PM2L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y02._RW, C8RW)
                    Store (Zero, C8RW)
                }

                If (PM2H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y03._LEN, CCLN)
                    Store (Zero, CCLN)
                }

                If (LEqual (PM2H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y03._RW, CCRW)
                    Store (Zero, CCRW)
                }

                If (PM3L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y04._LEN, D0LN)
                    Store (Zero, D0LN)
                }

                If (LEqual (PM3L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y04._RW, D0RW)
                    Store (Zero, D0RW)
                }

                If (PM3H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y05._LEN, D4LN)
                    Store (Zero, D4LN)
                }

                If (LEqual (PM3H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y05._RW, D4RW)
                    Store (Zero, D4RW)
                }

                If (PM4L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y06._LEN, D8LN)
                    Store (Zero, D8LN)
                }

                If (LEqual (PM4L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y06._RW, D8RW)
                    Store (Zero, D8RW)
                }

                If (PM4H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y07._LEN, DCLN)
                    Store (Zero, DCLN)
                }

                If (LEqual (PM4H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y07._RW, DCRW)
                    Store (Zero, DCRW)
                }

                If (PM5L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y08._LEN, E0LN)
                    Store (Zero, E0LN)
                }

                If (LEqual (PM5L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y08._RW, E0RW)
                    Store (Zero, E0RW)
                }

                If (PM5H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y09._LEN, E4LN)
                    Store (Zero, E4LN)
                }

                If (LEqual (PM5H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y09._RW, E4RW)
                    Store (Zero, E4RW)
                }

                If (PM6L)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0A._LEN, E8LN)
                    Store (Zero, E8LN)
                }

                If (LEqual (PM6L, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0A._RW, E8RW)
                    Store (Zero, E8RW)
                }

                If (PM6H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0B._LEN, ECLN)
                    Store (Zero, ECLN)
                }

                If (LEqual (PM6H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0B._RW, ECRW)
                    Store (Zero, ECRW)
                }

                If (PM0H)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0C._LEN, F0LN)
                    Store (Zero, F0LN)
                }

                If (LEqual (PM0H, 0x01))
                {
                    CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, F0RW)
                    Store (Zero, F0RW)
                }

                If (TPMP)
                {
                    CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, TPML)
                    Store (0x5000, TPML)
                }

                CreateDWordField (BUF0, \_SB.PCI0._Y0E._MIN, M1MN)
                CreateDWordField (BUF0, \_SB.PCI0._Y0E._MAX, M1MX)
                CreateDWordField (BUF0, \_SB.PCI0._Y0E._LEN, M1LN)
                ShiftLeft (TOUD, 0x1B, M1MN)
                Add (Subtract (M1MX, M1MN), 0x01, M1LN)
                Return (BUF0)
            }

            Method (_PRT, 0, NotSerialized)
            {
                If (GPIC)
                {
                    Return (Package (0x0F)
                    {
                        Package (0x04)
                        {
                            0x0001FFFF, 
                            0x00, 
                            0x00, 
                            0x10
                        }, 

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

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

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

                        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, 
                            0x13
                        }, 

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

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

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

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

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            0x01, 
                            0x00, 
                            0x14
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            0x01, 
                            0x00, 
                            0x16
                        }
                    })
                }
                Else
                {
                    Return (Package (0x0F)
                    {
                        Package (0x04)
                        {
                            0x0001FFFF, 
                            0x00, 
                            \_SB.PCI0.LPCB.LNKA, 
                            0x00
                        }, 

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

                        Package (0x04)
                        {
                            0x0002FFFF, 
                            0x01, 
                            \_SB.PCI0.LPCB.LNKB, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001BFFFF, 
                            0x00, 
                            \_SB.PCI0.LPCB.LNKF, 
                            0x00
                        }, 

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

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

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

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

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x00, 
                            \_SB.PCI0.LPCB.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x01, 
                            \_SB.PCI0.LPCB.LNKD, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001DFFFF, 
                            0x02, 
                            \_SB.PCI0.LPCB.LNKD, 
                            0x00
                        }, 

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

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            0x00, 
                            \_SB.PCI0.LPCB.LNKG, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001EFFFF, 
                            0x01, 
                            \_SB.PCI0.LPCB.LNKE, 
                            0x00
                        }, 

                        Package (0x04)
                        {
                            0x001FFFFF, 
                            0x01, 
                            \_SB.PCI0.LPCB.LNKG, 
                            0x00
                        }
                    })
                }
            }

            Device (PDRC)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Name (_UID, 0x01)
                Name (BUF0, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xE0000000,         // Address Base
                        0x10000000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED18000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED19000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED1C000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED20000,         // Address Base
                        0x00020000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED40000,         // Address Base
                        0x00005000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED45000,         // Address Base
                        0x0004B000,         // Address Length
                        )
                })
                Name (BUF1, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xE0000000,         // Address Base
                        0x10000000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED18000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED19000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED1C000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED20000,         // Address Base
                        0x00020000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED45000,         // Address Base
                        0x0004B000,         // Address Length
                        )
                })
                Method (_CRS, 0, Serialized)
                {
                    If (LNot (TPMP))
                    {
                        Return (BUF0)
                    }

                    Return (BUF1)
                }
            }

            Device (PEGP)
            {
                Name (_ADR, 0x00010000)
                Method (_PRT, 0, NotSerialized)
                {
                    If (GPIC)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x10
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                0x00, 
                                0x13
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKA, 
                                0x00
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKD, 
                                0x00
                            }
                        })
                    }
                }

                Device (NGFX)
                {
                    Name (_ADR, 0x00)
                    Method (NVIF, 3, NotSerialized)
                    {
                        Store (Buffer (0x04) {}, Local0)
                        CreateDWordField (Local0, 0x00, STA0)
                        Store (Buffer (0x04) {}, Local1)
                        CreateDWordField (Local1, 0x00, DAT0)
                        Store (0x80000002, STA0)
                        Store (0x00, DAT0)
                        If (LEqual (Arg0, 0x01))
                        {
                            If (LEqual (Arg1, 0x00))
                            {
                                Store (0x00, STA0)
                                Store (0x01, DAT0)
                                Concatenate (Local0, Local1, Local0)
                            }

                            Return (Local0)
                        }

                        If (LEqual (Arg0, 0x05))
                        {
                            If (LEqual (Arg1, 0x00))
                            {
                                Store (0x00, STA0)
                                Store (0x00, DAT0)
                                Concatenate (Local0, Local1, Local0)
                            }

                            If (LEqual (Arg1, 0x01))
                            {
                                Store (0x00, STA0)
                                If (\_SB.PCI0.LPCB.EC0.DOKD)
                                {
                                    Store (0x01, DAT0)
                                }
                                Else
                                {
                                    Store (0x00, DAT0)
                                }

                                Concatenate (Local0, Local1, Local0)
                            }

                            Return (Local0)
                        }

                        If (LEqual (Arg0, 0x0B))
                        {
                            If (LEqual (Arg1, 0x01))
                            {
                                Store (0x00, STA0)
                                Store (Buffer (0x08)
                                    {
                                        /* 0000 */    0x00, 0x01, 0x01, 0x00, 0x11, 0x01, 0x01, 0x00
                                    }, Local1)
                                Concatenate (Local0, Local1, Local0)
                            }

                            Return (Local0)
                        }

                        Return (Local0)
                    }

                    Method (_DOD, 0, NotSerialized)
                    {
                        Return (Package (0x03)
                        {
                            0x00010110, 
                            0x00010100, 
                            0x00010111
                        })
                    }

                    Device (LCD)
                    {
                        Method (_ADR, 0, Serialized)
                        {
                            Return (And (0xFFFF, 0x0110))
                        }
                    }

                    Device (CRT)
                    {
                        Method (_ADR, 0, Serialized)
                        {
                            Return (And (0xFFFF, 0x0100))
                        }
                    }

                    Device (DVI)
                    {
                        Method (_ADR, 0, Serialized)
                        {
                            Return (And (0xFFFF, 0x0111))
                        }
                    }
                }
            }

            Device (GFX0)
            {
                Name (_ADR, 0x00020000)
                Method (_DOS, 1, NotSerialized)
                {
                }

                Method (_DOD, 0, NotSerialized)
                {
                    If (LEqual (NDID, 0x01))
                    {
                        Name (TMP1, Package (0x01)
                        {
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP1, 0x00))
                        Return (TMP1)
                    }

                    If (LEqual (NDID, 0x02))
                    {
                        Name (TMP2, Package (0x02)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP2, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP2, 0x01))
                        Return (TMP2)
                    }

                    If (LEqual (NDID, 0x03))
                    {
                        Name (TMP3, Package (0x03)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP3, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP3, 0x01))
                        Store (Or (0x00010000, DID3), Index (TMP3, 0x02))
                        Return (TMP3)
                    }

                    If (LEqual (NDID, 0x04))
                    {
                        Name (TMP4, Package (0x04)
                        {
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF
                        })
                        Store (Or (0x00010000, DID1), Index (TMP4, 0x00))
                        Store (Or (0x00010000, DID2), Index (TMP4, 0x01))
                        Store (Or (0x00010000, DID3), Index (TMP4, 0x02))
                        Store (Or (0x00010000, DID4), Index (TMP4, 0x03))
                        Return (TMP4)
                    }

                    Name (TMP5, Package (0x05)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    Store (Or (0x00010000, DID1), Index (TMP5, 0x00))
                    Store (Or (0x00010000, DID2), Index (TMP5, 0x01))
                    Store (Or (0x00010000, DID3), Index (TMP5, 0x02))
                    Store (Or (0x00010000, DID4), Index (TMP5, 0x03))
                    Store (Or (0x00010000, DID5), Index (TMP5, 0x04))
                    Return (TMP5)
                }

                Device (LCD)
                {
                    Method (_ADR, 0, Serialized)
                    {
                        Return (And (0xFFFF, DID3))
                    }

                    Name (BRIT, Package (0x09)
                    {
                        0x04, 
                        0x10, 
                        0x1C, 
                        0x28, 
                        0x34, 
                        0x40, 
                        0x4C, 
                        0x58, 
                        0x64
                    })
                    Method (_BCL, 0, NotSerialized)
                    {
                        Name (RETB, Package (0x0B) {})
                        Store (DerefOf (Index (BRIT, 0x08)), Index (RETB, 0x00))
                        Store (DerefOf (Index (BRIT, 0x08)), Index (RETB, 0x01))
                        Store (Zero, Local0)
                        While (LLess (Local0, SizeOf (BRIT)))
                        {
                            Store (DerefOf (Index (BRIT, Local0)), Index (RETB, Add (Local0, 
                                0x02)))
                            Increment (Local0)
                        }

                        Return (RETB)
                    }

                    Method (_BCM, 1, NotSerialized)
                    {
                        Store (Match (BRIT, MEQ, Arg0, MTR, 0x00, 0x00), Local0)
                        If (LEqual (Local0, Ones))
                        {
                            Return (Zero)
                        }

                        PHSB (0xC3, Local0)
                        PHSB (0xC2, Local0)
                        Return (Zero)
                    }

                    Method (_BQC, 0, NotSerialized)
                    {
                        Store (PHSB (0xC1, 0x00), Local0)
                        Return (DerefOf (Index (BRIT, Local0)))
                    }
                }
            }

            Device (HDEF)
            {
                Name (_ADR, 0x001B0000)
                Method (AZPW, 1, Serialized)
                {
                    If (\_SB.PCI0.LPCB.EC0.ECOK)
                    {
                        If (Arg0)
                        {
                            Store (0x00, Local0)
                        }
                        Else
                        {
                            Store (0x01, Local0)
                        }

                        If (LNotEqual (Local0, \_SB.PCI0.LPCB.EC0.VAUD))
                        {
                            Store (0x01, \_SB.PCI0.LPCB.EC0.PMUT)
                            Store (Local0, \_SB.PCI0.LPCB.EC0.VAUD)
                            Sleep (0x012C)
                            Store (0x00, \_SB.PCI0.LPCB.EC0.PMUT)
                        }
                    }
                }

                Method (_PS0, 0, NotSerialized)
                {
                    AZPW (0x01)
                }

                Method (_PS3, 0, NotSerialized)
                {
                }
            }

            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
                OperationRegion (P1CS, PCI_Config, 0x40, 0x0100)
                Field (P1CS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x1A), 
                    ABP1,   1, 
                        ,   2, 
                    PDC1,   1, 
                        ,   2, 
                    PDS1,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSP1,   1, 
                            Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Device (S1F0)
                {
                    Name (_ADR, 0x00)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F1)
                {
                    Name (_ADR, 0x01)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F2)
                {
                    Name (_ADR, 0x02)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F3)
                {
                    Name (_ADR, 0x03)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F4)
                {
                    Name (_ADR, 0x04)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F5)
                {
                    Name (_ADR, 0x05)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F6)
                {
                    Name (_ADR, 0x06)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Device (S1F7)
                {
                    Name (_ADR, 0x07)
                    Name (_SUN, 0x01)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x04
                    })
                    Method (_RMV, 0, NotSerialized)
                    {
                        Return (0x01)
                    }
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (\GPIC)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x10
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                0x00, 
                                0x13
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKA, 
                                0x00
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKD, 
                                0x00
                            }
                        })
                    }
                }
            }

            Device (RP02)
            {
                Name (_ADR, 0x001C0001)
                OperationRegion (P2CS, PCI_Config, 0x40, 0x0100)
                Field (P2CS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x1A), 
                    ABP2,   1, 
                        ,   2, 
                    PDC2,   1, 
                        ,   2, 
                    PDS2,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSP2,   1, 
                            Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Device (WLAN)
                {
                    Name (_ADR, 0x00)
                    Name (_PSC, 0x00)
                    Method (_PS0, 0, NotSerialized)
                    {
                        Store (0x00, _PSC)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                    }

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

                Method (_PRT, 0, NotSerialized)
                {
                    If (\GPIC)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x11
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                0x00, 
                                0x10
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPCB.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPCB.LNKD, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKA, 
                                0x00
                            }
                        })
                    }
                }
            }

            Device (RP03)
            {
                Name (_ADR, 0x001C0002)
                OperationRegion (P3CS, PCI_Config, 0x40, 0x0100)
                Field (P3CS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x1A), 
                    ABP3,   1, 
                        ,   2, 
                    PDC3,   1, 
                        ,   2, 
                    PDS3,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSP3,   1, 
                            Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (\GPIC)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x12
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                0x00, 
                                0x11
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKC, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPCB.LNKD, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPCB.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKB, 
                                0x00
                            }
                        })
                    }
                }

                Device (TLAN)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x03
                    })
                }

                Name (_HPP, Package (0x04)
                {
                    0x10, 
                    0x00, 
                    0x00, 
                    0x00
                })
            }

            Device (RP04)
            {
                Name (_ADR, 0x001C0003)
                OperationRegion (P4CS, PCI_Config, 0x40, 0x0100)
                Field (P4CS, AnyAcc, NoLock, WriteAsZeros)
                {
                            Offset (0x1A), 
                    ABP4,   1, 
                        ,   2, 
                    PDC4,   1, 
                        ,   2, 
                    PDS4,   1, 
                            Offset (0x20), 
                            Offset (0x22), 
                    PSP4,   1, 
                            Offset (0x9C), 
                        ,   30, 
                    HPCS,   1, 
                    PMCS,   1
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (\GPIC)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                0x00, 
                                0x00, 
                                0x13
                            }, 

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

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x01, 
                                \_SB.PCI0.LPCB.LNKA, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x02, 
                                \_SB.PCI0.LPCB.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKC, 
                                0x00
                            }
                        })
                    }
                }

                Device (DLAN)
                {
                    Name (_ADR, 0x00)
                    Name (_SUN, 0x04)
                    Name (_PRW, Package (0x02)
                    {
                        0x09, 
                        0x03
                    })
                    Name (_EJD, "\\_SB.DOCK")
                }

                Device (S4F1)
                {
                    Name (_ADR, 0x01)
                    Name (_SUN, 0x04)
                }

                Device (S4F2)
                {
                    Name (_ADR, 0x02)
                    Name (_SUN, 0x04)
                }

                Device (S4F3)
                {
                    Name (_ADR, 0x03)
                    Name (_SUN, 0x04)
                }

                Device (S4F4)
                {
                    Name (_ADR, 0x04)
                    Name (_SUN, 0x04)
                }

                Device (S4F5)
                {
                    Name (_ADR, 0x05)
                    Name (_SUN, 0x04)
                }

                Device (S4F6)
                {
                    Name (_ADR, 0x06)
                    Name (_SUN, 0x04)
                }

                Device (S4F7)
                {
                    Name (_ADR, 0x07)
                    Name (_SUN, 0x04)
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0000)
                OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
                Field (U1CS, DWordAcc, NoLock, Preserve)
                {
                    U1EN,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x03, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U1EN)
                    }
                    Else
                    {
                        Store (0x00, U1EN)
                    }
                }

                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)
                {
                    Return (0x02)
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0001)
                OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
                Field (U2CS, DWordAcc, NoLock, Preserve)
                {
                    U2EN,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x04, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U2EN)
                    }
                    Else
                    {
                        Store (0x00, U2EN)
                    }
                }

                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)
                {
                    Return (0x02)
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001D0002)
                OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
                Field (U2CS, DWordAcc, NoLock, Preserve)
                {
                    U3EN,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0C, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U3EN)
                    }
                    Else
                    {
                        Store (0x00, U3EN)
                    }
                }

                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)
                {
                    Return (0x02)
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001D0003)
                OperationRegion (U4CS, PCI_Config, 0xC4, 0x04)
                Field (U4CS, DWordAcc, NoLock, Preserve)
                {
                    U4EN,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x03
                })
                Method (_PSW, 1, NotSerialized)
                {
                    If (Arg0)
                    {
                        Store (0x03, U4EN)
                    }
                    Else
                    {
                        Store (0x00, U4EN)
                    }
                }

                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)
                {
                    Return (0x02)
                }
            }

            Device (USB7)
            {
                Name (_ADR, 0x001D0007)
                Device (HUB7)
                {
                    Name (_ADR, 0x00)
                    Device (PRT1)
                    {
                        Name (_ADR, 0x01)
                    }

                    Device (PRT2)
                    {
                        Name (_ADR, 0x02)
                    }

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)
                    }

                    Device (PRT4)
                    {
                        Name (_ADR, 0x04)
                    }

                    Device (PRT5)
                    {
                        Name (_ADR, 0x05)
                    }

                    Device (PRT6)
                    {
                        Name (_ADR, 0x06)
                    }

                    Device (PRT7)
                    {
                        Name (_ADR, 0x07)
                    }

                    Device (PRT8)
                    {
                        Name (_ADR, 0x08)
                    }
                }

                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x03
                })
                Method (_S3D, 0, NotSerialized)
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)
                {
                    Return (0x02)
                }
            }

            Device (PCIB)
            {
                Name (_ADR, 0x001E0000)
                Device (SLT0)
                {
                    Name (_ADR, 0x00)
                    Name (_PRW, Package (0x02)
                    {
                        0x0B, 
                        0x04
                    })
                }

                Device (CRD2)
                {
                    Name (_ADR, 0x00040000)
                    OperationRegion (CCRD, PCI_Config, 0x00, 0xE4)
                    Field (CCRD, DWordAcc, NoLock, Preserve)
                    {
                                Offset (0x04), 
                        CD04,   32, 
                                Offset (0x3E), 
                        CD3E,   32, 
                                Offset (0x44), 
                        CD44,   32
                    }

                    Method (_INI, 0, NotSerialized)
                    {
                        Store (Zero, CD44)
                    }

                    Name (_PSC, 0x00)
                    Method (_PS0, 0, NotSerialized)
                    {
                        Store (0x00, _PSC)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                    }

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

                Device (S294)
                {
                    Name (_ADR, 0x00040001)
                }

                Device (MST2)
                {
                    Name (_ADR, 0x00040002)
                }

                Device (CRD0)
                {
                    Name (_ADR, 0x00050000)
                    OperationRegion (CCRD, PCI_Config, 0x00, 0xE4)
                    Field (CCRD, DWordAcc, NoLock, Preserve)
                    {
                                Offset (0x04), 
                        CD04,   32, 
                                Offset (0x3E), 
                        CD3E,   32, 
                                Offset (0x44), 
                        CD44,   32
                    }

                    Method (_INI, 0, NotSerialized)
                    {
                        Store (Zero, CD44)
                    }

                    Name (_PSC, 0x00)
                    Method (_PS0, 0, NotSerialized)
                    {
                        Store (0x00, _PSC)
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                    }

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

                Device (SD94)
                {
                    Name (_ADR, 0x00050002)
                }

                Device (MMST)
                {
                    Name (_ADR, 0x00050003)
                }

                Method (_PRT, 0, NotSerialized)
                {
                    If (GPIC)
                    {
                        Return (Package (0x0A)
                        {
                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x00, 
                                0x00, 
                                0x14
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x01, 
                                0x00, 
                                0x15
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x02, 
                                0x00, 
                                0x16
                            }, 

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

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

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

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

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

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

                            Package (0x04)
                            {
                                0x000BFFFF, 
                                0x01, 
                                0x00, 
                                0x12
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x0A)
                        {
                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKE, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x01, 
                                \_SB.PCI0.LPCB.LNKF, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x02, 
                                \_SB.PCI0.LPCB.LNKG, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKH, 
                                0x00
                            }, 

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

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                0x02, 
                                \_SB.PCI0.LPCB.LNKE, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                0x03, 
                                \_SB.PCI0.LPCB.LNKH, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x0008FFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKE, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x000BFFFF, 
                                0x00, 
                                \_SB.PCI0.LPCB.LNKB, 
                                0x00
                            }, 

                            Package (0x04)
                            {
                                0x000BFFFF, 
                                0x01, 
                                \_SB.PCI0.LPCB.LNKC, 
                                0x00
                            }
                        })
                    }
                }
            }

            Device (AUD0)
            {
                Name (_ADR, 0x001E0002)
            }

            Device (MODM)
            {
                Name (_ADR, 0x001E0003)
            }

            Device (LPCB)
            {
                Name (_ADR, 0x001F0000)
                OperationRegion (LPC0, PCI_Config, 0x40, 0xC0)
                Field (LPC0, AnyAcc, NoLock, Preserve)
                {
                            Offset (0x20), 
                    PARC,   8, 
                    PBRC,   8, 
                    PCRC,   8, 
                    PDRC,   8, 
                            Offset (0x28), 
                    PERC,   8, 
                    PFRC,   8, 
                    PGRC,   8, 
                    PHRC,   8, 
                            Offset (0x40), 
                    IOD0,   8, 
                    IOD1,   8, 
                    IOD2,   8, 
                            Offset (0x44), 
                            Offset (0x46), 
                            Offset (0x48), 
                    GID2,   32, 
                    GID3,   32, 
                    GID4,   32
                }

                Device (LNKA)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x01)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PARC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLA, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y0F)
                                {}
                        })
                        CreateWordField (RTLA, \_SB.PCI0.LPCB.LNKA._CRS._Y0F._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PARC, 0x0F), IRQ0)
                        Return (RTLA)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PARC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PARC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKB)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x02)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PBRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLB, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y10)
                                {}
                        })
                        CreateWordField (RTLB, \_SB.PCI0.LPCB.LNKB._CRS._Y10._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PBRC, 0x0F), IRQ0)
                        Return (RTLB)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PBRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PBRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKC)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x03)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PCRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLC, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y11)
                                {}
                        })
                        CreateWordField (RTLC, \_SB.PCI0.LPCB.LNKC._CRS._Y11._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PCRC, 0x0F), IRQ0)
                        Return (RTLC)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PCRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PCRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKD)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x04)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PDRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLD, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y12)
                                {}
                        })
                        CreateWordField (RTLD, \_SB.PCI0.LPCB.LNKD._CRS._Y12._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PDRC, 0x0F), IRQ0)
                        Return (RTLD)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PDRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PDRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKE)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x05)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PERC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLE, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y13)
                                {}
                        })
                        CreateWordField (RTLE, \_SB.PCI0.LPCB.LNKE._CRS._Y13._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PERC, 0x0F), IRQ0)
                        Return (RTLE)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PERC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PERC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKF)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x06)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PFRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y14)
                                {}
                        })
                        CreateWordField (RTLF, \_SB.PCI0.LPCB.LNKF._CRS._Y14._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PFRC, 0x0F), IRQ0)
                        Return (RTLF)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PFRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PFRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKG)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x07)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PGRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLG, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y15)
                                {}
                        })
                        CreateWordField (RTLG, \_SB.PCI0.LPCB.LNKG._CRS._Y15._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PGRC, 0x0F), IRQ0)
                        Return (RTLG)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PGRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PGRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (LNKH)
                {
                    Name (_HID, EisaId ("PNP0C0F"))
                    Name (_UID, 0x08)
                    Method (_DIS, 0, Serialized)
                    {
                        Store (0x80, PHRC)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {10}
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        Name (RTLH, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, _Y16)
                                {}
                        })
                        CreateWordField (RTLH, \_SB.PCI0.LPCB.LNKH._CRS._Y16._INT, IRQ0)
                        Store (Zero, IRQ0)
                        ShiftLeft (0x01, And (PHRC, 0x0F), IRQ0)
                        Return (RTLH)
                    }

                    Method (_SRS, 1, Serialized)
                    {
                        CreateWordField (Arg0, 0x01, IRQ0)
                        FindSetRightBit (IRQ0, Local0)
                        Decrement (Local0)
                        Store (Local0, PHRC)
                    }

                    Method (_STA, 0, Serialized)
                    {
                        If (And (PHRC, 0x80))
                        {
                            Return (0x09)
                        }
                        Else
                        {
                            Return (0x0B)
                        }
                    }
                }

                Device (EC0)
                {
                    Name (_HID, EisaId ("PNP0C09"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0062,             // Range Minimum
                            0x0062,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0066,             // Range Minimum
                            0x0066,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                    })
                    Name (_GPE, 0x17)
                    Name (ECOK, 0x00)
                    Method (_REG, 2, NotSerialized)
                    {
                        If (LEqual (Arg0, 0x03))
                        {
                            Store (Arg1, ECOK)
                        }
                    }

                    Name (_PRW, Package (0x02)
                    {
                        0x1D, 
                        0x05
                    })
                    OperationRegion (ECR, EmbeddedControl, 0x00, 0xFF)
                    Field (ECR, ByteAcc, Lock, Preserve)
                    {
                                Offset (0x80), 
                        MPBP,   1, 
                        MPBD,   1, 
                        DOKD,   1, 
                        DFBP,   1, 
                                Offset (0x81), 
                        BT1A,   1, 
                        BT2A,   1, 
                        ACAT,   1, 
                                Offset (0x82), 
                        PWRB,   1, 
                        JOGB,   1, 
                        LIDS,   1, 
                                Offset (0x83), 
                        BT1P,   1, 
                        BT2P,   1, 
                                Offset (0x84), 
                        B1ST,   8, 
                        B2ST,   8, 
                                Offset (0x87), 
                                Offset (0x88), 
                        WUP0,   8, 
                        DKID,   8, 
                                Offset (0x90), 
                        MASK,   8, 
                        BT1S,   1, 
                        BT2S,   1, 
                                Offset (0x92), 
                        BT1W,   1, 
                        BT2W,   1, 
                                Offset (0x93), 
                        FAN0,   8, 
                        CB0S,   1, 
                        CB1S,   1, 
                                Offset (0x95), 
                        PHYO,   1, 
                                Offset (0x96), 
                        BRIT,   8, 
                        OSTP,   1, 
                                Offset (0x98), 
                        PMUT,   1, 
                        VAUD,   1, 
                                Offset (0x99), 
                        SMDM,   1, 
                                Offset (0x9A), 
                                Offset (0x9B), 
                        SIRQ,   8, 
                        SLOB,   8, 
                        SHIB,   8, 
                        MPWR,   1, 
                        COFF,   1, 
                        ERST,   1, 
                        EOFF,   1, 
                        IRST,   1, 
                        OPOW,   1, 
                        IUSE,   1, 
                        LIDE,   1, 
                                Offset (0xA0), 
                        B1RC,   16, 
                        B1AB,   16, 
                        B1AC,   16, 
                        B1VO,   16, 
                        B2RC,   16, 
                        B2AB,   16, 
                        B2AC,   16, 
                        B2VO,   16, 
                        B1DC,   16, 
                        B1LF,   16, 
                        B1DV,   16, 
                        B1DL,   16, 
                        B2DC,   16, 
                        B2LF,   16, 
                        B2DV,   16, 
                        B2DL,   16, 
                        A1TP,   16, 
                        A1AT,   16, 
                        A1PT,   16, 
                        A1CT,   16, 
                        A2TP,   16, 
                        A2AT,   16, 
                        A2PT,   16, 
                        A2CT,   16, 
                                Offset (0xF4), 
                            ,   4, 
                        CPRS,   1
                    }

                    Name (UDRQ, 0x00)
                    Name (DCKB, 0x00)
                    Name (WUP1, 0x00)
                    Name (BT1B, 0x00)
                    Name (BT2B, 0x00)
                    Name (ACAB, 0x00)
                    Method (_Q50, 0, NotSerialized)
                    {
                        Notify (ACAD, 0x80)
                        \_SB.NCPU ()
                    }

                    Method (_Q51, 0, NotSerialized)
                    {
                        If (BT1A)
                        {
                            Notify (BAT1, 0x00)
                        }
                        Else
                        {
                            Notify (BAT1, 0x01)
                        }

                        Notify (BAT1, 0x80)
                    }

                    Method (_Q53, 0, NotSerialized)
                    {
                    }

                    Method (_Q58, 0, NotSerialized)
                    {
                        Notify (\_TZ.ATF0, 0x81)
                    }

                    Method (_Q5F, 0, NotSerialized)
                    {
                        Notify (\_TZ.ATF0, 0x80)
                    }

                    Method (_Q60, 0, NotSerialized)
                    {
                        Notify (\_SB.PWRB, 0x80)
                    }

                    Method (_Q66, 0, NotSerialized)
                    {
                        Notify (\_SB.LID0, 0x80)
                    }

                    Method (_Q69, 0, NotSerialized)
                    {
                        If (IGDS)
                        {
                            Notify (\_SB.PCI0.GFX0, 0x81)
                        }
                        Else
                        {
                            Notify (\_SB.PCI0.PEGP.NGFX, 0x81)
                        }
                    }

                    Method (_Q5A, 0, NotSerialized)
                    {
                        Notify (\_SB.DOCK, 0x00)
                    }

                    Method (_Q5B, 0, NotSerialized)
                    {
                        If (LNot (UDRQ))
                        {
                            Store (0x00, IUSE)
                            Notify (\_SB.DOCK, 0x00)
                            Notify (\_SB.PCI0.RP04, 0x00)
                            Notify (\_SB.PCI0, 0x01)
                        }
                        Else
                        {
                            Store (0x00, UDRQ)
                            Signal (\_SB.DOCK.UDCK)
                        }
                    }

                    Method (_Q5C, 0, NotSerialized)
                    {
                        If (DOKD)
                        {
                            Notify (\_SB.DOCK, 0x03)
                        }
                    }

                    Device (BAT1)
                    {
                        Name (_HID, EisaId ("PNP0C0A"))
                        Name (_UID, 0x01)
                        Name (_PCL, Package (0x01)
                        {
                            \_SB
                        })
                        Name (BATI, Package (0x0D)
                        {
                            0x00, 
                            0x9650, 
                            0x9650, 
                            0x00, 
                            0x39D0, 
                            0x00, 
                            0x78, 
                            0x00, 
                            0x0A, 
                            "", 
                            "", 
                            "LION", 
                            "Sony Corp."
                        })
                        Name (BATS, Package (0x04)
                        {
                            0x02, 
                            0xFFFFFFFF, 
                            0x0D7A, 
                            0x3840
                        })
                        Method (_STA, 0, NotSerialized)
                        {
                            If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                            {
                                And (PHSD (0xD4, 0x80), 0x0100, Local1)
                            }
                            Else
                            {
                                Store (BT1A, Local1)
                            }

                            If (Local1)
                            {
                                Store (0x1F, Local0)
                            }
                            Else
                            {
                                Store (0x0F, Local0)
                            }

                            Return (Local0)
                        }

                        Method (_BIF, 0, NotSerialized)
                        {
                            If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                            {
                                Store (PHSD (0xD4, 0xB0), Local0)
                                Store (PHSD (0xD4, 0xB2), Local1)
                                Store (PHSD (0xD4, 0xB6), Local2)
                            }
                            Else
                            {
                                Store (B1DC, Local0)
                                Store (B1LF, Local1)
                                Store (B1DV, Local2)
                            }

                            Multiply (Local0, 0x0A, Index (BATI, 0x01))
                            Multiply (Local1, 0x0A, Index (BATI, 0x02))
                            Store (Local2, Index (BATI, 0x04))
                            Return (BATI)
                        }

                        Method (_BST, 0, NotSerialized)
                        {
                            If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                            {
                                Store (And (PHSD (0xD4, 0x84), 0xFF, Local0), Index (BATS, 0x00
                                    ))
                                Store (PHSD (0xD4, 0xA6), Local0)
                                Store (PHSD (0xD4, 0xA4), Local1)
                                Store (PHSD (0xD4, 0xA2), Local2)
                            }
                            Else
                            {
                                Store (B1ST, Index (BATS, 0x00))
                                Store (B1VO, Local0)
                                Store (B1AC, Local1)
                                Store (B1AB, Local2)
                            }

                            If (LEqual (Local1, 0xFFFF))
                            {
                                Store (0xFFFFFFFF, Local1)
                            }
                            Else
                            {
                                If (LGreaterEqual (Local1, 0x8000))
                                {
                                    XOr (Local1, 0xFFFF, Local1)
                                    Increment (Local1)
                                }

                                Multiply (Local0, Local1, Local1)
                                Divide (Local1, 0x03E8, , Local1)
                            }

                            Store (Local1, Index (BATS, 0x01))
                            Multiply (Local2, 0x0A, Index (BATS, 0x02))
                            Store (Local0, Index (BATS, 0x03))
                            Return (BATS)
                        }
                    }

                    Scope (\)
                    {
                        Name (PWRS, Ones)
                    }

                    Device (ACAD)
                    {
                        Name (_HID, "ACPI0003")
                        Name (_PCL, Package (0x01)
                        {
                            \_SB
                        })
                        Method (_PSR, 0, NotSerialized)
                        {
                            If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                            {
                                And (PHSD (0xD4, 0x80), 0x0400, Local1)
                            }
                            Else
                            {
                                Store (ACAT, Local1)
                            }

                            Store (Local1, PWRS)
                            If (Local1)
                            {
                                Return (One)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

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

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x01,               // Alignment
                            0x11,               // Length
                            )
                        IO (Decode16,
                            0x0093,             // Range Minimum
                            0x0093,             // Range Maximum
                            0x01,               // Alignment
                            0x0D,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8_16, )
                            {4}
                    })
                }

                Device (FWHD)
                {
                    Name (_HID, EisaId ("INT0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFF000000,         // Address Base
                            0x01000000,         // Address Length
                            )
                    })
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103"))
                    Name (_CID, 0x010CD041)
                    Name (BUF0, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            _Y17)
                    })
                    Method (_STA, 0, NotSerialized)
                    {
                        If (LGreaterEqual (OSYS, 0x07D1))
                        {
                            If (HPAE)
                            {
                                Return (0x0F)
                            }
                        }
                        Else
                        {
                            If (HPAE)
                            {
                                Return (0x0B)
                            }
                        }

                        Return (0x00)
                    }

                    Method (_CRS, 0, Serialized)
                    {
                        If (HPAE)
                        {
                            CreateDWordField (BUF0, \_SB.PCI0.LPCB.HPET._Y17._BAS, HPT0)
                            If (LEqual (HPAS, 0x01))
                            {
                                Store (0xFED01000, HPT0)
                            }

                            If (LEqual (HPAS, 0x02))
                            {
                                Store (0xFED02000, HPT0)
                            }

                            If (LEqual (HPAS, 0x03))
                            {
                                Store (0xFED03000, HPT0)
                            }
                        }

                        Return (BUF0)
                    }
                }

                Device (IPIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0024,             // Range Minimum
                            0x0024,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0028,             // Range Minimum
                            0x0028,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x002C,             // Range Minimum
                            0x002C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0030,             // Range Minimum
                            0x0030,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0034,             // Range Minimum
                            0x0034,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0038,             // Range Minimum
                            0x0038,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x003C,             // Range Minimum
                            0x003C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A4,             // Range Minimum
                            0x00A4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A8,             // Range Minimum
                            0x00A8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00AC,             // Range Minimum
                            0x00AC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B0,             // Range Minimum
                            0x00B0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B4,             // Range Minimum
                            0x00B4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B8,             // Range Minimum
                            0x00B8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00BC,             // Range Minimum
                            0x00BC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (MATH)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x00F0,             // Range Minimum
                            0x00F0,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (LDRC)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Name (_UID, 0x02)
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x004E,             // Range Minimum
                            0x004E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0680,             // Range Minimum
                            0x0680,             // Range Maximum
                            0x01,               // Alignment
                            0x70,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x1000,             // Range Minimum
                            0x1000,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x1180,             // Range Minimum
                            0x1180,             // Range Maximum
                            0x01,               // Alignment
                            0x40,               // Length
                            )
                        IO (Decode16,
                            0x1640,             // Range Minimum
                            0x1640,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0xFE00,             // Range Minimum
                            0xFE00,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x004E,             // Range Minimum
                            0x004E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0680,             // Range Minimum
                            0x0680,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x1000,             // Range Minimum
                            0x1000,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x1180,             // Range Minimum
                            0x1180,             // Range Maximum
                            0x01,               // Alignment
                            0x40,               // Length
                            )
                        IO (Decode16,
                            0x1640,             // Range Minimum
                            0x1640,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0xFE00,             // Range Minimum
                            0xFE00,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                    Method (_CRS, 0, Serialized)
                    {
                        If (CIRP)
                        {
                            Return (BUF0)
                        }

                        Return (BUF1)
                    }
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0070,             // Range Minimum
                            0x0070,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

                Device (TIMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x10,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (SPIC)
                {
                    Name (_HID, EisaId ("SNY6001"))
                    Name (RSRC, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            _Y18)
                        IRQNoFlags (_Y19)
                            {}
                    })
                    Name (SSRC, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IRQNoFlags ()
                            {}
                    })
                    Name (SIRT, Package (0x04)
                    {
                        0x06, 
                        0x09, 
                        0x0A, 
                        0x0B
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateByteField (RSRC, \_SB.PCI0.LPCB.SPIC._Y18._MIN, IOM1)
                        CreateByteField (RSRC, 0x03, IOM2)
                        CreateWordField (RSRC, \_SB.PCI0.LPCB.SPIC._Y18._MIN, IO1I)
                        CreateWordField (RSRC, \_SB.PCI0.LPCB.SPIC._Y18._MAX, IO1A)
                        CreateWordField (RSRC, \_SB.PCI0.LPCB.SPIC._Y19._INT, IRQV)
                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            Store (PHSB (0xD4, 0x9C), IOM1)
                            Store (PHSB (0xD4, 0x9D), IOM2)
                        }
                        Else
                        {
                            Store (\_SB.PCI0.LPCB.EC0.SLOB, IOM1)
                            Store (\_SB.PCI0.LPCB.EC0.SHIB, IOM2)
                        }

                        Store (IO1I, IO1A)
                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            ShiftRight (PHSB (0xD4, 0x9B), 0x04, Local0)
                        }
                        Else
                        {
                            ShiftRight (\_SB.PCI0.LPCB.EC0.SIRQ, 0x04, Local0)
                        }

                        FindSetRightBit (Local0, Local1)
                        If (Local1)
                        {
                            Decrement (Local1)
                            Store (DerefOf (Index (SIRT, Local1)), Local0)
                            ShiftLeft (0x01, Local0, IRQV)
                        }

                        Return (RSRC)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOA1)
                        CreateByteField (Arg0, 0x03, IOA2)
                        CreateWordField (Arg0, 0x02, IOA0)
                        CreateWordField (Arg0, 0x09, IRQV)
                        FindSetRightBit (IRQV, Local0)
                        If (Local0)
                        {
                            Decrement (Local0)
                            Store (Match (SIRT, MEQ, Local0, MTR, 0x00, 0x00), Local1)
                            ShiftLeft (0x10, Local1, Local2)
                        }
                        Else
                        {
                            Store (0x00, Local2)
                        }

                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            PHSW (0xD5, 0x9B, Local2)
                        }
                        Else
                        {
                            Store (Local2, \_SB.PCI0.LPCB.EC0.SIRQ)
                        }

                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            PHSW (0xD5, 0x9D, IOA2)
                            PHSW (0xD5, 0x9C, IOA1)
                        }
                        Else
                        {
                            Store (IOA2, \_SB.PCI0.LPCB.EC0.SHIB)
                            Store (IOA1, \_SB.PCI0.LPCB.EC0.SLOB)
                        }

                        Sleep (0x01)
                        Store (Or (And (IOA0, 0xFFF0), 0x001C0001), \_SB.PCI0.LPCB.GID3)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0xC000,             // Range Minimum
                                0xC000,             // Range Maximum
                                0x01,               // Alignment
                                0x20,               // Length
                                )
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0xC800,             // Range Minimum
                                0xC800,             // Range Maximum
                                0x01,               // Alignment
                                0x20,               // Length
                                )
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0xD000,             // Range Minimum
                                0xD000,             // Range Maximum
                                0x01,               // Alignment
                                0x20,               // Length
                                )
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0xD800,             // Range Minimum
                                0xD800,             // Range Maximum
                                0x01,               // Alignment
                                0x20,               // Length
                                )
                        }
                        EndDependentFn ()
                        IRQNoFlags ()
                            {6,9,10,11}
                    })
                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (_CRS (), SSRC)
                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            PHSW (0xD5, 0x9B, 0x00)
                            PHSW (0xD5, 0x9D, 0x00)
                            PHSW (0xD5, 0x9C, 0x00)
                        }
                        Else
                        {
                            Store (0x00, \_SB.PCI0.LPCB.EC0.SIRQ)
                            Store (0x00, \_SB.PCI0.LPCB.EC0.SHIB)
                            Store (0x00, \_SB.PCI0.LPCB.EC0.SLOB)
                        }

                        Sleep (0x01)
                        Store (0x00, \_SB.PCI0.LPCB.GID3)
                    }

                    Method (_STA, 0, NotSerialized)
                    {
                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            ShiftRight (PHSB (0xD4, 0x9B), 0x04, Local0)
                        }
                        Else
                        {
                            ShiftRight (\_SB.PCI0.LPCB.EC0.SIRQ, 0x04, Local0)
                        }

                        FindSetRightBit (Local0, Local1)
                        If (Local1)
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (0x0D)
                        }
                    }
                }

                Device (SNC)
                {
                    Name (_HID, EisaId ("SNY5001"))
                    Method (GBRT, 0, NotSerialized)
                    {
                        If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                        {
                            Store (PHSD (0xD4, 0x96), Local0)
                        }
                        Else
                        {
                            Store (\_SB.PCI0.LPCB.EC0.BRIT, Local0)
                        }

                        Return (PHSB (0xCF, Local0))
                    }

                    Method (SBRT, 1, NotSerialized)
                    {
                        PHSB (0xC3, Arg0)
                        Return (Zero)
                    }

                    Method (GPBR, 0, NotSerialized)
                    {
                        Return (PHSB (0xC1, 0x00))
                    }

                    Method (SPBR, 1, NotSerialized)
                    {
                        PHSB (0xC2, Arg0)
                        Return (Zero)
                    }

                    Method (PWAK, 0, NotSerialized)
                    {
                        Acquire (PLOK, 0xFFFF)
                        Sleep (0x64)
                        Notify (\_PR.CPU0, 0x80)
                        If (MPEN)
                        {
                            Notify (\_PR.CPU1, 0x80)
                        }

                        Sleep (0x64)
                        Notify (\_PR.CPU0, 0x81)
                        If (MPEN)
                        {
                            Notify (\_PR.CPU1, 0x81)
                        }

                        Release (PLOK)
                        Return (Zero)
                    }

                    Method (PWRN, 0, NotSerialized)
                    {
                        Notify (\_SB.PWRB, 0x80)
                    }

                    Method (CSXB, 1, NotSerialized)
                    {
                        Acquire (MPHS, 0xFFFF)
                        Store (Arg0, SXBF)
                        PHS0 (0xCC)
                        Store (SXBF, Local0)
                        Release (MPHS)
                        Return (Local0)
                    }

                    Method (GWDP, 0, NotSerialized)
                    {
                        Return (And (PHSB (0xD4, 0xF4), 0x0F))
                    }

                    Method (CDPW, 1, NotSerialized)
                    {
                        Store (\_SB.PCI0.LPCB.EC0.OPOW, Local1)
                        If (LEqual (Arg0, One))
                        {
                            If (LNotEqual (Local1, 0x00))
                            {
                                Store (0x01, \_SB.PCI0.LPCB.EC0.IRST)
                                Store (\_SB.PCI0.PATA.ICR4, Local1)
                                Or (And (Local1, 0x0C), 0x01, Local1)
                                Store (Local1, \_SB.PCI0.PATA.ICR4)
                                Store (0x00, \_SB.PCI0.LPCB.EC0.OPOW)
                                Sleep (0x64)
                                Store (\_SB.PCI0.PATA.ICR4, Local1)
                                Or (And (Local1, 0x0C), 0x00, Local1)
                                Store (Local1, \_SB.PCI0.PATA.ICR4)
                                Store (0x00, \_SB.PCI0.LPCB.EC0.IRST)
                            }
                        }
                        Else
                        {
                            If (LEqual (Arg0, Zero))
                            {
                                If (LEqual (Local1, 0x00))
                                {
                                    Store (0x01, \_SB.PCI0.LPCB.EC0.IRST)
                                    Store (\_SB.PCI0.PATA.ICR4, Local1)
                                    Or (And (Local1, 0x0C), 0x02, Local1)
                                    Store (Local1, \_SB.PCI0.PATA.ICR4)
                                    Store (\_SB.PCI0.PATA.PRIT, Local1)
                                    Store (And (Local1, 0xFFDD), \_SB.PCI0.PATA.PRIT)
                                    Store (\_SB.PCI0.PATA.ICR4, Local1)
                                    Or (And (Local1, 0x0C), 0x01, Local1)
                                    Store (Local1, \_SB.PCI0.PATA.ICR4)
                                    Store (0x01, \_SB.PCI0.LPCB.EC0.OPOW)
                                }
                            }
                        }

                        Return (Zero)
                    }

                    Method (GCDP, 0, NotSerialized)
                    {
                        Store (\_SB.PCI0.LPCB.EC0.OPOW, Local1)
                        Return (And (LNot (Local1), One))
                    }

                    Name (LRST, 0x00)
                    Method (SLRS, 1, NotSerialized)
                    {
                        And (Arg0, 0x07, Arg0)
                        Store (Arg0, LRST)
                        Return (Zero)
                    }

                    Mutex (MIDB, 0x00)
                    Method (RBMF, 1, Serialized)
                    {
                        Acquire (MIDB, 0xFFFF)
                        And (Arg0, 0x00010000, Local0)
                        PHSD (0xDC, Local0)
                        Sleep (0x07D0)
                        Store (0x03000000, Local0)
                        Store (PHSD (0xDC, Local0), Local0)
                        Release (MIDB)
                        Return (Local0)
                    }

                    Method (RSBI, 1, Serialized)
                    {
                        Acquire (MIDB, 0xFFFF)
                        Or (And (Arg0, 0x0001FFFF), 0x01000000, Local0)
                        Store (PHSD (0xDC, Local0), Local0)
                        Sleep (0x07D0)
                        Or (And (Arg0, 0x0001FFFF), 0x03000000, Local0)
                        Store (PHSD (0xDC, Local0), Local0)
                        Release (MIDB)
                        Return (Local0)
                    }

                    Method (CBMF, 1, Serialized)
                    {
                        Acquire (MIDB, 0xFFFF)
                        Or (And (Arg0, 0x0001FFFF), 0x02000000, Local0)
                        Store (PHSD (0xDC, Local0), Local0)
                        Release (MIDB)
                        Return (Zero)
                    }

                    Method (AZPW, 1, NotSerialized)
                    {
                        \_SB.PCI0.HDEF.AZPW (Arg0)
                    }

                    Method (GAZP, 0, NotSerialized)
                    {
                        If (\_SB.PCI0.LPCB.EC0.ECOK)
                        {
                            If (\_SB.PCI0.LPCB.EC0.VAUD)
                            {
                                Return (0x00)
                            }
                            Else
                            {
                                Return (0x01)
                            }
                        }

                        Return (0x01)
                    }

                    Method (LNPW, 1, NotSerialized)
                    {
                        If (\_SB.PCI0.LPCB.EC0.ECOK)
                        {
                            If (Arg0)
                            {
                                If (\_SB.PCI0.LPCB.EC0.EOFF)
                                {
                                    Store (0x00, \_SB.PCI0.LPCB.EC0.EOFF)
                                    Sleep (0x6E)
                                    Store (0x00, \_SB.PCI0.LPCB.EC0.ERST)
                                }
                            }
                            Else
                            {
                                Store (0x01, \_SB.PCI0.LPCB.EC0.ERST)
                                Store (0x01, \_SB.PCI0.LPCB.EC0.EOFF)
                            }
                        }
                    }

                    Method (GLNP, 0, NotSerialized)
                    {
                        If (\_SB.PCI0.LPCB.EC0.ECOK)
                        {
                            If (\_SB.PCI0.LPCB.EC0.EOFF)
                            {
                                Return (0x00)
                            }
                            Else
                            {
                                Return (0x01)
                            }
                        }

                        Return (0x01)
                    }

                    Method (SCAM, 1, NotSerialized)
                    {
                    }

                    Method (GCAM, 0, NotSerialized)
                    {
                        Return (Zero)
                    }
                }

                Device (TPM)
                {
                    Name (_HID, EisaId ("IFX0102"))
                    Name (_CID, 0x310CD041)
                    Name (_UID, 0x01)
                    Name (_STR, Unicode ("Infineon Trusted Platform Module"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (TPRS)
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0xFED40000,         // Address Base
                            0x00005000,         // Address Length
                            )
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x1670,             // Range Minimum
                            0x1670,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // 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, Serialized)
                    {
                        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)
                                {
                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x00))
                                    {
                                        Store (0x00, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x01))
                                    {
                                        Store (0x01, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x02))
                                    {
                                        Store (0x02, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x03))
                                    {
                                        Store (0x03, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x04))
                                    {
                                        Store (0x04, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x05))
                                    {
                                        Store (0x05, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x06))
                                    {
                                        Store (0x06, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x07))
                                    {
                                        Store (0x07, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x08))
                                    {
                                        Store (0x08, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x09))
                                    {
                                        Store (0x09, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x0A))
                                    {
                                        Store (0x0A, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x0B))
                                    {
                                        Store (0x0B, PPRQ)
                                        Return (0x00)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x0C))
                                    {
                                        Store (0x00, PPRQ)
                                        Return (0x01)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x0D))
                                    {
                                        Store (0x00, PPRQ)
                                        Return (0x01)
                                    }

                                    If (LEqual (DerefOf (Index (Arg3, 0x00)), 0x0E))
                                    {
                                        Store (0x0E, PPRQ)
                                        Return (0x00)
                                    }

                                    Return (0x01)
                                }

                                Return (0x01)
                            }

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

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

                            If (LEqual (Arg2, 0x05))
                            {
                                Name (TMP2, Package (0x03)
                                {
                                    0x00, 
                                    0xFFFFFFFF, 
                                    0xFFFFFFFF
                                })
                                Store (\_SB.PPLO, Index (TMP2, 0x01))
                                If (LOr (LOr (LGreater (\_SB.PPLO, 0x0E), LEqual (\_SB.PPLO, 0x0C)), LEqual (
                                    \_SB.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 (\_SB.PPRP, Index (TMP2, 0x02))
                                Return (TMP2)
                            }

                            If (LEqual (Arg2, 0x06))
                            {
                                CreateByteField (Arg3, 0x04, LAN0)
                                CreateByteField (Arg3, 0x05, LAN1)
                                Or (ShiftLeft (LAN1, 0x08), LAN0, P80H)
                                If (LOr (LEqual (LAN0, 0x65), LEqual (LAN0, 0x45)))
                                {
                                    If (LOr (LEqual (LAN1, 0x6E), LEqual (LAN1, 0x4E)))
                                    {
                                        Return (0x00)
                                    }
                                }

                                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 (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {1}
                    })
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("SNY9001"))
                    Name (_CID, 0x130FD041)
                    Name (_CRS, ResourceTemplate ()
                    {
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {12}
                    })
                }
            }

            Device (PATA)
            {
                Name (_ADR, 0x001F0001)
                OperationRegion (PACS, PCI_Config, 0x40, 0xC0)
                Field (PACS, DWordAcc, NoLock, Preserve)
                {
                    PRIT,   16, 
                            Offset (0x04), 
                    PSIT,   4, 
                            Offset (0x08), 
                    SYNC,   4, 
                            Offset (0x0A), 
                    SDT0,   2, 
                        ,   2, 
                    SDT1,   2, 
                            Offset (0x14), 
                    ICR0,   4, 
                    ICR1,   4, 
                    ICR2,   4, 
                    ICR3,   4, 
                    ICR4,   4, 
                    ICR5,   4
                }

                Device (PRID)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Name (PBUF, Buffer (0x14)
                        {
                            /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                            /* 0010 */    0x00, 0x00, 0x00, 0x00
                        })
                        CreateDWordField (PBUF, 0x00, PIO0)
                        CreateDWordField (PBUF, 0x04, DMA0)
                        CreateDWordField (PBUF, 0x08, PIO1)
                        CreateDWordField (PBUF, 0x0C, DMA1)
                        CreateDWordField (PBUF, 0x10, FLAG)
                        Store (GETP (PRIT), PIO0)
                        Store (GDMA (And (SYNC, 0x01), And (ICR3, 0x01), 
                            And (ICR0, 0x01), SDT0, And (ICR1, 0x01)), DMA0)
                        If (LEqual (DMA0, 0xFFFFFFFF))
                        {
                            Store (PIO0, DMA0)
                        }

                        If (And (PRIT, 0x4000))
                        {
                            If (LEqual (And (PRIT, 0x90), 0x80))
                            {
                                Store (0x0384, PIO1)
                            }
                            Else
                            {
                                Store (GETT (PSIT), PIO1)
                            }
                        }
                        Else
                        {
                            Store (0xFFFFFFFF, PIO1)
                        }

                        Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), 
                            And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
                        If (LEqual (DMA1, 0xFFFFFFFF))
                        {
                            Store (PIO1, DMA1)
                        }

                        Store (GETF (And (SYNC, 0x01), And (SYNC, 0x02), 
                            PRIT), FLAG)
                        If (And (LEqual (PIO0, 0xFFFFFFFF), LEqual (DMA0, 0xFFFFFFFF)))
                        {
                            Store (0x78, PIO0)
                            Store (0x14, DMA0)
                            Store (0x03, FLAG)
                        }

                        Return (PBUF)
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        CreateDWordField (Arg0, 0x00, PIO0)
                        CreateDWordField (Arg0, 0x04, DMA0)
                        CreateDWordField (Arg0, 0x08, PIO1)
                        CreateDWordField (Arg0, 0x0C, DMA1)
                        CreateDWordField (Arg0, 0x10, FLAG)
                        If (LEqual (SizeOf (Arg1), 0x0200))
                        {
                            And (PRIT, 0xC0F0, PRIT)
                            And (SYNC, 0x02, SYNC)
                            Store (0x00, SDT0)
                            And (ICR0, 0x02, ICR0)
                            And (ICR1, 0x02, ICR1)
                            And (ICR3, 0x02, ICR3)
                            And (ICR5, 0x02, ICR5)
                            CreateWordField (Arg1, 0x62, W490)
                            CreateWordField (Arg1, 0x6A, W530)
                            CreateWordField (Arg1, 0x7E, W630)
                            CreateWordField (Arg1, 0x80, W640)
                            CreateWordField (Arg1, 0xB0, W880)
                            CreateWordField (Arg1, 0xBA, W930)
                            Or (PRIT, 0x8004, PRIT)
                            If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                            {
                                Or (PRIT, 0x02, PRIT)
                            }

                            Or (PRIT, SETP (PIO0, W530, W640), PRIT)
                            If (And (FLAG, 0x01))
                            {
                                Or (SYNC, 0x01, SYNC)
                                Store (SDMA (DMA0), SDT0)
                                If (LLess (DMA0, 0x1E))
                                {
                                    Or (ICR3, 0x01, ICR3)
                                }

                                If (LLess (DMA0, 0x3C))
                                {
                                    Or (ICR0, 0x01, ICR0)
                                }

                                If (And (W930, 0x2000))
                                {
                                    Or (ICR1, 0x01, ICR1)
                                }
                            }
                        }

                        If (LEqual (SizeOf (Arg2), 0x0200))
                        {
                            And (PRIT, 0xBF0F, PRIT)
                            Store (0x00, PSIT)
                            And (SYNC, 0x01, SYNC)
                            Store (0x00, SDT1)
                            And (ICR0, 0x01, ICR0)
                            And (ICR1, 0x01, ICR1)
                            And (ICR3, 0x01, ICR3)
                            And (ICR5, 0x01, ICR5)
                            CreateWordField (Arg2, 0x62, W491)
                            CreateWordField (Arg2, 0x6A, W531)
                            CreateWordField (Arg2, 0x7E, W631)
                            CreateWordField (Arg2, 0x80, W641)
                            CreateWordField (Arg2, 0xB0, W881)
                            CreateWordField (Arg2, 0xBA, W931)
                            Or (PRIT, 0x8040, PRIT)
                            If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                            {
                                Or (PRIT, 0x20, PRIT)
                            }

                            If (And (FLAG, 0x10))
                            {
                                Or (PRIT, 0x4000, PRIT)
                                If (LGreater (PIO1, 0xF0))
                                {
                                    Or (PRIT, 0x80, PRIT)
                                }
                                Else
                                {
                                    Or (PRIT, 0x10, PRIT)
                                    Store (SETT (PIO1, W531, W641), PSIT)
                                }
                            }

                            If (And (FLAG, 0x04))
                            {
                                Or (SYNC, 0x02, SYNC)
                                Store (SDMA (DMA1), SDT1)
                                If (LLess (DMA1, 0x1E))
                                {
                                    Or (ICR3, 0x02, ICR3)
                                }

                                If (LLess (DMA1, 0x3C))
                                {
                                    Or (ICR0, 0x02, ICR0)
                                }

                                If (And (W931, 0x2000))
                                {
                                    Or (ICR1, 0x02, ICR1)
                                }
                            }
                        }
                    }

                    Device (P_D0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB0, Buffer (0x0E)
                            {
                                /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                                /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                            })
                            CreateByteField (PIB0, 0x01, PMD0)
                            CreateByteField (PIB0, 0x08, DMD0)
                            If (And (PRIT, 0x02))
                            {
                                If (LEqual (And (PRIT, 0x09), 0x08))
                                {
                                    Store (0x08, PMD0)
                                }
                                Else
                                {
                                    Store (0x0A, PMD0)
                                    ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
                                    ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
                                    Add (Local0, Local1, Local2)
                                    If (LEqual (0x03, Local2))
                                    {
                                        Store (0x0B, PMD0)
                                    }

                                    If (LEqual (0x05, Local2))
                                    {
                                        Store (0x0C, PMD0)
                                    }
                                }
                            }
                            Else
                            {
                                Store (0x01, PMD0)
                            }

                            If (And (SYNC, 0x01))
                            {
                                Store (Or (SDT0, 0x40), DMD0)
                                If (And (ICR1, 0x01))
                                {
                                    If (And (ICR0, 0x01))
                                    {
                                        Add (DMD0, 0x02, DMD0)
                                    }

                                    If (And (ICR3, 0x01))
                                    {
                                        Store (0x45, DMD0)
                                    }
                                }
                            }
                            Else
                            {
                                Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                            }

                            Return (PIB0)
                        }
                    }

                    Device (P_D1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Name (PIB1, Buffer (0x0E)
                            {
                                /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                                /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
                            })
                            CreateByteField (PIB1, 0x01, PMD1)
                            CreateByteField (PIB1, 0x08, DMD1)
                            If (And (PRIT, 0x20))
                            {
                                If (LEqual (And (PRIT, 0x90), 0x80))
                                {
                                    Store (0x08, PMD1)
                                }
                                Else
                                {
                                    Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C), 
                                        0x02), Local0)
                                    If (LEqual (0x05, Local0))
                                    {
                                        Store (0x0C, PMD1)
                                    }
                                    Else
                                    {
                                        If (LEqual (0x03, Local0))
                                        {
                                            Store (0x0B, PMD1)
                                        }
                                        Else
                                        {
                                            Store (0x0A, PMD1)
                                        }
                                    }
                                }
                            }
                            Else
                            {
                                Store (0x01, PMD1)
                            }

                            If (And (SYNC, 0x02))
                            {
                                Store (Or (SDT1, 0x40), DMD1)
                                If (And (ICR1, 0x02))
                                {
                                    If (And (ICR0, 0x02))
                                    {
                                        Add (DMD1, 0x02, DMD1)
                                    }

                                    If (And (ICR3, 0x02))
                                    {
                                        Store (0x45, DMD1)
                                    }
                                }
                            }
                            Else
                            {
                                Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                            }

                            Return (PIB1)
                        }
                    }
                }

                Name (FWSO, "FWSO")
                Name (_PSC, 0x00)
                Method (_PS0, 0, NotSerialized)
                {
                    Store (_PSC, Local0)
                    Store (0x00, _PSC)
                    If (LEqual (Local0, 0x03))
                    {
                        Store (0x01, INFB)
                        While (INFB)
                        {
                            Store (0x20, BCMD)
                            Store (Zero, SMIC)
                            If (LAnd (LEqual (INFB, 0x01), LGreaterEqual (\_SB.OSTB, 0x04)))
                            {
                                Sleep (0x01F4)
                            }
                        }
                    }
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x03, _PSC)
                }

                Scope (\_SB)
                {
                    Mutex (MHDS, 0x00)
                    Method (PHDS, 2, NotSerialized)
                    {
                        Acquire (\_SB.MHDS, 0xFFFF)
                        While (\PHSD (Add (0xB0, Arg0), 0x01))
                        {
                            Sleep (Arg1)
                        }

                        Release (\_SB.MHDS)
                    }
                }

                Scope (PRID.P_D0)
                {
                    Name (_PSC, 0x00)
                    Method (_PS0, 0, NotSerialized)
                    {
                        Store (_PSC, Local0)
                        Store (0x00, _PSC)
                        If (LEqual (Local0, 0x03))
                        {
                            \_SB.PHDS (0x00, 0x0A)
                            \_SB.PHDS (0x01, 0x0A)
                        }
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                    }
                }

                Scope (PRID.P_D1)
                {
                    Name (_PSC, 0x00)
                    Method (_PS0, 0, NotSerialized)
                    {
                        Store (_PSC, Local0)
                        Store (0x00, _PSC)
                        If (LEqual (Local0, 0x03))
                        {
                            \_SB.PHDS (0x00, 0x0A)
                            \_SB.PHDS (0x01, 0x0A)
                        }
                    }

                    Method (_PS3, 0, NotSerialized)
                    {
                        Store (0x03, _PSC)
                    }
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)
                OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
                Field (SACS, DWordAcc, NoLock, Preserve)
                {
                    PRIT,   16, 
                    SECT,   16, 
                    PSIT,   4, 
                    SSIT,   4, 
                            Offset (0x08), 
                    SYNC,   4, 
                            Offset (0x0A), 
                    SDT0,   2, 
                        ,   2, 
                    SDT1,   2, 
                            Offset (0x0B), 
                    SDT2,   2, 
                        ,   2, 
                    SDT3,   2, 
                            Offset (0x14), 
                    ICR0,   4, 
                    ICR1,   4, 
                    ICR2,   4, 
                    ICR3,   4, 
                    ICR4,   4, 
                    ICR5,   4, 
                            Offset (0x50), 
                    MAPV,   2
                }
            }

            Device (SBUS)
            {
                Name (_ADR, 0x001F0003)
                OperationRegion (SMBP, PCI_Config, 0x40, 0xC0)
                Field (SMBP, DWordAcc, NoLock, Preserve)
                {
                        ,   2, 
                    I2CE,   1
                }

                OperationRegion (SMBI, SystemIO, 0x18E0, 0x10)
                Field (SMBI, ByteAcc, NoLock, Preserve)
                {
                    HSTS,   8, 
                            Offset (0x02), 
                    HCON,   8, 
                    HCOM,   8, 
                    TXSA,   8, 
                    DAT0,   8, 
                    DAT1,   8, 
                    HBDR,   8, 
                    PECR,   8, 
                    RXSA,   8, 
                    SDAT,   16
                }

                Method (SSXB, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0x00)
                    }

                    Store (0x00, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (0x01)
                    }

                    Return (0x00)
                }

                Method (SRXB, 1, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (0x00, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, 0x01), TXSA)
                    Store (0x44, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SWRB, 3, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0x00)
                    }

                    Store (0x00, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (Arg2, DAT0)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (0x01)
                    }

                    Return (0x00)
                }

                Method (SRDB, 2, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0xFFFF)
                    }

                    Store (0x00, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, 0x01), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x48, HCON)
                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (DAT0)
                    }

                    Return (0xFFFF)
                }

                Method (SBLW, 4, Serialized)
                {
                    If (STRT ())
                    {
                        Return (0x00)
                    }

                    Store (Arg3, I2CE)
                    Store (0xBF, HSTS)
                    Store (Arg0, TXSA)
                    Store (Arg1, HCOM)
                    Store (SizeOf (Arg2), DAT0)
                    Store (0x00, Local1)
                    Store (DerefOf (Index (Arg2, 0x00)), HBDR)
                    Store (0x54, HCON)
                    While (LGreater (SizeOf (Arg2), Local1))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (0x00)
                        }

                        Store (0x80, HSTS)
                        Increment (Local1)
                        If (LGreater (SizeOf (Arg2), Local1))
                        {
                            Store (DerefOf (Index (Arg2, Local1)), HBDR)
                        }
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (0x01)
                    }

                    Return (0x00)
                }

                Method (SBLR, 3, Serialized)
                {
                    Name (TBUF, Buffer (0x0100) {})
                    If (STRT ())
                    {
                        Return (0x00)
                    }

                    Store (Arg2, I2CE)
                    Store (0xBF, HSTS)
                    Store (Or (Arg0, 0x01), TXSA)
                    Store (Arg1, HCOM)
                    Store (0x54, HCON)
                    Store (0x0FA0, Local0)
                    While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                    {
                        Decrement (Local0)
                        Stall (0x32)
                    }

                    If (LNot (Local0))
                    {
                        KILL ()
                        Return (0x00)
                    }

                    Store (DAT0, Index (TBUF, 0x00))
                    Store (0x80, HSTS)
                    Store (0x01, Local1)
                    While (LLess (Local1, DerefOf (Index (TBUF, 0x00))))
                    {
                        Store (0x0FA0, Local0)
                        While (LAnd (LNot (And (HSTS, 0x80)), Local0))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                        }

                        If (LNot (Local0))
                        {
                            KILL ()
                            Return (0x00)
                        }

                        Store (HBDR, Index (TBUF, Local1))
                        Store (0x80, HSTS)
                        Increment (Local1)
                    }

                    If (COMP ())
                    {
                        Or (HSTS, 0xFF, HSTS)
                        Return (TBUF)
                    }

                    Return (0x00)
                }

                Method (STRT, 0, Serialized)
                {
                    Store (0xC8, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x40))
                        {
                            Decrement (Local0)
                            Sleep (0x01)
                            If (LEqual (Local0, 0x00))
                            {
                                Return (0x01)
                            }
                        }
                        Else
                        {
                            Store (0x00, Local0)
                        }
                    }

                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x01))
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, 0x00))
                            {
                                KILL ()
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Return (0x01)
                }

                Method (COMP, 0, Serialized)
                {
                    Store (0x0FA0, Local0)
                    While (Local0)
                    {
                        If (And (HSTS, 0x02))
                        {
                            Return (0x01)
                        }
                        Else
                        {
                            Decrement (Local0)
                            Stall (0x32)
                            If (LEqual (Local0, 0x00))
                            {
                                KILL ()
                            }
                        }
                    }

                    Return (0x00)
                }

                Method (KILL, 0, Serialized)
                {
                    Or (HCON, 0x02, HCON)
                    Or (HSTS, 0xFF, HSTS)
                }
            }
        }

        Device (DOCK)
        {
            Name (_HID, EisaId ("PNP0C15"))
            Name (_UID, 0x00)
            Name (_BDN, 0xFFFFFFFF)
            Method (_EJ0, 1, NotSerialized)
            {
                Store (0x01, \_SB.PCI0.LPCB.EC0.UDRQ)
                Wait (UDCK, 0xFFFF)
                Reset (UDCK)
                Notify (\_SB.PCI0.RP04, 0x00)
            }

            Event (UDCK)
            Method (_DCK, 1, NotSerialized)
            {
                If (Arg0)
                {
                    If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                    {
                        Store (PHSB (0xD4, 0x9E), Local0)
                        Or (Local0, Not (0x40), Local0)
                        PHSW (0xD5, 0x9E, Local0)
                    }
                    Else
                    {
                        Store (0x01, \_SB.PCI0.LPCB.EC0.IUSE)
                    }
                }
                Else
                {
                    If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                    {
                        Store (PHSB (0xD4, 0x9E), Local0)
                        And (Local0, Not (0x40), Local0)
                        PHSW (0xD5, 0x9E, Local0)
                    }
                    Else
                    {
                        Store (0x00, \_SB.PCI0.LPCB.EC0.IUSE)
                    }
                }

                Return (0x01)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (LEqual (\_SB.PCI0.LPCB.EC0.ECOK, 0x00))
                {
                    If (LAnd (PHSB (0xD4, 0x9E), 0x40))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }
                Else
                {
                    If (\_SB.PCI0.LPCB.EC0.IUSE)
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }
            }
        }
    }

    Name (TBUF, Buffer (0x02)
    {
        0x00, 0x00
    })
    CreateByteField (TBUF, 0x00, SPM0)
    CreateByteField (TBUF, 0x01, SPM1)
    Scope (\_SB.PCI0.SATA)
    {
        Device (PRID)
        {
            Name (_ADR, 0x00)
            Method (_GTM, 0, NotSerialized)
            {
                Name (PBUF, Buffer (0x14)
                {
                    /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0010 */    0x00, 0x00, 0x00, 0x00
                })
                CreateDWordField (PBUF, 0x00, PIO0)
                CreateDWordField (PBUF, 0x04, DMA0)
                CreateDWordField (PBUF, 0x08, PIO1)
                CreateDWordField (PBUF, 0x0C, DMA1)
                CreateDWordField (PBUF, 0x10, FLAG)
                Store (GETP (PRIT), PIO0)
                Store (GDMA (And (SYNC, 0x01), And (ICR3, 0x01), 
                    And (ICR0, 0x01), SDT0, And (ICR1, 0x01)), DMA0)
                If (LEqual (DMA0, 0xFFFFFFFF))
                {
                    Store (PIO0, DMA0)
                }

                If (And (PRIT, 0x4000))
                {
                    If (LEqual (And (PRIT, 0x90), 0x80))
                    {
                        Store (0x0384, PIO1)
                    }
                    Else
                    {
                        Store (GETT (PSIT), PIO1)
                    }
                }
                Else
                {
                    Store (0xFFFFFFFF, PIO1)
                }

                Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), 
                    And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
                If (LEqual (DMA1, 0xFFFFFFFF))
                {
                    Store (PIO1, DMA1)
                }

                Store (GETF (And (SYNC, 0x01), And (SYNC, 0x02), 
                    PRIT), FLAG)
                Return (PBUF)
            }

            Method (_STM, 3, NotSerialized)
            {
                CreateDWordField (Arg0, 0x00, PIO0)
                CreateDWordField (Arg0, 0x04, DMA0)
                CreateDWordField (Arg0, 0x08, PIO1)
                CreateDWordField (Arg0, 0x0C, DMA1)
                CreateDWordField (Arg0, 0x10, FLAG)
                If (LEqual (SizeOf (Arg1), 0x0200))
                {
                    And (PRIT, 0xC0F0, PRIT)
                    And (SYNC, 0x0E, SYNC)
                    Store (0x00, SDT0)
                    And (ICR0, 0x0E, ICR0)
                    And (ICR1, 0x0E, ICR1)
                    And (ICR3, 0x0E, ICR3)
                    And (ICR5, 0x0E, ICR5)
                    CreateWordField (Arg1, 0x62, W490)
                    CreateWordField (Arg1, 0x6A, W530)
                    CreateWordField (Arg1, 0x7E, W630)
                    CreateWordField (Arg1, 0x80, W640)
                    CreateWordField (Arg1, 0x9C, W780)
                    CreateWordField (Arg1, 0x9E, W790)
                    CreateWordField (Arg1, 0xB0, W880)
                    CreateWordField (Arg1, 0xBA, W930)
                    If (And (W780, 0x08))
                    {
                        If (LEqual (And (W790, 0x08), 0x00))
                        {
                            Store (0x01, SPM0)
                        }
                    }

                    Or (PRIT, 0x8004, PRIT)
                    If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                    {
                        Or (PRIT, 0x02, PRIT)
                    }

                    Or (PRIT, SETP (PIO0, W530, W640), PRIT)
                    If (And (FLAG, 0x01))
                    {
                        Or (SYNC, 0x01, SYNC)
                        Store (SDMA (DMA0), SDT0)
                        If (LLess (DMA0, 0x1E))
                        {
                            Or (ICR3, 0x01, ICR3)
                        }

                        If (LLess (DMA0, 0x3C))
                        {
                            Or (ICR0, 0x01, ICR0)
                        }

                        Or (ICR1, 0x01, ICR1)
                    }
                }

                If (LEqual (SizeOf (Arg2), 0x0200))
                {
                    And (PRIT, 0xBF0F, PRIT)
                    Store (0x00, PSIT)
                    And (SYNC, 0x0D, SYNC)
                    Store (0x00, SDT1)
                    And (ICR0, 0x0D, ICR0)
                    And (ICR1, 0x0D, ICR1)
                    And (ICR3, 0x0D, ICR3)
                    And (ICR5, 0x0D, ICR5)
                    CreateWordField (Arg2, 0x62, W491)
                    CreateWordField (Arg2, 0x6A, W531)
                    CreateWordField (Arg2, 0x7E, W631)
                    CreateWordField (Arg2, 0x80, W641)
                    CreateWordField (Arg2, 0x9C, W781)
                    CreateWordField (Arg2, 0x9E, W791)
                    CreateWordField (Arg2, 0xB0, W881)
                    CreateWordField (Arg2, 0xBA, W931)
                    If (And (W781, 0x08))
                    {
                        If (LEqual (And (W791, 0x08), 0x00))
                        {
                            Store (0x01, SPM1)
                        }
                    }

                    Or (PRIT, 0x8040, PRIT)
                    If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                    {
                        Or (PRIT, 0x20, PRIT)
                    }

                    If (And (FLAG, 0x10))
                    {
                        Or (PRIT, 0x4000, PRIT)
                        If (LGreater (PIO1, 0xF0))
                        {
                            Or (PRIT, 0x80, PRIT)
                        }
                        Else
                        {
                            Or (PRIT, 0x10, PRIT)
                            Store (SETT (PIO1, W531, W641), PSIT)
                        }
                    }

                    If (And (FLAG, 0x04))
                    {
                        Or (SYNC, 0x02, SYNC)
                        Store (SDMA (DMA1), SDT1)
                        If (LLess (DMA1, 0x1E))
                        {
                            Or (ICR3, 0x02, ICR3)
                        }

                        If (LLess (DMA1, 0x3C))
                        {
                            Or (ICR0, 0x02, ICR0)
                        }

                        Or (ICR1, 0x02, ICR1)
                    }
                }
            }

            Device (P_D0)
            {
                Name (_ADR, 0x00)
                Method (_GTF, 0, NotSerialized)
                {
                    Name (PIB0, Buffer (0x15)
                    {
                        /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x00, 0x00, 
                        /* 0010 */    0x00, 0x00, 0x00, 0xA0, 0x00
                    })
                    CreateByteField (PIB0, 0x01, PMD0)
                    CreateByteField (PIB0, 0x08, DMD0)
                    CreateByteField (PIB0, 0x0E, SA00)
                    CreateByteField (PIB0, 0x0F, SA01)
                    CreateByteField (PIB0, 0x10, SA02)
                    CreateByteField (PIB0, 0x14, SA06)
                    If (And (SPM0, 0x01))
                    {
                        Store (0x10, SA00)
                        Store (0x03, SA01)
                        Store (0xC0, SA02)
                        Store (0xEF, SA06)
                    }

                    If (And (PRIT, 0x02))
                    {
                        If (LEqual (And (PRIT, 0x09), 0x08))
                        {
                            Store (0x08, PMD0)
                        }
                        Else
                        {
                            Store (0x0A, PMD0)
                            ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
                            ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
                            Add (Local0, Local1, Local2)
                            If (LEqual (0x03, Local2))
                            {
                                Store (0x0B, PMD0)
                            }

                            If (LEqual (0x05, Local2))
                            {
                                Store (0x0C, PMD0)
                            }
                        }
                    }
                    Else
                    {
                        Store (0x01, PMD0)
                    }

                    If (And (SYNC, 0x01))
                    {
                        Store (Or (SDT0, 0x40), DMD0)
                        If (And (ICR1, 0x01))
                        {
                            If (And (ICR0, 0x01))
                            {
                                Add (DMD0, 0x02, DMD0)
                            }

                            If (And (ICR3, 0x01))
                            {
                                Store (0x45, DMD0)
                            }
                        }
                    }
                    Else
                    {
                        Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                    }

                    Return (PIB0)
                }

                Name (_PSC, 0x00)
                Method (_PS0, 0, NotSerialized)
                {
                    Store (_PSC, Local0)
                    Store (0x00, _PSC)
                    If (LEqual (Local0, 0x03))
                    {
                        \_SB.PHDS (0x04, 0x0A)
                        \_SB.PHDS (0x05, 0x0A)
                    }
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x03, _PSC)
                }
            }

            Device (P_D1)
            {
                Name (_ADR, 0x01)
                Method (_GTF, 0, NotSerialized)
                {
                    Name (PIB1, Buffer (0x15)
                    {
                        /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x00, 0x00, 
                        /* 0010 */    0x00, 0x00, 0x00, 0xB0, 0x00
                    })
                    CreateByteField (PIB1, 0x01, PMD1)
                    CreateByteField (PIB1, 0x08, DMD1)
                    CreateByteField (PIB1, 0x0E, SA10)
                    CreateByteField (PIB1, 0x0F, SA11)
                    CreateByteField (PIB1, 0x10, SA12)
                    CreateByteField (PIB1, 0x14, SA16)
                    If (And (SPM1, 0x01))
                    {
                        Store (0x10, SA10)
                        Store (0x03, SA11)
                        Store (0xC0, SA12)
                        Store (0xEF, SA16)
                    }

                    If (And (PRIT, 0x20))
                    {
                        If (LEqual (And (PRIT, 0x90), 0x80))
                        {
                            Store (0x08, PMD1)
                        }
                        Else
                        {
                            Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C), 
                                0x02), Local0)
                            If (LEqual (0x05, Local0))
                            {
                                Store (0x0C, PMD1)
                            }
                            Else
                            {
                                If (LEqual (0x03, Local0))
                                {
                                    Store (0x0B, PMD1)
                                }
                                Else
                                {
                                    Store (0x0A, PMD1)
                                }
                            }
                        }
                    }
                    Else
                    {
                        Store (0x01, PMD1)
                    }

                    If (And (SYNC, 0x02))
                    {
                        Store (Or (SDT1, 0x40), DMD1)
                        If (And (ICR1, 0x02))
                        {
                            If (And (ICR0, 0x02))
                            {
                                Add (DMD1, 0x02, DMD1)
                            }

                            If (And (ICR3, 0x02))
                            {
                                Store (0x45, DMD1)
                            }
                        }
                    }
                    Else
                    {
                        Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                    }

                    Return (PIB1)
                }

                Name (_PSC, 0x00)
                Method (_PS0, 0, NotSerialized)
                {
                    Store (_PSC, Local0)
                    Store (0x00, _PSC)
                    If (LEqual (Local0, 0x03))
                    {
                        \_SB.PHDS (0x04, 0x0A)
                        \_SB.PHDS (0x05, 0x0A)
                    }
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x03, _PSC)
                }
            }
        }
    }

    Name (TBU2, Buffer (0x02)
    {
        0x00, 0x00
    })
    CreateByteField (TBU2, 0x00, SPM2)
    CreateByteField (TBU2, 0x01, SPM3)
    Scope (\_SB.PCI0.SATA)
    {
        Device (SECD)
        {
            Name (_ADR, 0x01)
            Method (_GTM, 0, NotSerialized)
            {
                Name (SBUF, Buffer (0x14)
                {
                    /* 0000 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0008 */    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                    /* 0010 */    0x00, 0x00, 0x00, 0x00
                })
                CreateDWordField (SBUF, 0x00, PIO0)
                CreateDWordField (SBUF, 0x04, DMA0)
                CreateDWordField (SBUF, 0x08, PIO1)
                CreateDWordField (SBUF, 0x0C, DMA1)
                CreateDWordField (SBUF, 0x10, FLAG)
                Store (GETP (SECT), PIO0)
                Store (GDMA (And (SYNC, 0x04), And (ICR3, 0x04), 
                    And (ICR0, 0x04), SDT2, And (ICR1, 0x04)), DMA0)
                If (LEqual (DMA0, 0xFFFFFFFF))
                {
                    Store (PIO0, DMA0)
                }

                If (And (SECT, 0x4000))
                {
                    If (LEqual (And (SECT, 0x90), 0x80))
                    {
                        Store (0x0384, PIO1)
                    }
                    Else
                    {
                        Store (GETT (SSIT), PIO1)
                    }
                }
                Else
                {
                    Store (0xFFFFFFFF, PIO1)
                }

                Store (GDMA (And (SYNC, 0x08), And (ICR3, 0x08), 
                    And (ICR0, 0x08), SDT3, And (ICR1, 0x08)), DMA1)
                If (LEqual (DMA1, 0xFFFFFFFF))
                {
                    Store (PIO1, DMA1)
                }

                Store (GETF (And (SYNC, 0x04), And (SYNC, 0x08), 
                    SECT), FLAG)
                If (And (LEqual (PIO0, 0xFFFFFFFF), LEqual (DMA0, 0xFFFFFFFF)))
                {
                    Store (0x78, PIO0)
                    Store (0x14, DMA0)
                    Store (0x03, FLAG)
                }

                Return (SBUF)
            }

            Method (_STM, 3, NotSerialized)
            {
                CreateDWordField (Arg0, 0x00, PIO0)
                CreateDWordField (Arg0, 0x04, DMA0)
                CreateDWordField (Arg0, 0x08, PIO1)
                CreateDWordField (Arg0, 0x0C, DMA1)
                CreateDWordField (Arg0, 0x10, FLAG)
                If (LEqual (SizeOf (Arg1), 0x0200))
                {
                    And (SECT, 0xC0F0, SECT)
                    And (SYNC, 0x0B, SYNC)
                    Store (0x00, SDT2)
                    And (ICR0, 0x0B, ICR0)
                    And (ICR1, 0x0B, ICR1)
                    And (ICR3, 0x0B, ICR3)
                    And (ICR5, 0x0B, ICR5)
                    CreateWordField (Arg1, 0x62, W490)
                    CreateWordField (Arg1, 0x6A, W530)
                    CreateWordField (Arg1, 0x7E, W630)
                    CreateWordField (Arg1, 0x80, W640)
                    CreateWordField (Arg1, 0x9C, W780)
                    CreateWordField (Arg1, 0x9E, W790)
                    CreateWordField (Arg1, 0xB0, W880)
                    CreateWordField (Arg1, 0xBA, W930)
                    If (And (W780, 0x08))
                    {
                        If (LEqual (And (W790, 0x08), 0x00))
                        {
                            Store (0x01, SPM2)
                        }
                    }

                    Or (SECT, 0x8004, SECT)
                    If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
                    {
                        Or (SECT, 0x02, SECT)
                    }

                    Or (SECT, SETP (PIO0, W530, W640), SECT)
                    If (And (FLAG, 0x01))
                    {
                        Or (SYNC, 0x04, SYNC)
                        Store (SDMA (DMA0), SDT2)
                        If (LLess (DMA0, 0x1E))
                        {
                            Or (ICR3, 0x04, ICR3)
                        }

                        If (LLess (DMA0, 0x3C))
                        {
                            Or (ICR0, 0x04, ICR0)
                        }

                        If (And (W930, 0x2000))
                        {
                            Or (ICR1, 0x04, ICR1)
                        }
                    }
                }

                If (LEqual (SizeOf (Arg2), 0x0200))
                {
                    And (SECT, 0xBF0F, SECT)
                    Store (0x00, SSIT)
                    And (SYNC, 0x07, SYNC)
                    Store (0x00, SDT3)
                    And (ICR0, 0x07, ICR0)
                    And (ICR1, 0x07, ICR1)
                    And (ICR3, 0x07, ICR3)
                    And (ICR5, 0x07, ICR5)
                    CreateWordField (Arg2, 0x62, W491)
                    CreateWordField (Arg2, 0x6A, W531)
                    CreateWordField (Arg2, 0x7E, W631)
                    CreateWordField (Arg2, 0x80, W641)
                    CreateWordField (Arg2, 0x9C, W781)
                    CreateWordField (Arg2, 0x9E, W791)
                    CreateWordField (Arg2, 0xB0, W881)
                    CreateWordField (Arg2, 0xBA, W931)
                    If (And (W781, 0x08))
                    {
                        If (LEqual (And (W791, 0x08), 0x00))
                        {
                            Store (0x01, SPM3)
                        }
                    }

                    Or (SECT, 0x8040, SECT)
                    If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
                    {
                        Or (SECT, 0x20, SECT)
                    }

                    If (And (FLAG, 0x10))
                    {
                        Or (SECT, 0x4000, SECT)
                        If (LGreater (PIO1, 0xF0))
                        {
                            Or (SECT, 0x80, SECT)
                        }
                        Else
                        {
                            Or (SECT, 0x10, SECT)
                            Store (SETT (PIO1, W531, W641), SSIT)
                        }
                    }

                    If (And (FLAG, 0x04))
                    {
                        Or (SYNC, 0x08, SYNC)
                        Store (SDMA (DMA1), SDT3)
                        If (LLess (DMA1, 0x1E))
                        {
                            Or (ICR3, 0x08, ICR3)
                        }

                        If (LLess (DMA1, 0x3C))
                        {
                            Or (ICR0, 0x08, ICR0)
                        }

                        If (And (W931, 0x2000))
                        {
                            Or (ICR1, 0x08, ICR1)
                        }
                    }
                }
            }

            Device (S_D0)
            {
                Name (_ADR, 0x00)
                Method (_RMV, 0, NotSerialized)
                {
                    Return (0x01)
                }

                Method (_GTF, 0, NotSerialized)
                {
                    Name (SIB0, Buffer (0x15)
                    {
                        /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x00, 0x00, 
                        /* 0010 */    0x00, 0x00, 0x00, 0xA0, 0x00
                    })
                    CreateByteField (SIB0, 0x01, PMD0)
                    CreateByteField (SIB0, 0x08, DMD0)
                    CreateByteField (SIB0, 0x0E, SA20)
                    CreateByteField (SIB0, 0x0F, SA21)
                    CreateByteField (SIB0, 0x10, SA22)
                    CreateByteField (SIB0, 0x14, SA26)
                    If (And (SPM2, 0x01))
                    {
                        Store (0x10, SA20)
                        Store (0x03, SA21)
                        Store (0xC0, SA22)
                        Store (0xEF, SA26)
                    }

                    If (And (SECT, 0x02))
                    {
                        If (LEqual (And (SECT, 0x09), 0x08))
                        {
                            Store (0x08, PMD0)
                        }
                        Else
                        {
                            Store (0x0A, PMD0)
                            ShiftRight (And (SECT, 0x0300), 0x08, Local0)
                            ShiftRight (And (SECT, 0x3000), 0x0C, Local1)
                            Add (Local0, Local1, Local2)
                            If (LEqual (0x03, Local2))
                            {
                                Store (0x0B, PMD0)
                            }

                            If (LEqual (0x05, Local2))
                            {
                                Store (0x0C, PMD0)
                            }
                        }
                    }
                    Else
                    {
                        Store (0x01, PMD0)
                    }

                    If (And (SYNC, 0x04))
                    {
                        Store (Or (SDT2, 0x40), DMD0)
                        If (And (ICR1, 0x04))
                        {
                            If (And (ICR0, 0x04))
                            {
                                Add (DMD0, 0x02, DMD0)
                            }

                            If (And (ICR3, 0x04))
                            {
                                Store (0x45, DMD0)
                            }
                        }
                    }
                    Else
                    {
                        Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
                    }

                    Return (SIB0)
                }

                Name (_PSC, 0x00)
                Method (_PS0, 0, NotSerialized)
                {
                    Store (_PSC, Local0)
                    Store (0x00, _PSC)
                    If (LEqual (Local0, 0x03))
                    {
                        \_SB.PHDS (0x06, 0x0A)
                        \_SB.PHDS (0x07, 0x0A)
                    }
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x03, _PSC)
                }
            }

            Device (S_D1)
            {
                Name (_ADR, 0x01)
                Method (_GTF, 0, NotSerialized)
                {
                    Name (SIB1, Buffer (0x15)
                    {
                        /* 0000 */    0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, 
                        /* 0008 */    0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x00, 0x00, 
                        /* 0010 */    0x00, 0x00, 0x00, 0xB0, 0x00
                    })
                    CreateByteField (SIB1, 0x01, PMD1)
                    CreateByteField (SIB1, 0x08, DMD1)
                    CreateByteField (SIB1, 0x0E, SA30)
                    CreateByteField (SIB1, 0x0F, SA31)
                    CreateByteField (SIB1, 0x10, SA32)
                    CreateByteField (SIB1, 0x14, SA36)
                    If (And (SPM3, 0x01))
                    {
                        Store (0x10, SA30)
                        Store (0x03, SA31)
                        Store (0xC0, SA32)
                        Store (0xEF, SA36)
                    }

                    If (And (SECT, 0x20))
                    {
                        If (LEqual (And (SECT, 0x90), 0x80))
                        {
                            Store (0x08, PMD1)
                        }
                        Else
                        {
                            Add (And (SSIT, 0x03), ShiftRight (And (SSIT, 0x0C), 
                                0x02), Local0)
                            If (LEqual (0x05, Local0))
                            {
                                Store (0x0C, PMD1)
                            }
                            Else
                            {
                                If (LEqual (0x03, Local0))
                                {
                                    Store (0x0B, PMD1)
                                }
                                Else
                                {
                                    Store (0x0A, PMD1)
                                }
                            }
                        }
                    }
                    Else
                    {
                        Store (0x01, PMD1)
                    }

                    If (And (SYNC, 0x08))
                    {
                        Store (Or (SDT3, 0x40), DMD1)
                        If (And (ICR1, 0x08))
                        {
                            If (And (ICR0, 0x08))
                            {
                                Add (DMD1, 0x02, DMD1)
                            }

                            If (And (ICR3, 0x08))
                            {
                                Store (0x45, DMD1)
                            }
                        }
                    }
                    Else
                    {
                        Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
                    }

                    Return (SIB1)
                }

                Name (_PSC, 0x00)
                Method (_PS0, 0, NotSerialized)
                {
                    Store (_PSC, Local0)
                    Store (0x00, _PSC)
                    If (LEqual (Local0, 0x03))
                    {
                        \_SB.PHDS (0x06, 0x0A)
                        \_SB.PHDS (0x07, 0x0A)
                    }
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x03, _PSC)
                }
            }
        }
    }

    Scope (\_PR.CPU0)
    {
        Name (_TPC, 0x00)
        Method (_PTC, 0, NotSerialized)
        {
            If (And (PDC0, 0x04))
            {
                Return (Package (0x02)
                {
                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x00,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000000, // Address
                            ,)
                    }, 

                    ResourceTemplate ()
                    {
                        Register (FFixedHW, 
                            0x00,               // Bit Width
                            0x00,               // Bit Offset
                            0x0000000000000000, // Address
                            ,)
                    }
                })
            }

            Return (Package (0x02)
            {
                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x04,               // Bit Width
                        0x01,               // Bit Offset
                        0x0000000000001010, // Address
                        ,)
                }, 

                ResourceTemplate ()
                {
                    Register (SystemIO, 
                        0x04,               // Bit Width
                        0x01,               // Bit Offset
                        0x0000000000001010, // Address
                        ,)
                }
            })
        }

        Name (TSSI, Package (0x08)
        {
            Package (0x05)
            {
                0x64, 
                0x03E8, 
                0x00, 
                0x00, 
                0x00
            }, 

            Package (0x05)
            {
                0x58, 
                0x036B, 
                0x00, 
                0x0F, 
                0x00
            }, 

            Package (0x05)
            {
                0x4B, 
                0x02EE, 
                0x00, 
                0x0E, 
                0x00
            }, 

            Package (0x05)
            {
                0x3F, 
                0x0271, 
                0x00, 
                0x0D, 
                0x00
            }, 

            Package (0x05)
            {
                0x32, 
                0x01F4, 
                0x00, 
                0x0C, 
                0x00
            }, 

            Package (0x05)
            {
                0x26, 
                0x0177, 
                0x00, 
                0x0B, 
                0x00
            }, 

            Package (0x05)
            {
                0x19, 
                0xFA, 
                0x00, 
                0x0A, 
                0x00
            }, 

            Package (0x05)
            {
                0x0D, 
                0x7D, 
                0x00, 
                0x09, 
                0x00
            }
        })
        Name (TSSM, Package (0x08)
        {
            Package (0x05)
            {
                0x64, 
                0x03E8, 
                0x00, 
                0x00, 
                0x00
            }, 

            Package (0x05)
            {
                0x58, 
                0x036B, 
                0x00, 
                0x1E, 
                0x00
            }, 

            Package (0x05)
            {
                0x4B, 
                0x02EE, 
                0x00, 
                0x1C, 
                0x00
            }, 

            Package (0x05)
            {
                0x3F, 
                0x0271, 
                0x00, 
                0x1A, 
                0x00
            }, 

            Package (0x05)
            {
                0x32, 
                0x01F4, 
                0x00, 
                0x18, 
                0x00
            }, 

            Package (0x05)
            {
                0x26, 
                0x0177, 
                0x00, 
                0x16, 
                0x00
            }, 

            Package (0x05)
            {
                0x19, 
                0xFA, 
                0x00, 
                0x14, 
                0x00
            }, 

            Package (0x05)
            {
                0x0D, 
                0x7D, 
                0x00, 
                0x12, 
                0x00
            }
        })
        Name (TSSF, 0x00)
        Method (_TSS, 0, NotSerialized)
        {
            If (LAnd (LNot (TSSF), CondRefOf (_PSS)))
            {
                Store (_PSS, Local0)
                Store (SizeOf (Local0), Local1)
                Decrement (Local1)
                Store (DerefOf (Index (DerefOf (Index (Local0, Local1)), 0x01)), 
                    Local2)
                Store (0x00, Local3)
                While (LLess (Local3, SizeOf (TSSI)))
                {
                    Store (Divide (Multiply (Local2, Subtract (0x08, Local3)), 0x08, 
                        ), Local4)
                    Store (Local4, Index (DerefOf (Index (TSSI, Local3)), 0x01))
                    Store (Local4, Index (DerefOf (Index (TSSM, Local3)), 0x01))
                    Increment (Local3)
                }

                Store (Ones, TSSF)
            }

            If (And (PDC0, 0x04))
            {
                Return (TSSM)
            }

            Return (TSSI)
        }

        Method (_TSD, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC0, 0x04
                ))))
            {
                Return (Package (0x01)
                {
                    Package (0x05)
                    {
                        0x05, 
                        0x00, 
                        0x00, 
                        0xFD, 
                        0x02
                    }
                })
            }

            Return (Package (0x01)
            {
                Package (0x05)
                {
                    0x05, 
                    0x00, 
                    0x00, 
                    0xFC, 
                    0x01
                }
            })
        }
    }

    Scope (\_PR.CPU1)
    {
        Name (_TPC, 0x00)
        Method (_PTC, 0, NotSerialized)
        {
            Return (\_PR.CPU0._PTC ())
        }

        Method (_TSS, 0, NotSerialized)
        {
            Return (\_PR.CPU0._TSS ())
        }

        Method (_TSD, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC1, 0x04
                ))))
            {
                Return (Package (0x01)
                {
                    Package (0x05)
                    {
                        0x05, 
                        0x00, 
                        0x00, 
                        0xFD, 
                        0x02
                    }
                })
            }

            Return (Package (0x01)
            {
                Package (0x05)
                {
                    0x05, 
                    0x00, 
                    0x01, 
                    0xFC, 
                    0x01
                }
            })
        }
    }

    Scope (\)
    {
        Name (SSDT, Package (0x0C)
        {
            "CPU0IST ", 
            0x7F67437D, 
            0x00000238, 
            "CPU1IST ", 
            0x7F6745B5, 
            0x000000C8, 
            "CPU0CST ", 
            0x7F673DF9, 
            0x000004FF, 
            "CPU1CST ", 
            0x7F6742F8, 
            0x00000085
        })
        Name (CFGD, 0x113B69F1)
        Name (\PDC0, 0x80000000)
        Name (\PDC1, 0x80000000)
        Name (\SDTL, 0x00)
    }

    Scope (\_PR.CPU0)
    {
        Name (HI0, 0x00)
        Name (HC0, 0x00)
        Method (_PDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, 0x00, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS0, TEMP, Local2)
            _OSC (Buffer (0x10)
                {
                    /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                    /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2)
        }

        Method (_OSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, 0x00, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, 0x00, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, Buffer (0x10)
            {
                /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (UID0, 0x00, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, STS0)
                Return (Arg3)
            }

            If (LNotEqual (Arg1, 0x01))
            {
                Store (0x0A, STS0)
                Return (Arg3)
            }

            Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
            Store (And (PDC0, 0xFF), PCP0)
            If (And (CFGD, 0x01))
            {
                If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC0, 
                    0x09), 0x09)), LNot (And (SDTL, 0x01))))
                {
                    Or (SDTL, 0x01, SDTL)
                    OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, 0x01)), DerefOf (Index (SSDT, 0x02
                        )))
                    Load (IST0, HI0)
                }
            }

            If (And (CFGD, 0xF0))
            {
                If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC0, 0x18
                    )), LNot (And (SDTL, 0x02))))
                {
                    Or (SDTL, 0x02, SDTL)
                    OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08
                        )))
                    Load (CST0, HC0)
                }
            }

            Return (Arg3)
        }
    }

    Scope (\_PR.CPU1)
    {
        Name (HI1, 0x00)
        Name (HC1, 0x00)
        Method (_PDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, 0x00, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS1, Buffer (0x04)
            {
                0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS1, TEMP, Local2)
            _OSC (Buffer (0x10)
                {
                    /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                    /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2)
        }

        Method (_OSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, 0x00, STS1)
            CreateDWordField (Arg3, 0x04, CAP1)
            CreateDWordField (Arg0, 0x00, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID1, Buffer (0x10)
            {
                /* 0000 */    0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, 
                /* 0008 */    0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (UID1, 0x00, EID0)
            CreateDWordField (UID1, 0x04, EID1)
            CreateDWordField (UID1, 0x08, EID2)
            CreateDWordField (UID1, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, STS1)
                Return (Arg3)
            }

            If (LNotEqual (Arg1, 0x01))
            {
                Store (0x0A, STS1)
                Return (Arg3)
            }

            Or (And (PDC1, 0x7FFFFFFF), CAP1, PDC1)
            Store (And (PDC1, 0xFF), PCP1)
            If (And (CFGD, 0x01))
            {
                If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC1, 
                    0x09), 0x09)), LNot (And (SDTL, 0x10))))
                {
                    Or (SDTL, 0x10, SDTL)
                    OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
                        )))
                    Load (IST1, HI1)
                }
            }

            If (And (CFGD, 0xF0))
            {
                If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC1, 0x18
                    )), LNot (And (SDTL, 0x20))))
                {
                    Or (SDTL, 0x20, SDTL)
                    OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B
                        )))
                    Load (CST1, HC1)
                }
            }

            Return (Arg3)
        }
    }
}


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