linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
@ 2016-10-03 22:22 Jérôme de Bretagne
  2016-10-04  7:46 ` Loic Poulain
  0 siblings, 1 reply; 6+ messages in thread
From: Jérôme de Bretagne @ 2016-10-03 22:22 UTC (permalink / raw)
  To: Frederic Danis, Marcel Holtmann, linux-bluetooth

Hi Frederic, Hi Marcel,

I've been trying to figure this out for quite some time: since the Bluetooth
BCM chipset of my ThinkPad 8 tablet was added into Linux kernel 4.6,
Bluetooth has never been working fully as expected.

To describe the issue: Bluetooth devices (keyboard, mouse) would work and
keep connected *only* if a device scan was maintained running in the
background. In my setup, the trick was achieved by having the Gnome
Bluetooth setting page opened. Without this trick, devices would simply stop
responding after a short amount of time; my BT keyboard would also seem
disconnected during the session login (despite btattach being properly
launched in the background) and would resume right away with a device scan.

I don't know if this issue is widespread but I've found references to at
least 2 similar cases at [1] & [2], both for products using hci_bcm. In the
bug descriptions, it was stated that kernel 4.3 was working fine while 4.4
wasn't anymore. And indeed, I was able to reproduce this on my side.

By investigating the various changes introduced in 4.4, I've been able to
pinpoint the commit [3] that introduces the regression on my tablet:
   commit: e88ab30d3669f08e94e66e7f926713be93af97fc
   Bluetooth: hci_bcm: Add suspend/resume runtime PM functions

since building a kernel with its parent commit [4] works perfectly fine: 
   commit: 7649faff1cfe4f76dabf78cd53d659d39f65b3c1
   Bluetooth: Remove useless rx_lock spinlock

The code change adding the runtime PM functions introduces an autosleep
delay but it's unclear from the commit description how the BT chipset is
supposed to get out of sleep afterwards.

For 3 different devices at least (Asus T100 Chi, Asus T100TA and Lenovo
ThinkPad Tablet 8), it seems to lead in practice to a regression since the
BT chipset doesn't wake up anymore on normal operations (moving the mouse,
typing a key on the keyboard, etc) breaking Bluetooth from a user PoV. And
maybe a few more products using hci_bcm are impacted too.   

If you have a patch suggestion for a potential fix, I would be glad to give
it a try in the coming days and confirm if it solves the issue or not. 

If a proper fix is going to need quite more time otherwise, could you
consider reverting this specific commit in the meantime? Thanks.

Regards,

Jérôme


[1] https://bugzilla.kernel.org/show_bug.cgi?id=109321#c3 (Comments 3 & 4)
for Asus T100TA
[2] https://bugzilla.kernel.org/show_bug.cgi?id=114561#c1 for Asus T100 Chi
[3] https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.gi
t/commit/?id=e88ab30d3669f08e94e66e7f926713be93af97fc
[4] https://git.kernel.org/cgit/linux/kernel/git/bluetooth/bluetooth-next.gi
t/commit/?id=7649faff1cfe4f76dabf78cd53d659d39f65b3c1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
  2016-10-03 22:22 Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions) Jérôme de Bretagne
@ 2016-10-04  7:46 ` Loic Poulain
  2016-10-04  8:38   ` Marcel Holtmann
  2016-10-05 21:16   ` Jérôme de Bretagne
  0 siblings, 2 replies; 6+ messages in thread
From: Loic Poulain @ 2016-10-04  7:46 UTC (permalink / raw)
  To: Jérôme de Bretagne, Frederic Danis, Marcel Holtmann,
	linux-bluetooth

Hi Jerome,

>
> since building a kernel with its parent commit [4] works perfectly fine:
>    commit: 7649faff1cfe4f76dabf78cd53d659d39f65b3c1
>    Bluetooth: Remove useless rx_lock spinlock
>
> The code change adding the runtime PM functions introduces an autosleep
> delay but it's unclear from the commit description how the BT chipset is
> supposed to get out of sleep afterwards.

Using out-of-band gpio/irq which are retrieved from the ACPI device.
wakeup can be initiated by host or controller depending which one wants
to transfer hci data.

>
> For 3 different devices at least (Asus T100 Chi, Asus T100TA and Lenovo
> ThinkPad Tablet 8), it seems to lead in practice to a regression since the
> BT chipset doesn't wake up anymore on normal operations (moving the mouse,
> typing a key on the keyboard, etc) breaking Bluetooth from a user PoV. And
> maybe a few more products using hci_bcm are impacted too.

I'm going to retry on my T100 and let you know, but used to work.

>
> If you have a patch suggestion for a potential fix, I would be glad to give
> it a try in the coming days and confirm if it solves the issue or not.

- What is the state of your interrupt counter ("host_wake") in 
/proc/interrupts when you try to generate host wake-up events (using 
mouse...).

- Could you confirm you don't meet the issue if you disable runtime-pm 
via sysfs. You should find the device (BCM43*) as a child node of your 
tty in /sys/class/tty*. (echo on > power/control).

>
> If a proper fix is going to need quite more time otherwise, could you
> consider reverting this specific commit in the meantime? Thanks.

I remember Frederic had some gpio/irq polarity issues:
5cebdfea32b89911d4540440c1c2854a1a3d591e
Bluetooth: hci_bcm: Fix IRQ polarity for T100
Maybe the ACPI table is not correct on some devices.

Regards,
Loic


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
  2016-10-04  7:46 ` Loic Poulain
@ 2016-10-04  8:38   ` Marcel Holtmann
  2016-10-05 21:18     ` Jérôme de Bretagne
  2016-10-05 21:16   ` Jérôme de Bretagne
  1 sibling, 1 reply; 6+ messages in thread
From: Marcel Holtmann @ 2016-10-04  8:38 UTC (permalink / raw)
  To: Loic Poulain
  Cc: Jérôme de Bretagne, Frederic Danis, linux-bluetooth

Hi Loic,

>> since building a kernel with its parent commit [4] works perfectly fine:
>>   commit: 7649faff1cfe4f76dabf78cd53d659d39f65b3c1
>>   Bluetooth: Remove useless rx_lock spinlock
>> 
>> The code change adding the runtime PM functions introduces an autosleep
>> delay but it's unclear from the commit description how the BT chipset is
>> supposed to get out of sleep afterwards.
> 
> Using out-of-band gpio/irq which are retrieved from the ACPI device.
> wakeup can be initiated by host or controller depending which one wants
> to transfer hci data.

I am actually curious if HCI remote wakeup might not work. So the HID mouse (I assume Classic here) will initiate a HCI Create Connection which will result in a HCI Connection Request. So that wakeup event needs to be allowed. I am curious if we might not set that correctly.

I would need to see the btmon trace from the controller initialization (start btmon before calling btattach). I am no longer sure that this has been tested with UART based controllers. On USB the remote wakeup works.

If the events for connection creation and remote wakeup set correctly, then it is some GPIO or Broadcom vendor specific thing.

Regards

Marcel


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
  2016-10-04  7:46 ` Loic Poulain
  2016-10-04  8:38   ` Marcel Holtmann
@ 2016-10-05 21:16   ` Jérôme de Bretagne
  2016-10-06  7:03     ` Jérôme de Bretagne
  1 sibling, 1 reply; 6+ messages in thread
From: Jérôme de Bretagne @ 2016-10-05 21:16 UTC (permalink / raw)
  To: Loic Poulain, Marcel Holtmann, linux-bluetooth; +Cc: Frederic Danis

[-- Attachment #1: Type: text/plain, Size: 1943 bytes --]

(trying a different email for Frederic as I got a delivery failure)


Hi Loic,

> Using out-of-band gpio/irq which are retrieved from the ACPI device.
> wakeup can be initiated by host or controller depending which one wants
> to transfer hci data.

Thanks for this explanation.

> 
> I'm going to retry on my T100 and let you know, but used to work.

Did you have chance to retry on a T100. Is it a T100TA model by the way, or
a T100 Chi (to make the distinction between the 2 bugzilla kernel entries)?

> 
> - What is the state of your interrupt counter ("host_wake") in 
> /proc/interrupts when you try to generate host wake-up events (using 
> mouse...).

Moving the mouse or clicking on it doesn't change the host_wake interrupt
counter in /proc/interrupts after the autosleep period. If I manually
trigger a new scan, then the counter starts increasing, but it freezes again
after the next autosleep.

> 
> - Could you confirm you don't meet the issue if you disable runtime-pm 
> via sysfs. You should find the device (BCM43*) as a child node of your 
> tty in /sys/class/tty*. (echo on > power/control).

I can confirm that with the following command, the mouse keeps working and
doesn't suddenly stop after a sleep period.

root@thinkpad8:/sys/class/tty/ttyS1/device/BCM2E55:00# echo on >
power/control


> I remember Frederic had some gpio/irq polarity issues:> 5cebdfea32b89911d4540440c1c2854a1a3d591e
> Bluetooth: hci_bcm: Fix IRQ polarity for T100
> Maybe the ACPI table is not correct on some devices.

I had seen that patch indeed. I'm attaching the ACPI table I had shared on
the list a long time ago for the ThinkPad Tablet 8. Is there anything that
looks suspicious in there and that you could link to a similar gpio/irq
polarity issue maybe?

If you think there is a good chance that this could be the issue as well, I
will try to build a similar patch for this ThinkPad product and share my
results.

Regards,
Jérôme

[-- Attachment #2: dsdt.dsl --]
[-- Type: text/x-dsl, Size: 552252 bytes --]

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20160212-64
 * Copyright (c) 2000 - 2016 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of dsdt.dat, Sun Feb 28 21:04:47 2016
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x0000F9BF (63935)
 *     Revision         0x02
 *     Checksum         0xD7
 *     OEM ID           "LENOVO"
 *     OEM Table ID     "TP-GY   "
 *     OEM Revision     0x00001260 (4704)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20120711 (538052369)
 */
DefinitionBlock ("dsdt.aml", "DSDT", 2, "LENOVO", "TP-GY   ", 0x00001260)
{

    External (_PR_.CPU0._PPC, UnknownObj)
    External (_SB_.PCI0.LPCB.TPM_.PTS_, MethodObj)    // 1 Arguments
    External (CFGD, UnknownObj)
    External (NDN3, MethodObj)    // 1 Arguments
    External (PDC0, UnknownObj)
    External (PDC1, UnknownObj)
    External (PDC2, UnknownObj)
    External (PDC3, UnknownObj)
    External (STR2, UnknownObj)

    Method (ADBG, 1, Serialized)
    {
        Return (Zero)
    }

    Name (SP3O, 0x2E)
    Name (IO4B, 0x0A20)
    Name (IO4L, 0x20)
    Name (SP1O, 0x4E)
    Name (PMBS, 0x0400)
    Name (SMIP, 0xB2)
    Name (GPBS, 0x0500)
    Name (APCB, 0xFEC00000)
    Name (APCL, 0x1000)
    Name (PFDR, 0xFED03034)
    Name (PMCB, 0xFED03000)
    Name (PCLK, 0xFED03060)
    Name (PUNB, 0xFED05000)
    Name (IBAS, 0xFED08000)
    Name (SRCB, 0xFED1C000)
    Name (SRCL, 0x1000)
    Name (HPTB, 0xFED00000)
    Name (MCHB, 0xFED14000)
    Name (MCHL, 0x4000)
    Name (EGPB, 0xFED19000)
    Name (EGPL, 0x1000)
    Name (DMIB, 0xFED18000)
    Name (DMIL, 0x1000)
    Name (IFPB, 0xFED14000)
    Name (IFPL, 0x1000)
    Name (PEBS, 0xE0000000)
    Name (PELN, 0x10000000)
    Name (FMBL, One)
    Name (FDTP, 0x02)
    Name (GCDD, One)
    Name (DSTA, 0x0A)
    Name (DSLO, 0x02)
    Name (DSLC, 0x03)
    Name (PITS, 0x10)
    Name (SBCS, 0x12)
    Name (SALS, 0x13)
    Name (LSSS, 0x2A)
    Name (PSSS, 0x2B)
    Name (SOOT, 0x35)
    Name (ESCS, 0x48)
    Name (SDGV, 0x1C)
    Name (ACPH, 0xDE)
    Name (ASSB, Zero)
    Name (AOTB, Zero)
    Name (AAXB, Zero)
    Name (PEHP, One)
    Name (SHPC, Zero)
    Name (PEPM, One)
    Name (PEER, One)
    Name (PECS, One)
    Name (ITKE, Zero)
    Name (FTBL, 0x04)
    OperationRegion (GNVS, SystemMemory, 0xB995AA98, 0x0339)
    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, 
        LIDS,   8, 
        PWRS,   8, 
        DBGS,   8, 
        THOF,   8, 
        ACT1,   8, 
        ACTT,   8, 
        PSVT,   8, 
        TC1V,   8, 
        TC2V,   8, 
        TSPV,   8, 
        CRTT,   8, 
        DTSE,   8, 
        DTS1,   8, 
        DTS2,   8, 
        DTSF,   8, 
        BNUM,   8, 
        B0SC,   8, 
        B1SC,   8, 
        B2SC,   8, 
        B0SS,   8, 
        B1SS,   8, 
        B2SS,   8, 
        Offset (0x28), 
        APIC,   8, 
        MPEN,   8, 
        PCP0,   8, 
        PCP1,   8, 
        PPCM,   8, 
        PPMF,   32, 
        Offset (0x32), 
        NATP,   8, 
        CMAP,   8, 
        CMBP,   8, 
        LPTP,   8, 
        FDCP,   8, 
        CMCP,   8, 
        CIRP,   8, 
        W381,   8, 
        NPCE,   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, 
        KSV0,   32, 
        KSV1,   8, 
        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, 
        DSTS,   8, 
        Offset (0x78), 
        TPMP,   8, 
        TPME,   8, 
        MORD,   8, 
        TCGP,   8, 
        PPRP,   32, 
        PPRQ,   8, 
        LPPR,   8, 
        GTF0,   56, 
        GTF2,   56, 
        IDEM,   8, 
        GTF1,   56, 
        Offset (0xAA), 
        ASLB,   32, 
        IBTT,   8, 
        IPAT,   8, 
        ITVF,   8, 
        ITVM,   8, 
        IPSC,   8, 
        IBLC,   8, 
        IBIA,   8, 
        ISSC,   8, 
        I409,   8, 
        I509,   8, 
        I609,   8, 
        I709,   8, 
        IDMM,   8, 
        IDMS,   8, 
        IF1E,   8, 
        HVCO,   8, 
        NXD1,   32, 
        NXD2,   32, 
        NXD3,   32, 
        NXD4,   32, 
        NXD5,   32, 
        NXD6,   32, 
        NXD7,   32, 
        NXD8,   32, 
        GSMI,   8, 
        PAVP,   8, 
        Offset (0xE1), 
        OSCC,   8, 
        NEXP,   8, 
        Offset (0xEB), 
        DSEN,   8, 
        ECON,   8, 
        GPIC,   8, 
        CTYP,   8, 
        L01C,   8, 
        VFN0,   8, 
        VFN1,   8, 
        Offset (0x100), 
        NVGA,   32, 
        NVHA,   32, 
        AMDA,   32, 
        DID6,   32, 
        DID7,   32, 
        DID8,   32, 
        Offset (0x14C), 
        USEL,   8, 
        PU1E,   8, 
        PU2E,   8, 
        LPE0,   32, 
        LPE1,   32, 
        LPE2,   32, 
        ACST,   8, 
        BTST,   8, 
        PFLV,   8, 
        Offset (0x15F), 
        AOAC,   8, 
        XHCI,   8, 
        PMEN,   8, 
        LPEE,   8, 
        ISPA,   32, 
        ISPD,   8, 
        PCIB,   32, 
        PCIT,   32, 
        D10A,   32, 
        D10L,   32, 
        D11A,   32, 
        D11L,   32, 
        P10A,   32, 
        P10L,   32, 
        P11A,   32, 
        P11L,   32, 
        P20A,   32, 
        P20L,   32, 
        P21A,   32, 
        P21L,   32, 
        U10A,   32, 
        U10L,   32, 
        U11A,   32, 
        U11L,   32, 
        U20A,   32, 
        U20L,   32, 
        U21A,   32, 
        U21L,   32, 
        SP0A,   32, 
        SP0L,   32, 
        SP1A,   32, 
        SP1L,   32, 
        D20A,   32, 
        D20L,   32, 
        D21A,   32, 
        D21L,   32, 
        I10A,   32, 
        I10L,   32, 
        I11A,   32, 
        I11L,   32, 
        I20A,   32, 
        I20L,   32, 
        I21A,   32, 
        I21L,   32, 
        I30A,   32, 
        I30L,   32, 
        I31A,   32, 
        I31L,   32, 
        I40A,   32, 
        I40L,   32, 
        I41A,   32, 
        I41L,   32, 
        I50A,   32, 
        I50L,   32, 
        I51A,   32, 
        I51L,   32, 
        I60A,   32, 
        I60L,   32, 
        I61A,   32, 
        I61L,   32, 
        I70A,   32, 
        I70L,   32, 
        I71A,   32, 
        I71L,   32, 
        EM0A,   32, 
        EM0L,   32, 
        EM1A,   32, 
        EM1L,   32, 
        SI0A,   32, 
        SI0L,   32, 
        SI1A,   32, 
        SI1L,   32, 
        SD0A,   32, 
        SD0L,   32, 
        SD1A,   32, 
        SD1L,   32, 
        MH0A,   32, 
        MH0L,   32, 
        MH1A,   32, 
        MH1L,   32, 
        OSSL,   8, 
        Offset (0x294), 
        DPTE,   8, 
        THM0,   8, 
        THM1,   8, 
        THM2,   8, 
        THM3,   8, 
        THM4,   8, 
        CHGR,   8, 
        DDSP,   8, 
        DSOC,   8, 
        DPSR,   8, 
        DPCT,   32, 
        DPPT,   32, 
        DGC0,   32, 
        DGP0,   32, 
        DGC1,   32, 
        DGP1,   32, 
        DGC2,   32, 
        DGP2,   32, 
        DGC3,   32, 
        DGP3,   32, 
        DGC4,   32, 
        DGP4,   32, 
        DLPM,   8, 
        DSC0,   32, 
        DSC1,   32, 
        DSC2,   32, 
        DSC3,   32, 
        DSC4,   32, 
        DDBG,   8, 
        LPOE,   32, 
        LPPS,   32, 
        LPST,   32, 
        LPPC,   32, 
        LPPF,   32, 
        DPME,   8, 
        BCSL,   8, 
        NFCS,   8, 
        Offset (0x2FC), 
        TPMA,   32, 
        TPML,   32, 
        ITSA,   8, 
        S0IX,   8, 
        SDMD,   8, 
        EMVR,   8, 
        BMBD,   32, 
        FSAS,   8, 
        BDID,   8, 
        FBID,   8, 
        OTGM,   8, 
        STEP,   8, 
        SOCS,   8, 
        AMTE,   8, 
        SCPE,   8, 
        SARE,   8, 
        PSSD,   8, 
        EDPV,   8, 
        DIDX,   32, 
        COMP,   8, 
        CAMI,   8, 
        COMB,   8
    }

    Scope (_SB)
    {
        Device (RTC)
        {
            Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */)  // _HID: Hardware ID
            Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
            {
                IO (Decode16,
                    0x0070,             // Range Minimum
                    0x0070,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
            })
        }

        Device (HPET)
        {
            Name (_HID, EisaId ("PNP0103") /* HPET System Timer */)  // _HID: Hardware ID
            Name (_UID, Zero)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED00000,         // Address Base
                        0x00000400,         // Address Length
                        )
                    Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
                    {
                        0x00000008,
                    }
                })
                Return (RBUF) /* \_SB_.HPET._CRS.RBUF */
            }
        }

        Name (PR00, Package (0x12)
        {
            Package (0x04)
            {
                0x0010FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0011FFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0012FFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0014FFFF, 
                Zero, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0015FFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0016FFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0017FFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                0x02, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                0x03, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x001DFFFF, 
                Zero, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                0x03, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                0x02, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKA, 
                Zero
            }
        })
        Name (AR00, Package (0x11)
        {
            Package (0x04)
            {
                0x0010FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0011FFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0012FFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0014FFFF, 
                Zero, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0015FFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0016FFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                0x02, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                0x03, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0018FFFF, 
                One, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001AFFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

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

            Package (0x04)
            {
                0x001EFFFF, 
                Zero, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                0x03, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                One, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x001EFFFF, 
                0x02, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                Zero, 
                0x10
            }
        })
        Name (PR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKB, 
                Zero
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR04, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x11
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x13
            }
        })
        Name (PR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKC, 
                Zero
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR05, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x12
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x10
            }
        })
        Name (PR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKB, 
                Zero
            }
        })
        Name (AR06, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x13
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x11
            }
        })
        Name (PR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKC, 
                Zero
            }
        })
        Name (AR07, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x10
            }, 

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x12
            }
        })
        Name (PR01, Package (0x10)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                LNKH, 
                Zero
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKG, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                LNKE, 
                Zero
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                LNKH, 
                Zero
            }, 

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

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                LNKB, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                LNKA, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                LNKC, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                LNKF, 
                Zero
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x03, 
                LNKG, 
                Zero
            }
        })
        Name (AR01, Package (0x10)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0xFFFF, 
                One, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x02, 
                Zero, 
                0x17
            }, 

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x16
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                One, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x02, 
                Zero, 
                0x14
            }, 

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                Zero, 
                0x17
            }, 

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

            Package (0x04)
            {
                0x0002FFFF, 
                One, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x02, 
                Zero, 
                0x11
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                0x03, 
                Zero, 
                0x10
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                Zero, 
                Zero, 
                0x13
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                One, 
                Zero, 
                0x12
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                Zero, 
                0x15
            }, 

            Package (0x04)
            {
                0x0003FFFF, 
                0x03, 
                Zero, 
                0x16
            }
        })
        Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,6,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, PRSD)
        Alias (PRSA, PRSE)
        Alias (PRSA, PRSF)
        Alias (PRSA, PRSG)
        Alias (PRSA, PRSH)
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */)  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID
            Name (_ADR, Zero)  // _ADR: Address
            Method (^BN00, 0, NotSerialized)
            {
                Return (Zero)
            }

            Method (_BBN, 0, NotSerialized)  // _BBN: BIOS Bus Number
            {
                Return (BN00 ())
            }

            Name (_UID, Zero)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
            {
                If (PICM)
                {
                    Return (AR00) /* \_SB_.AR00 */
                }

                Return (PR00) /* \_SB_.PR00 */
            }

            Device (VLVC)
            {
                Name (_ADR, Zero)  // _ADR: Address
                OperationRegion (HBUS, PCI_Config, Zero, 0xFF)
                Field (HBUS, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xD0), 
                    SMCR,   32, 
                    SMDR,   32, 
                    MCRX,   32
                }

                Method (RMBR, 2, Serialized)
                {
                    Local0 = ((Arg0 << 0x10) | (Arg1 << 0x08))
                    SMCR = (0x100000F0 | Local0)
                    Return (SMDR) /* \_SB_.PCI0.VLVC.SMDR */
                }

                Method (WMBR, 3, Serialized)
                {
                    SMDR = Arg2
                    Local0 = ((Arg0 << 0x10) | (Arg1 << 0x08))
                    SMCR = (0x110000F0 | Local0)
                }
            }

            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                If (TPMP)
                {
                    CreateDWordField (RES0, \_SB.PCI0._Y00._LEN, TPML)  // _LEN: Length
                    TPML = 0x1000
                }

                CreateDWordField (RES0, \_SB.PCI0._Y01._MIN, ISMN)  // _MIN: Minimum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y01._MAX, ISMX)  // _MAX: Maximum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y01._LEN, ISLN)  // _LEN: Length
                If ((ISPD == One))
                {
                    ISMN = ISPA /* \ISPA */
                    ISMX = (ISMN + ISLN) /* \_SB_.PCI0._CRS.ISLN */
                    ISMX -= One
                }
                Else
                {
                    ISMN = Zero
                    ISMX = Zero
                    ISLN = Zero
                }

                CreateDWordField (RES0, \_SB.PCI0._Y02._MIN, M1MN)  // _MIN: Minimum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y02._MAX, M1MX)  // _MAX: Maximum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y02._LEN, M1LN)  // _LEN: Length
                M1MN = (BMBD & 0xFF000000)
                M1MX = PCIT /* \PCIT */
                M1LN = ((M1MX - M1MN) + One)
                M1MX -= One
                CreateDWordField (RES0, \_SB.PCI0._Y03._MIN, GSMN)  // _MIN: Minimum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y03._MAX, GSMX)  // _MAX: Maximum Base Address
                CreateDWordField (RES0, \_SB.PCI0._Y03._LEN, GSLN)  // _LEN: Length
                GSMN = ^GFX0.GSTM /* \_SB_.PCI0.GFX0.GSTM */
                GSLN = (^GFX0.GUMA << 0x19)
                GSMX = (GSMN + GSLN) /* \_SB_.PCI0._CRS.GSLN */
                GSMX -= One
                Return (RES0) /* \_SB_.PCI0.RES0 */
            }

            Name (RES0, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                IO (Decode16,
                    0x0070,             // Range Minimum
                    0x0077,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x006F,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0070,             // Length
                    ,, , TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0078,             // Range Minimum
                    0x0CF7,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0C80,             // Length
                    ,, , TypeStatic)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0D00,             // Range Minimum
                    0xFFFF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0xF300,             // Length
                    ,, , TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C0000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E0000,         // Range Minimum
                    0x000FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x7A000000,         // Range Minimum
                    0x7A3FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00400000,         // Length
                    ,, _Y01, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x7C000000,         // Range Minimum
                    0x7FFFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x04000000,         // Length
                    ,, _Y03, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x80000000,         // Range Minimum
                    0xDFFFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x60000000,         // Length
                    ,, _Y02, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFED40000,         // Range Minimum
                    0xFED40FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00001000,         // Length
                    ,, _Y00, AddressRangeMemory, TypeStatic)
            })
            Name (GUID, ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */)
            Name (SUPP, Zero)
            Name (CTRL, Zero)
            Method (_OSC, 4, Serialized)  // _OSC: Operating System Capabilities
            {
                Local0 = Arg3
                CreateDWordField (Local0, Zero, CDW1)
                CreateDWordField (Local0, 0x04, CDW2)
                CreateDWordField (Local0, 0x08, CDW3)
                If (((Arg0 == GUID) && NEXP))
                {
                    SUPP = CDW2 /* \_SB_.PCI0._OSC.CDW2 */
                    CTRL = CDW3 /* \_SB_.PCI0._OSC.CDW3 */
                    If (~(CDW1 & One))
                    {
                        If ((CTRL & 0x02))
                        {
                            NHPG ()
                        }

                        If ((CTRL & 0x04))
                        {
                            NPME ()
                        }
                    }

                    If ((Arg1 != One))
                    {
                        CDW1 |= 0x08
                    }

                    If ((CDW3 != CTRL))
                    {
                        CDW1 |= 0x10
                    }

                    CDW3 = CTRL /* \_SB_.PCI0.CTRL */
                    OSCC = CTRL /* \_SB_.PCI0.CTRL */
                    Return (Local0)
                }
                Else
                {
                    CDW1 |= 0x04
                    Return (Local0)
                }
            }

            Device (LPCB)
            {
                Name (_ADR, 0x001F0000)  // _ADR: Address
                Scope (\_SB)
                {
                    OperationRegion (ILBR, SystemMemory, IBAS, 0x8C)
                    Field (ILBR, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x08), 
                        PARC,   8, 
                        PBRC,   8, 
                        PCRC,   8, 
                        PDRC,   8, 
                        PERC,   8, 
                        PFRC,   8, 
                        PGRC,   8, 
                        PHRC,   8, 
                        Offset (0x88), 
                            ,   3, 
                        UI3E,   1, 
                        UI4E,   1
                    }

                    Device (LNKA)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, One)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PARC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSA) /* \_SB_.PRSA */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLA, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLA, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PARC & 0x0F))
                            Return (RTLA) /* \_SB_.LNKA._CRS.RTLA */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PARC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PARC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKB)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x02)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PBRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSB) /* \_SB_.PRSB */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLB, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLB, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PBRC & 0x0F))
                            Return (RTLB) /* \_SB_.LNKB._CRS.RTLB */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PBRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PBRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKC)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x03)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PCRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSC) /* \_SB_.PRSC */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLC, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLC, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PCRC & 0x0F))
                            Return (RTLC) /* \_SB_.LNKC._CRS.RTLC */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PCRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PCRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKD)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x04)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PDRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSD) /* \_SB_.PRSD */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLD, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLD, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PDRC & 0x0F))
                            Return (RTLD) /* \_SB_.LNKD._CRS.RTLD */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PDRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PDRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKE)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x05)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PERC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSE) /* \_SB_.PRSE */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLE, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLE, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PERC & 0x0F))
                            Return (RTLE) /* \_SB_.LNKE._CRS.RTLE */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PERC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PERC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKF)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x06)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PFRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSF) /* \_SB_.PRSF */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLF, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLF, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PFRC & 0x0F))
                            Return (RTLF) /* \_SB_.LNKF._CRS.RTLF */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PFRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PFRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKG)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x07)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PGRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSG) /* \_SB_.PRSG */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLG, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLG, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PGRC & 0x0F))
                            Return (RTLG) /* \_SB_.LNKG._CRS.RTLG */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PGRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PGRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }

                    Device (LNKH)
                    {
                        Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
                        Name (_UID, 0x08)  // _UID: Unique ID
                        Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                        {
                            PHRC |= 0x80
                        }

                        Method (_PRS, 0, Serialized)  // _PRS: Possible Resource Settings
                        {
                            Return (PRSH) /* \_SB_.PRSH */
                        }

                        Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                        {
                            Name (RTLH, ResourceTemplate ()
                            {
                                IRQ (Level, ActiveLow, Shared, )
                                    {}
                            })
                            CreateWordField (RTLH, One, IRQ0)
                            IRQ0 = Zero
                            IRQ0 = (One << (PHRC & 0x0F))
                            Return (RTLH) /* \_SB_.LNKH._CRS.RTLH */
                        }

                        Method (_SRS, 1, Serialized)  // _SRS: Set Resource Settings
                        {
                            CreateWordField (Arg0, One, IRQ0)
                            FindSetRightBit (IRQ0, Local0)
                            Local0--
                            PHRC = Local0
                        }

                        Method (_STA, 0, Serialized)  // _STA: Status
                        {
                            If ((PHRC & 0x80))
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }
                    }
                }

                OperationRegion (LPC0, PCI_Config, Zero, 0xC0)
                Field (LPC0, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x08), 
                    SRID,   8, 
                    Offset (0x80), 
                    C1EN,   1, 
                    Offset (0x84)
                }

                Device (FWHD)
                {
                    Name (_HID, EisaId ("INT0800") /* Intel 82802 Firmware Hub Device */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        Memory32Fixed (ReadOnly,
                            0xFF000000,         // Address Base
                            0x01000000,         // Address Length
                            )
                    })
                }

                Device (IPIC)
                {
                    Name (_HID, EisaId ("PNP0000") /* 8259-compatible Programmable Interrupt Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        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 (LDRC)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, 0x02)  // _UID: Unique ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        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
                            0x10,               // 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
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x0400,             // Range Minimum
                            0x0400,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0xFF,               // Length
                            )
                        IO (Decode16,
                            0x0600,             // Range Minimum
                            0x0600,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x164E,             // Range Minimum
                            0x164E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                    })
                }

                Device (TIMR)
                {
                    Name (_HID, EisaId ("PNP0100") /* PC-class System Timer */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        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 (IUR3)
                {
                    Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */)  // _HID: Hardware ID
                    Name (_UID, One)  // _UID: Unique ID
                    Method (_STA, 0, Serialized)  // _STA: Status
                    {
                        If ((USEL == Zero))
                        {
                            If ((PU1E == One))
                            {
                                UI3E = One
                                UI4E = One
                                C1EN = One
                                Return (0x0F)
                            }
                        }

                        Return (Zero)
                    }

                    Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                    {
                        UI3E = Zero
                        UI4E = Zero
                        C1EN = Zero
                    }

                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x03F8,             // Range Minimum
                                0x03F8,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {3}
                        })
                        Name (BUF1, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x03F8,             // Range Minimum
                                0x03F8,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {4}
                        })
                        If ((SRID <= 0x04))
                        {
                            Return (BUF0) /* \_SB_.PCI0.LPCB.IUR3._CRS.BUF0 */
                        }
                        Else
                        {
                            Return (BUF1) /* \_SB_.PCI0.LPCB.IUR3._CRS.BUF1 */
                        }
                    }
                }

                OperationRegion (PKBS, SystemIO, 0x60, 0x05)
                Field (PKBS, ByteAcc, Lock, Preserve)
                {
                    PKBD,   8, 
                    Offset (0x02), 
                    Offset (0x03), 
                    Offset (0x04), 
                    PKBC,   8
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */)  // _HID: Hardware ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (((PKBD == 0xFF) & (PKBC == 0xFF)))
                        {
                            Return (Zero)
                        }

                        Return (0x0F)
                    }

                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        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}
                    })
                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            FixedIO (
                                0x0060,             // Address
                                0x01,               // Length
                                )
                            FixedIO (
                                0x0064,             // Address
                                0x01,               // Length
                                )
                            IRQNoFlags ()
                                {1}
                        }
                        EndDependentFn ()
                    })
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */)  // _HID: Hardware ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (((PKBD == 0xFF) & (PKBC == 0xFF)))
                        {
                            Return (Zero)
                        }

                        Return (0x0F)
                    }

                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {12}
                    })
                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IRQNoFlags ()
                                {12}
                        }
                        EndDependentFn ()
                    })
                }
            }
        }
    }

    Scope (\)
    {
        OperationRegion (PMIO, SystemIO, PMBS, 0x46)
        Field (PMIO, ByteAcc, NoLock, Preserve)
        {
            Offset (0x01), 
            PWBS,   1, 
            Offset (0x20), 
                ,   13, 
            PMEB,   1, 
            Offset (0x30), 
                ,   4, 
            SLPE,   1, 
            Offset (0x34), 
                ,   4, 
            SLPS,   1, 
            Offset (0x35), 
            PM1S,   1, 
            Offset (0x42), 
                ,   1, 
            GPEC,   1
        }

        Field (PMIO, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0x20), 
                ,   4, 
            PSCI,   1, 
            SCIS,   1
        }

        OperationRegion (PMCR, SystemMemory, PFDR, 0x04)
        Field (PMCR, DWordAcc, Lock, Preserve)
        {
            L10D,   1, 
            L11D,   1, 
            L12D,   1, 
            L13D,   1, 
            L14D,   1, 
            L15D,   1, 
            Offset (0x01), 
            SD1D,   1, 
            SD2D,   1, 
            SD3D,   1, 
            HSID,   1, 
                ,   1, 
            LPED,   1, 
            OTGD,   1, 
            Offset (0x02), 
                ,   1, 
                ,   1, 
                ,   1, 
                ,   1, 
            RP1D,   1, 
            RP2D,   1, 
            RP3D,   1, 
            RP4D,   1, 
            L20D,   1, 
            L21D,   1, 
            L22D,   1, 
            L23D,   1, 
            L24D,   1, 
            L25D,   1, 
            L26D,   1, 
            L27D,   1
        }

        OperationRegion (CLKC, SystemMemory, PCLK, 0x18)
        Field (CLKC, DWordAcc, Lock, Preserve)
        {
            CKC0,   2, 
            CKF0,   1, 
            Offset (0x04), 
            CKC1,   2, 
            CKF1,   1, 
            Offset (0x08), 
            CKC2,   2, 
            CKF2,   1, 
            Offset (0x0C), 
            CKC3,   2, 
            CKF3,   1, 
            Offset (0x10), 
            CKC4,   2, 
            CKF4,   1, 
            Offset (0x14), 
            CKC5,   2, 
            CKF5,   1, 
            Offset (0x18)
        }
    }

    Scope (_SB)
    {
        Device (LPEA)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F28" /* Intel SST Audio DSP */)  // _HID: Hardware ID
            Name (_CID, "80860F28" /* Intel SST Audio DSP */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) Low Power Audio Controller - 80860F28")  // _DDN: DOS Device Name
            Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                I2C2, 
                ^I2C2.RTE2
            })
            Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
            {
                PLPE
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((LPEE == 0x02) && (LPED == Zero)))
                {
                    Return (0x0F)
                }

                Return (Zero)
            }

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
            }

            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0xFE400000,         // Address Base
                    0x00200000,         // Address Length
                    _Y04)
                Memory32Fixed (ReadWrite,
                    0xFE830000,         // Address Base
                    0x00001000,         // Address Length
                    _Y05)
                Memory32Fixed (ReadWrite,
                    0x55AA55AA,         // Address Base
                    0x00100000,         // Address Length
                    _Y06)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000018,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000019,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001A,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001B,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001C,
                }
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000001D,
                }
                GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullNone, 0x0000,
                    "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x001C
                    }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.LPEA._Y04._BAS, B0BA)  // _BAS: Base Address
                B0BA = LPE0 /* \LPE0 */
                CreateDWordField (RBUF, \_SB.LPEA._Y05._BAS, B1BA)  // _BAS: Base Address
                B1BA = LPE1 /* \LPE1 */
                CreateDWordField (RBUF, \_SB.LPEA._Y06._BAS, B2BA)  // _BAS: Base Address
                B2BA = LPE2 /* \LPE2 */
                Return (RBUF) /* \_SB_.LPEA.RBUF */
            }

            OperationRegion (KEYS, SystemMemory, LPE1, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            PowerResource (PLPE, 0x05, 0x0000)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (One)
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                    PSAT &= 0xFFFFFFFC
                    PSAT |= Zero
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                    PSAT |= 0x03
                    PSAT |= Zero
                }
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Device (XHC1)
        {
            Name (_ADR, 0x00140000)  // _ADR: Address
            Name (_DDN, "Baytrail XHCI controller (CCG core/Host only)")  // _DDN: DOS Device Name
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_STR, Unicode ("Baytrail XHCI controller (CCG core/Host only)"))  // _STR: Description String
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Name (MSET, Zero)
            Name (DDST, Zero)
            OperationRegion (PCSL, SystemMemory, 0xE00A0074, One)
            Field (PCSL, ByteAcc, NoLock, WriteAsZeros)
            {
                PMPS,   2
            }

            OperationRegion (PCSH, SystemMemory, 0xE00A0075, One)
            Field (PCSH, ByteAcc, NoLock, Preserve)
            {
                PMCH,   8
            }

            OperationRegion (XMSE, SystemMemory, 0xE00A0000, 0x0100)
            Field (XMSE, AnyAcc, NoLock, Preserve)
            {
                Offset (0x04), 
                    ,   1, 
                CMSE,   1, 
                Offset (0x10), 
                BAR0,   32, 
                Offset (0x74), 
                PMCS,   16, 
                Offset (0xB0), 
                    ,   13, 
                PHY2,   2, 
                    ,   13, 
                USHP,   1, 
                    ,   1, 
                SCFG,   1
            }

            Method (PWOF, 0, Serialized)
            {
                P8XH (Zero, 0xAA)
                SCFG = One
            }

            Method (PWON, 0, Serialized)
            {
                P8XH (Zero, 0xBB)
                SCFG = Zero
            }

            OperationRegion (XPRT, SystemMemory, (PEBS + 0x000A0000), 0x0100)
            Field (XPRT, AnyAcc, NoLock, Preserve)
            {
                DVID,   16, 
                Offset (0x74), 
                D0D3,   2, 
                Offset (0x75), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1, 
                Offset (0xB0), 
                    ,   13, 
                MB13,   1, 
                MB14,   1, 
                Offset (0xB4), 
                Offset (0xD0), 
                PR2,    32, 
                PR2M,   32, 
                PR3,    32, 
                PR3M,   32
            }

            OperationRegion (XHCP, SystemMemory, (PEBS + 0x000A0000), 0x0100)
            Field (XHCP, AnyAcc, Lock, Preserve)
            {
                Offset (0x04), 
                PDBM,   16, 
                Offset (0x10), 
                MEMB,   32
            }

            Name (PCHS, Zero)
            Name (SRMB, 0x90800000)
            Method (_PS0, 0, Serialized)  // _PS0: Power State 0
            {
                ADBG ("XHC D0")
                P8XH (Zero, 0xA0)
                If ((DVID == 0xFFFF))
                {
                    Return (Zero)
                }

                SRMB = (MEMB & 0xFFFFFFF0)
                Local2 = MEMB /* \_SB_.PCI0.XHC1.MEMB */
                Local1 = PDBM /* \_SB_.PCI0.XHC1.PDBM */
                PDBM &= 0xFFFFFFFFFFFFFFF9
                MEMB = SRMB /* \_SB_.PCI0.XHC1.SRMB */
                PDBM |= 0x02
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                    Offset (0x510), 
                    R510,   32, 
                    Offset (0x520), 
                    R520,   32, 
                    Offset (0x530), 
                    R530,   32, 
                    Offset (0x540), 
                    R540,   32, 
                    Offset (0x8058), 
                    Offset (0x8059), 
                    CDES,   1, 
                    Offset (0x805A), 
                    STSP,   1, 
                        ,   3, 
                    CFEC,   1, 
                    Offset (0x8060), 
                        ,   25, 
                    EPRE,   1, 
                    Offset (0x8094), 
                        ,   14, 
                    CMMF,   1, 
                        ,   6, 
                    ESSP,   1, 
                        ,   1, 
                    DAPA,   1, 
                    Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                    Offset (0x80FC), 
                        ,   25, 
                    PPL1,   1, 
                    Offset (0x8110), 
                        ,   1, 
                    CRNC,   1, 
                    Offset (0x8111), 
                    EPTD,   1, 
                        ,   2, 
                    HTPP,   1, 
                        ,   8, 
                    TRMC,   1, 
                    Offset (0x8140), 
                    MIDS,   12, 
                    AWPC,   12, 
                    EIHR,   8, 
                        ,   6, 
                    SSII,   1, 
                    SSIO,   1, 
                    HSII,   1, 
                    Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                    Offset (0x8164), 
                    ETBC,   1, 
                    ERBC,   1, 
                    ESAI,   1, 
                    ETMA,   1, 
                    EOAI,   1, 
                    EIAI,   1, 
                    TTEA,   1, 
                    ECMA,   1, 
                    Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1, 
                    Offset (0x8188), 
                    Offset (0x818B), 
                    FIDD,   1, 
                        ,   1, 
                    FTSS,   1
                }

                Local3 = D0D3 /* \_SB_.PCI0.XHC1.D0D3 */
                If ((Local3 == 0x03))
                {
                    D0D3 = Zero
                    Sleep (0x0A)
                }

                If ((PCHS == 0x02))
                {
                    MB13 = Zero
                    MB14 = Zero
                    CLK0 = Zero
                    CLK1 = Zero
                }

                CLK2 = One
                CDES = One
                STSP = One
                CFEC = Zero
                EPRE = One
                DAPA = One
                ESSP = One
                CMMF = One
                PPL1 = One
                CRNC = Zero
                EPTD = Zero
                HTPP = One
                TRMC = One
                MIDS = 0x3C
                AWPC = 0x0F
                EIHR = 0xFF
                SSII = One
                SSIO = One
                HSII = One
                ERBC = One
                ETBC = One
                ESAI = One
                ETMA = One
                EOAI = One
                EIAI = One
                TTEA = One
                ECMA = One
                FIDD = One
                FTSS = One
                USHP = Zero
                If ((PCHS == 0x02))
                {
                    While (((((R510 & 0x03FB) == 0x02E0) || ((R520 & 
                        0x03FB) == 0x02E0)) || (((R530 & 0x03FB) == 0x02E0) || ((R540 & 
                        0x03FB) == 0x02E0))))
                    {
                        Stall (0x32)
                    }

                    Local0 = R510 /* \_SB_.PCI0.XHC1._PS0.R510 */
                    If (((Local0 & 0x000203FB) == 0x02A0))
                    {
                        R510 = (Local0 | 0x80000000)
                        While (((R510 & 0x00180000) == Zero))
                        {
                            Stall (0x32)
                        }

                        Local0 = (R510 & 0xFFFFFFFFFFFFFFFD)
                        R510 = (Local0 | 0x00FE0000)
                    }

                    Local0 = R520 /* \_SB_.PCI0.XHC1._PS0.R520 */
                    If (((Local0 & 0x000203FB) == 0x02A0))
                    {
                        R520 = (Local0 | 0x80000000)
                        While (((R520 & 0x00180000) == Zero))
                        {
                            Stall (0x32)
                        }

                        Local0 = (R520 & 0xFFFFFFFFFFFFFFFD)
                        R520 = (Local0 | 0x00FE0000)
                    }

                    Local0 = R530 /* \_SB_.PCI0.XHC1._PS0.R530 */
                    If (((Local0 & 0x000203FB) == 0x02A0))
                    {
                        R530 = (Local0 | 0x80000000)
                        While (((R530 & 0x00180000) == Zero))
                        {
                            Stall (0x32)
                        }

                        Local0 = (R530 & 0xFFFFFFFFFFFFFFFD)
                        R530 = (Local0 | 0x00FE0000)
                    }

                    Local0 = R540 /* \_SB_.PCI0.XHC1._PS0.R540 */
                    If (((Local0 & 0x000203FB) == 0x02A0))
                    {
                        R540 = (Local0 | 0x80000000)
                        While (((R540 & 0x00180000) == Zero))
                        {
                            Stall (0x32)
                        }

                        Local0 = (R540 & 0xFFFFFFFFFFFFFFFD)
                        R540 = (Local0 | 0x00FE0000)
                    }

                    AX15 = One
                }

                If ((Local3 == 0x03))
                {
                    ADBG ("PS0->D3")
                    P8XH (Zero, 0xA1)
                    D0D3 = 0x03
                }
                Else
                {
                    P8XH (Zero, 0xA2)
                }

                PDBM &= 0xFFFFFFFFFFFFFFFD
                MEMB = Local2
                PDBM = Local1
            }

            Method (_PS3, 0, Serialized)  // _PS3: Power State 3
            {
                ADBG ("XHC D3")
                P8XH (Zero, 0xB0)
                If ((DVID == 0xFFFF))
                {
                    Return (Zero)
                }

                SRMB = (MEMB & 0xFFFFFFF0)
                Local2 = MEMB /* \_SB_.PCI0.XHC1.MEMB */
                Local1 = PDBM /* \_SB_.PCI0.XHC1.PDBM */
                PDBM &= 0xFFFFFFFFFFFFFFF9
                MEMB = SRMB /* \_SB_.PCI0.XHC1.SRMB */
                PDBM |= 0x02
                OperationRegion (MCA1, SystemMemory, SRMB, 0x9000)
                Field (MCA1, DWordAcc, Lock, Preserve)
                {
                    Offset (0x80E0), 
                        ,   15, 
                    AX15,   1, 
                    Offset (0x8154), 
                        ,   31, 
                    CLK2,   1, 
                    Offset (0x816C), 
                        ,   2, 
                    CLK0,   1, 
                        ,   11, 
                    CLK1,   1, 
                    Offset (0x8170)
                }

                Local3 = D0D3 /* \_SB_.PCI0.XHC1.D0D3 */
                If ((Local3 == 0x03))
                {
                    D0D3 = Zero
                }

                If ((PCHS == 0x02))
                {
                    MB13 = One
                    MB14 = One
                    CLK0 = One
                    CLK1 = One
                }

                CLK2 = Zero
                If ((PCHS == 0x02))
                {
                    AX15 = Zero
                }

                If ((PMEE == One))
                {
                    USHP = One
                }

                If ((Local3 == 0x03))
                {
                    ADBG ("PS3->D3")
                    P8XH (Zero, 0xB1)
                    D0D3 = 0x03
                }
                Else
                {
                    P8XH (Zero, 0xB2)
                }

                PDBM &= 0xFFFFFFFFFFFFFFFD
                MEMB = Local2
                PDBM = Local1
            }

            Method (_DSW, 3, NotSerialized)  // _DSW: Device Sleep Wake
            {
            }

            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
            {
                Return (Zero)
            }

            Method (_PR3, 0, NotSerialized)  // _PR3: Power Resources for D3hot
            {
                Return (Package (0x01)
                {
                    USBC
                })
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((XHCI != Zero))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Device (RHUB)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (SSP1)
                {
                    Name (_ADR, 0x07)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x06, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.SSP1._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x4B, 0x19, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* K....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.SSP1._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM11")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM12")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM13")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("SSP1 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("SSP1 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (Zero)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }

                Device (HS01)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0x06, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HS01._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x4B, 0x19, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* K....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HS01._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM21")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM22")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM23")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HS01 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HS01 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (Zero)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }

                Device (HS02)
                {
                    Name (_ADR, 0x02)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            Zero, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (UPCR, Package (0x04)
                        {
                            0xFF, 
                            Zero, 
                            Zero, 
                            Zero
                        })
                        If ((BDID == 0x02))
                        {
                            Return (UPCR) /* \_SB_.PCI0.XHC1.RHUB.HS02._UPC.UPCR */
                        }
                        Else
                        {
                            Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HS02._UPC.UPCP */
                        }
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x43, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* C....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Name (PLDR, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* A....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        If ((BDID == 0x02))
                        {
                            Return (PLDR) /* \_SB_.PCI0.XHC1.RHUB.HS02._PLD.PLDR */
                        }
                        Else
                        {
                            Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HS02._PLD.PLDP */
                        }
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM31")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM32")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM33")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HS02 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HS02 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (Zero)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }

                Device (HS03)
                {
                    Name (_ADR, 0x03)  // _ADR: Address
                    Name (_DEP, Package (0x01)  // _DEP: Dependencies
                    {
                        GPO2
                    })
                    Name (PSTS, Zero)
                    PowerResource (WWPR, 0x00, 0x0000)
                    {
                        Name (_DEP, Package (0x01)  // _DEP: Dependencies
                        {
                            GPO2
                        })
                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            If ((\_SB.GPO2.AVBL == One))
                            {
                                Return (\_SB.GPO2.WWD3)
                            }

                            Return (Zero)
                        }

                        Method (_ON, 0, NotSerialized)  // _ON_: Power On
                        {
                            If ((PSTS == Zero))
                            {
                                If ((\_SB.GPO2.AVBL == One))
                                {
                                    Sleep (0x0200)
                                    \_SB.GPO2.WWP3 = One
                                    Sleep (0x50)
                                    \_SB.GPO2.WWD3 = One
                                    PSTS = One
                                }
                            }
                        }

                        Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                        {
                            If ((\_SB.GPO2.AVBL == One))
                            {
                                \_SB.GPO2.WWD3 = Zero
                                Sleep (0x0A)
                                \_SB.GPO2.WWP3 = Zero
                                PSTS = Zero
                            }
                        }
                    }

                    Name (_S0W, 0x02)  // _S0W: S0 Device Wake State
                    Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
                    {
                        WWPR
                    })
                    Name (_PR2, Package (0x01)  // _PR2: Power Resources for D2
                    {
                        WWPR
                    })
                    Name (_PR3, Package (0x01)  // _PR3: Power Resources for D3hot
                    {
                        WWPR
                    })
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HS03._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 0....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HS03._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM41")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM42")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM43")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HS03 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HS03 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (Zero)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }

                    Device (MODM)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                        Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
                        {
                            WWPR
                        })
                        Name (_PR2, Package (0x01)  // _PR2: Power Resources for D2
                        {
                            WWPR
                        })
                        Name (_PR3, Package (0x01)  // _PR3: Power Resources for D3hot
                        {
                            WWPR
                        })
                    }
                }

                Device (HS04)
                {
                    Name (_ADR, 0x04)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HS04._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 0....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HS04._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM51")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM52")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM53")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HS04 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HS04 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (Zero)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }

                Device (HSC1)
                {
                    Name (_ADR, 0x05)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HSC1._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 0....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HSC1._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM61")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM62")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM63")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HSIC1 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HSIC1 DSM")
                                    Debug = "Method _DSM Function Index2"
                                    Return (One)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }

                Device (HSC2)
                {
                    Name (_ADR, 0x06)  // _ADR: Address
                    Method (_UPC, 0, Serialized)  // _UPC: USB Port Capabilities
                    {
                        Name (UPCP, Package (0x04)
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Return (UPCP) /* \_SB_.PCI0.XHC1.RHUB.HSC2._UPC.UPCP */
                    }

                    Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                    {
                        Name (PLDP, Package (0x01)
                        {
                            Buffer (0x14)
                            {
                                /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                /* 0008 */  0x30, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* 0....... */
                                /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                            }
                        })
                        Return (PLDP) /* \_SB_.PCI0.XHC1.RHUB.HSC2._PLD.PLDP */
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        ADBG ("DSM71")
                        If ((Arg0 == ToUUID ("ce2ee385-00e6-48cb-9f05-2edb927c4899") /* USB Controller */))
                        {
                            ADBG ("DSM72")
                            If ((Arg1 == Zero))
                            {
                                ADBG ("DSM73")
                                If ((Arg2 == Zero))
                                {
                                    ADBG ("HSIC2 QUERY")
                                    Debug = "Method _DSM Function Query"
                                    Return (Buffer (One)
                                    {
                                         0x05                                             /* . */
                                    })
                                }

                                If ((Arg2 == 0x02))
                                {
                                    ADBG ("HSIC2 DSM called")
                                    Debug = "Method _DSM Function Index2"
                                    Return (One)
                                }
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Return (Zero)
                    }
                }
            }
        }

        Device (OTG1)
        {
            Name (_ADR, 0x00160000)  // _ADR: Address
            Name (_DDN, "Baytrail XHCI controller (Synopsys core/OTG)")  // _DDN: DOS Device Name
            Name (_STR, Unicode ("Baytrail XHCI controller (Synopsys core/OTG)"))  // _STR: Description String
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            OperationRegion (PMEB, PCI_Config, 0x84, 0x04)
            Field (PMEB, WordAcc, NoLock, Preserve)
            {
                Offset (0x01), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1
            }

            OperationRegion (GENR, PCI_Config, 0xA0, 0x10)
            Field (GENR, WordAcc, NoLock, Preserve)
            {
                    ,   18, 
                CPME,   1, 
                U2EN,   1, 
                U3EN,   1
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                CPME = One
                U2EN = One
                U3EN = One
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                CPME = Zero
                U2EN = Zero
                U3EN = Zero
            }

            Method (_DSW, 3, NotSerialized)  // _DSW: Device Sleep Wake
            {
            }

            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
            {
                Return (Zero)
            }

            Method (_PR3, 0, NotSerialized)  // _PR3: Power Resources for D3hot
            {
                Return (Package (0x01)
                {
                    USBC
                })
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((OTGM != Zero))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }
        }

        Scope (\_SB)
        {
            PowerResource (USBC, 0x00, 0x0000)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                }
            }
        }

        Device (EHC1)
        {
            Name (_ADR, 0x001D0000)  // _ADR: Address
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            OperationRegion (PWKE, PCI_Config, 0x62, 0x04)
            Field (PWKE, DWordAcc, NoLock, Preserve)
            {
                    ,   1, 
                PWUC,   8
            }

            Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
            {
                If (Arg0)
                {
                    PWUC = Ones
                }
                Else
                {
                    PWUC = Zero
                }
            }

            Device (HUBN)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (PR01)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                    {
                        0xFF, 
                        Zero, 
                        Zero, 
                        Zero
                    })
                    Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                    {
                        ToPLD (
                            PLD_Revision       = 0x1,
                            PLD_IgnoreColor    = 0x1,
                            PLD_Red            = 0x0,
                            PLD_Green          = 0x0,
                            PLD_Blue           = 0x0,
                            PLD_Width          = 0x0,
                            PLD_Height         = 0x0,
                            PLD_UserVisible    = 0x0,
                            PLD_Dock           = 0x0,
                            PLD_Lid            = 0x0,
                            PLD_Panel          = "UNKNOWN",
                            PLD_VerticalPosition = "UPPER",
                            PLD_HorizontalPosition = "LEFT",
                            PLD_Shape          = "UNKNOWN",
                            PLD_GroupOrientation = 0x0,
                            PLD_GroupToken     = 0x0,
                            PLD_GroupPosition  = 0x0,
                            PLD_Bay            = 0x0,
                            PLD_Ejectable      = 0x0,
                            PLD_EjectRequired  = 0x0,
                            PLD_CabinetNumber  = 0x0,
                            PLD_CardCageNumber = 0x0,
                            PLD_Reference      = 0x0,
                            PLD_Rotation       = 0x0,
                            PLD_Order          = 0x0)

                    })
                    Device (PR11)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "FRONT",
                                PLD_VerticalPosition = "",
                                PLD_HorizontalPosition = "LEFT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                    }

                    Device (PR12)
                    {
                        Name (_ADR, 0x02)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "FRONT",
                                PLD_VerticalPosition = "",
                                PLD_HorizontalPosition = "CENTER",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                    }

                    Device (PR13)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "FRONT",
                                PLD_VerticalPosition = "",
                                PLD_HorizontalPosition = "CENTER",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                    }

                    Device (PR14)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "FRONT",
                                PLD_VerticalPosition = "",
                                PLD_HorizontalPosition = "RIGHT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                        Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                        {
                            Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                            If ((Arg0 == ToUUID ("a5fc708f-8775-4ba6-bd0c-ba90a1ec72f8")))
                            {
                                While (One)
                                {
                                    _T_0 = ToInteger (Arg2)
                                    If ((_T_0 == Zero))
                                    {
                                        If ((Arg1 == One))
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x07                                             /* . */
                                            })
                                        }
                                        Else
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x00                                             /* . */
                                            })
                                        }
                                    }
                                    ElseIf ((_T_0 == One))
                                    {
                                        If ((SDGV == 0xFF))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                            Return (One)
                                        }
                                    }
                                    ElseIf ((_T_0 == 0x02))
                                    {
                                        Return (SDGV) /* \SDGV */
                                    }

                                    Break
                                }
                            }

                            Return (Zero)
                        }
                    }

                    Device (PR15)
                    {
                        Name (_ADR, 0x05)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "UNKNOWN",
                                PLD_VerticalPosition = "LOWER",
                                PLD_HorizontalPosition = "RIGHT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                        Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                        {
                            Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                            If ((Arg0 == ToUUID ("a5fc708f-8775-4ba6-bd0c-ba90a1ec72f8")))
                            {
                                While (One)
                                {
                                    _T_0 = ToInteger (Arg2)
                                    If ((_T_0 == Zero))
                                    {
                                        If ((Arg1 == One))
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x07                                             /* . */
                                            })
                                        }
                                        Else
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x00                                             /* . */
                                            })
                                        }
                                    }
                                    ElseIf ((_T_0 == One))
                                    {
                                        If ((SDGV == 0xFF))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                            Return (One)
                                        }
                                    }
                                    ElseIf ((_T_0 == 0x02))
                                    {
                                        Return (SDGV) /* \SDGV */
                                    }

                                    Break
                                }
                            }

                            Return (Zero)
                        }
                    }

                    Device (PR16)
                    {
                        Name (_ADR, 0x06)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "UNKNOWN",
                                PLD_VerticalPosition = "LOWER",
                                PLD_HorizontalPosition = "RIGHT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                        Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                        {
                            Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                            If ((Arg0 == ToUUID ("a5fc708f-8775-4ba6-bd0c-ba90a1ec72f8")))
                            {
                                While (One)
                                {
                                    _T_0 = ToInteger (Arg2)
                                    If ((_T_0 == Zero))
                                    {
                                        If ((Arg1 == One))
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x07                                             /* . */
                                            })
                                        }
                                        Else
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x00                                             /* . */
                                            })
                                        }
                                    }
                                    ElseIf ((_T_0 == One))
                                    {
                                        If ((SDGV == 0xFF))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                            Return (One)
                                        }
                                    }
                                    ElseIf ((_T_0 == 0x02))
                                    {
                                        Return (SDGV) /* \SDGV */
                                    }

                                    Break
                                }
                            }

                            Return (Zero)
                        }
                    }

                    Device (PR17)
                    {
                        Name (_ADR, 0x07)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "UNKNOWN",
                                PLD_VerticalPosition = "LOWER",
                                PLD_HorizontalPosition = "RIGHT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                        Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                        {
                            Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                            If ((Arg0 == ToUUID ("a5fc708f-8775-4ba6-bd0c-ba90a1ec72f8")))
                            {
                                While (One)
                                {
                                    _T_0 = ToInteger (Arg2)
                                    If ((_T_0 == Zero))
                                    {
                                        If ((Arg1 == One))
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x07                                             /* . */
                                            })
                                        }
                                        Else
                                        {
                                            Return (Buffer (One)
                                            {
                                                 0x00                                             /* . */
                                            })
                                        }
                                    }
                                    ElseIf ((_T_0 == One))
                                    {
                                        If ((SDGV == 0xFF))
                                        {
                                            Return (Zero)
                                        }
                                        Else
                                        {
                                            Return (One)
                                        }
                                    }
                                    ElseIf ((_T_0 == 0x02))
                                    {
                                        Return (SDGV) /* \SDGV */
                                    }

                                    Break
                                }
                            }

                            Return (Zero)
                        }
                    }

                    Device (PR18)
                    {
                        Name (_ADR, 0x08)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0xFF, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            ToPLD (
                                PLD_Revision       = 0x1,
                                PLD_IgnoreColor    = 0x1,
                                PLD_Red            = 0x0,
                                PLD_Green          = 0x0,
                                PLD_Blue           = 0x0,
                                PLD_Width          = 0x0,
                                PLD_Height         = 0x0,
                                PLD_UserVisible    = 0x1,
                                PLD_Dock           = 0x0,
                                PLD_Lid            = 0x0,
                                PLD_Panel          = "UNKNOWN",
                                PLD_VerticalPosition = "LOWER",
                                PLD_HorizontalPosition = "RIGHT",
                                PLD_Shape          = "UNKNOWN",
                                PLD_GroupOrientation = 0x0,
                                PLD_GroupToken     = 0x0,
                                PLD_GroupPosition  = 0x0,
                                PLD_Bay            = 0x0,
                                PLD_Ejectable      = 0x0,
                                PLD_EjectRequired  = 0x0,
                                PLD_CabinetNumber  = 0x0,
                                PLD_CardCageNumber = 0x0,
                                PLD_Reference      = 0x0,
                                PLD_Rotation       = 0x0,
                                PLD_Order          = 0x0)

                        })
                    }
                }
            }

            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            OperationRegion (USBR, PCI_Config, 0x54, 0x04)
            Field (USBR, WordAcc, NoLock, Preserve)
            {
                Offset (0x01), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((XHCI == Zero))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_DSW, 3, NotSerialized)  // _DSW: Device Sleep Wake
            {
            }

            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
            {
                Return (Zero)
            }

            Method (_PR3, 0, NotSerialized)  // _PR3: Power Resources for D3hot
            {
                Return (Package (0x01)
                {
                    USBC
                })
            }
        }

        Device (SEC0)
        {
            Name (_ADR, 0x001A0000)  // _ADR: Address
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            OperationRegion (PMEB, PCI_Config, 0x84, 0x04)
            Field (PMEB, WordAcc, NoLock, Preserve)
            {
                Offset (0x01), 
                PMEE,   1, 
                    ,   6, 
                PMES,   1
            }

            Method (_DSW, 3, NotSerialized)  // _DSW: Device Sleep Wake
            {
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Device (GFX0)
        {
            Name (_ADR, 0x00020000)  // _ADR: Address
            Name (NDEP, Package (0x03)
            {
                PEPD, 
                I2C7, 
                ^^I2C7.PMIC
            })
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_S0W, 0x03)  // _S0W: S0 Device Wake State
            Method (_DOS, 1, NotSerialized)  // _DOS: Disable Output Switching
            {
                DSEN = (Arg0 & 0x07)
            }

            Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
            {
                NDID = Zero
                If ((DIDL != Zero))
                {
                    DID1 = SDDL (DIDL)
                }

                If ((DDL2 != Zero))
                {
                    DID2 = SDDL (DDL2)
                }

                If ((DDL3 != Zero))
                {
                    DID3 = SDDL (DDL3)
                }

                If ((DDL4 != Zero))
                {
                    DID4 = SDDL (DDL4)
                }

                If ((DDL5 != Zero))
                {
                    DID5 = SDDL (DDL5)
                }

                If ((NDID == One))
                {
                    Name (TMP1, Package (0x02)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    TMP1 [Zero] = (0x00010000 | DID1)
                    If ((SOCS < 0x02))
                    {
                        TMP1 [One] = 0x00020F39
                    }
                    Else
                    {
                        TMP1 [One] = 0x00020F38
                    }

                    Return (TMP1) /* \_SB_.PCI0.GFX0._DOD.TMP1 */
                }

                If ((NDID == 0x02))
                {
                    Name (TMP2, Package (0x03)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    TMP2 [Zero] = (0x00010000 | DID1)
                    TMP2 [One] = (0x00010000 | DID2)
                    If ((SOCS < 0x02))
                    {
                        TMP2 [0x02] = 0x00020F39
                    }
                    Else
                    {
                        TMP2 [0x02] = 0x00020F38
                    }

                    Return (TMP2) /* \_SB_.PCI0.GFX0._DOD.TMP2 */
                }

                If ((NDID == 0x03))
                {
                    Name (TMP3, Package (0x04)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    TMP3 [Zero] = (0x00010000 | DID1)
                    TMP3 [One] = (0x00010000 | DID2)
                    TMP3 [0x02] = (0x00010000 | DID3)
                    If ((SOCS < 0x02))
                    {
                        TMP3 [0x03] = 0x00020F39
                    }
                    Else
                    {
                        TMP3 [0x03] = 0x00020F38
                    }

                    Return (TMP3) /* \_SB_.PCI0.GFX0._DOD.TMP3 */
                }

                If ((NDID == 0x04))
                {
                    Name (TMP4, Package (0x05)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    TMP4 [Zero] = (0x00010000 | DID1)
                    TMP4 [One] = (0x00010000 | DID2)
                    TMP4 [0x02] = (0x00010000 | DID3)
                    TMP4 [0x03] = (0x00010000 | DID4)
                    If ((SOCS < 0x02))
                    {
                        TMP4 [0x04] = 0x00020F39
                    }
                    Else
                    {
                        TMP4 [0x04] = 0x00020F38
                    }

                    Return (TMP4) /* \_SB_.PCI0.GFX0._DOD.TMP4 */
                }

                If ((NDID > 0x04))
                {
                    Name (TMP5, Package (0x06)
                    {
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF, 
                        0xFFFFFFFF
                    })
                    TMP5 [Zero] = (0x00010000 | DID1)
                    TMP5 [One] = (0x00010000 | DID2)
                    TMP5 [0x02] = (0x00010000 | DID3)
                    TMP5 [0x03] = (0x00010000 | DID4)
                    TMP5 [0x04] = (0x00010000 | DID5)
                    If ((SOCS < 0x02))
                    {
                        TMP5 [0x05] = 0x00020F39
                    }
                    Else
                    {
                        TMP5 [0x05] = 0x00020F38
                    }

                    Return (TMP5) /* \_SB_.PCI0.GFX0._DOD.TMP5 */
                }

                If ((SOCS < 0x02))
                {
                    Return (Package (0x02)
                    {
                        0x0400, 
                        0x00020F39
                    })
                }
                Else
                {
                    Return (Package (0x02)
                    {
                        0x0400, 
                        0x00020F38
                    })
                }
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                ^^^I2C1.BAT0.LEDR = Zero
                If ((^^^I2C1.BAT0.LEDR != ^^^I2C1.BAT0.LEDS))
                {
                    Notify (^^^I2C1.BAT0, 0x80) // Status Change
                }
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
            }

            Device (DD01)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID1) == 0x0400))
                    {
                        EDPV = One
                        DIDX = DID1 /* \DID1 */
                        Return (One)
                    }

                    If ((DID1 == Zero))
                    {
                        Return (One)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID1))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    Return (CDDS (DID1))
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID1))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD02)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID2) == 0x0400))
                    {
                        EDPV = 0x02
                        DIDX = DID2 /* \DID2 */
                        Return (0x02)
                    }

                    If ((DID2 == Zero))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID2))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    Return (CDDS (DID2))
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID2))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD03)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID3) == 0x0400))
                    {
                        EDPV = 0x03
                        DIDX = DID3 /* \DID3 */
                        Return (0x03)
                    }

                    If ((DID3 == Zero))
                    {
                        Return (0x03)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID3))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID3 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID3))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID3))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD04)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID4) == 0x0400))
                    {
                        EDPV = 0x04
                        DIDX = DID4 /* \DID4 */
                        Return (0x04)
                    }

                    If ((DID4 == Zero))
                    {
                        Return (0x04)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID4))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID4 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID4))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID4))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD05)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID5) == 0x0400))
                    {
                        EDPV = 0x05
                        DIDX = DID5 /* \DID5 */
                        Return (0x05)
                    }

                    If ((DID5 == Zero))
                    {
                        Return (0x05)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID5))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID5 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID5))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID5))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD06)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID6) == 0x0400))
                    {
                        EDPV = 0x06
                        DIDX = DID6 /* \DID6 */
                        Return (0x06)
                    }

                    If ((DID6 == Zero))
                    {
                        Return (0x06)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID6))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID6 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID6))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID6))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD07)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID7) == 0x0400))
                    {
                        EDPV = 0x07
                        DIDX = DID7 /* \DID7 */
                        Return (0x07)
                    }

                    If ((DID7 == Zero))
                    {
                        Return (0x07)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID7))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID7 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID7))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID7))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD08)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If (((0x0F00 & DID8) == 0x0400))
                    {
                        EDPV = 0x08
                        DIDX = DID8 /* \DID8 */
                        Return (0x08)
                    }

                    If ((DID8 == Zero))
                    {
                        Return (0x08)
                    }
                    Else
                    {
                        Return ((0xFFFF & DID8))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((DID8 == Zero))
                    {
                        Return (0x0B)
                    }
                    Else
                    {
                        Return (CDDS (DID8))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DID8))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }
                }
            }

            Device (DD1F)
            {
                Method (_ADR, 0, Serialized)  // _ADR: Address
                {
                    If ((EDPV == Zero))
                    {
                        Return (0x1F)
                    }
                    Else
                    {
                        Return ((0xFFFF & DIDX))
                    }
                }

                Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
                {
                    If ((EDPV == Zero))
                    {
                        Return (Zero)
                    }
                    Else
                    {
                        Return (CDDS (DIDX))
                    }
                }

                Method (_DGS, 0, NotSerialized)  // _DGS: Display Graphics State
                {
                    Return (NDDS (DIDX))
                }

                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                    If (((Arg0 & 0xC0000000) == 0xC0000000))
                    {
                        CSTE = NSTE /* \NSTE */
                    }

                    ^^^^I2C1.BAT0.LEDR = One
                    If ((^^^^I2C1.BAT0.LEDR != ^^^^I2C1.BAT0.LEDS))
                    {
                        Notify (^^^^I2C1.BAT0, 0x80) // Status Change
                    }
                }

                Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
                {
                    Return (Package (0x67)
                    {
                        0x50, 
                        0x32, 
                        Zero, 
                        One, 
                        0x02, 
                        0x03, 
                        0x04, 
                        0x05, 
                        0x06, 
                        0x07, 
                        0x08, 
                        0x09, 
                        0x0A, 
                        0x0B, 
                        0x0C, 
                        0x0D, 
                        0x0E, 
                        0x0F, 
                        0x10, 
                        0x11, 
                        0x12, 
                        0x13, 
                        0x14, 
                        0x15, 
                        0x16, 
                        0x17, 
                        0x18, 
                        0x19, 
                        0x1A, 
                        0x1B, 
                        0x1C, 
                        0x1D, 
                        0x1E, 
                        0x1F, 
                        0x20, 
                        0x21, 
                        0x22, 
                        0x23, 
                        0x24, 
                        0x25, 
                        0x26, 
                        0x27, 
                        0x28, 
                        0x29, 
                        0x2A, 
                        0x2B, 
                        0x2C, 
                        0x2D, 
                        0x2E, 
                        0x2F, 
                        0x30, 
                        0x31, 
                        0x32, 
                        0x33, 
                        0x34, 
                        0x35, 
                        0x36, 
                        0x37, 
                        0x38, 
                        0x39, 
                        0x3A, 
                        0x3B, 
                        0x3C, 
                        0x3D, 
                        0x3E, 
                        0x3F, 
                        0x40, 
                        0x41, 
                        0x42, 
                        0x43, 
                        0x44, 
                        0x45, 
                        0x46, 
                        0x47, 
                        0x48, 
                        0x49, 
                        0x4A, 
                        0x4B, 
                        0x4C, 
                        0x4D, 
                        0x4E, 
                        0x4F, 
                        0x50, 
                        0x51, 
                        0x52, 
                        0x53, 
                        0x54, 
                        0x55, 
                        0x56, 
                        0x57, 
                        0x58, 
                        0x59, 
                        0x5A, 
                        0x5B, 
                        0x5C, 
                        0x5D, 
                        0x5E, 
                        0x5F, 
                        0x60, 
                        0x61, 
                        0x62, 
                        0x63, 
                        0x64
                    })
                }

                Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
                {
                    If (((Arg0 >= Zero) && (Arg0 <= 0x64)))
                    {
                        AINT (One, Arg0)
                        BRTL = Arg0
                    }
                }

                Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
                {
                    Return (BRTL) /* \BRTL */
                }
            }

            Method (SDDL, 1, NotSerialized)
            {
                NDID++
                Local0 = (Arg0 & 0x0F0F)
                Local1 = (0x80000000 | Local0)
                If ((DIDL == Local0))
                {
                    Return (Local1)
                }

                If ((DDL2 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL3 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL4 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL5 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL6 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL7 == Local0))
                {
                    Return (Local1)
                }

                If ((DDL8 == Local0))
                {
                    Return (Local1)
                }

                Return (Zero)
            }

            Method (CDDS, 1, NotSerialized)
            {
                Local0 = (Arg0 & 0x0F0F)
                If ((Zero == Local0))
                {
                    Return (0x1D)
                }

                If ((CADL == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL2 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL3 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL4 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL5 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL6 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL7 == Local0))
                {
                    Return (0x1F)
                }

                If ((CAL8 == Local0))
                {
                    Return (0x1F)
                }

                Return (0x1D)
            }

            Method (NDDS, 1, NotSerialized)
            {
                Local0 = (Arg0 & 0x0F0F)
                If ((Zero == Local0))
                {
                    Return (Zero)
                }

                If ((NADL == Local0))
                {
                    Return (One)
                }

                If ((NDL2 == Local0))
                {
                    Return (One)
                }

                If ((NDL3 == Local0))
                {
                    Return (One)
                }

                If ((NDL4 == Local0))
                {
                    Return (One)
                }

                If ((NDL5 == Local0))
                {
                    Return (One)
                }

                If ((NDL6 == Local0))
                {
                    Return (One)
                }

                If ((NDL7 == Local0))
                {
                    Return (One)
                }

                If ((NDL8 == Local0))
                {
                    Return (One)
                }

                Return (Zero)
            }

            OperationRegion (IGDP, PCI_Config, Zero, 0x0100)
            Field (IGDP, AnyAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                MADR,   32, 
                Offset (0x50), 
                    ,   1, 
                GIVD,   1, 
                    ,   1, 
                GUMA,   5, 
                Offset (0x52), 
                Offset (0x54), 
                    ,   4, 
                GMFN,   1, 
                Offset (0x58), 
                Offset (0x5C), 
                GSTM,   32, 
                Offset (0xE0), 
                GSSE,   1, 
                GSSB,   14, 
                GSES,   1, 
                Offset (0xE4), 
                ASLE,   8, 
                Offset (0xE8), 
                Offset (0xFC), 
                ASLS,   32
            }

            OperationRegion (IGMM, SystemMemory, MADR, 0x3000)
            Field (IGMM, AnyAcc, NoLock, Preserve)
            {
                Offset (0x20C8), 
                    ,   4, 
                DCFE,   4
            }

            OperationRegion (IGDM, SystemMemory, ASLB, 0x2000)
            Field (IGDM, AnyAcc, NoLock, Preserve)
            {
                SIGN,   128, 
                SIZE,   32, 
                OVER,   32, 
                SVER,   256, 
                VVER,   128, 
                GVER,   128, 
                MBOX,   32, 
                DMOD,   32, 
                Offset (0x100), 
                DRDY,   32, 
                CSTS,   32, 
                CEVT,   32, 
                Offset (0x120), 
                DIDL,   32, 
                DDL2,   32, 
                DDL3,   32, 
                DDL4,   32, 
                DDL5,   32, 
                DDL6,   32, 
                DDL7,   32, 
                DDL8,   32, 
                CPDL,   32, 
                CPL2,   32, 
                CPL3,   32, 
                CPL4,   32, 
                CPL5,   32, 
                CPL6,   32, 
                CPL7,   32, 
                CPL8,   32, 
                CAD1,   32, 
                CAL2,   32, 
                CAL3,   32, 
                CAL4,   32, 
                CAL5,   32, 
                CAL6,   32, 
                CAL7,   32, 
                CAL8,   32, 
                NADL,   32, 
                NDL2,   32, 
                NDL3,   32, 
                NDL4,   32, 
                NDL5,   32, 
                NDL6,   32, 
                NDL7,   32, 
                NDL8,   32, 
                ASLP,   32, 
                TIDX,   32, 
                CHPD,   32, 
                CLID,   32, 
                CDCK,   32, 
                SXSW,   32, 
                EVTS,   32, 
                CNOT,   32, 
                NRDY,   32, 
                Offset (0x200), 
                SCIE,   1, 
                GEFC,   4, 
                GXFC,   3, 
                GESF,   8, 
                Offset (0x204), 
                PARM,   32, 
                DSLP,   32, 
                Offset (0x300), 
                ARDY,   32, 
                ASLC,   32, 
                TCHE,   32, 
                ALSI,   32, 
                BCLP,   32, 
                PFIT,   32, 
                CBLV,   32, 
                BCLM,   320, 
                CPFM,   32, 
                EPFM,   32, 
                PLUT,   592, 
                PFMB,   32, 
                CCDV,   32, 
                PCFT,   32, 
                Offset (0x400), 
                GVD1,   49152, 
                PHED,   32, 
                BDDC,   2048
            }

            Name (DBTB, Package (0x15)
            {
                Zero, 
                0x07, 
                0x38, 
                0x01C0, 
                0x0E00, 
                0x3F, 
                0x01C7, 
                0x0E07, 
                0x01F8, 
                0x0E38, 
                0x0FC0, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                0x7000, 
                0x7007, 
                0x7038, 
                0x71C0, 
                0x7E00
            })
            Name (CDCT, Package (0x06)
            {
                Package (0x01)
                {
                    0xA0
                }, 

                Package (0x01)
                {
                    0xC8
                }, 

                Package (0x01)
                {
                    0x010B
                }, 

                Package (0x01)
                {
                    0x0140
                }, 

                Package (0x01)
                {
                    0x0164
                }, 

                Package (0x01)
                {
                    0x0190
                }
            })
            Name (SUCC, One)
            Name (NVLD, 0x02)
            Name (CRIT, 0x04)
            Name (NCRT, 0x06)
            Method (GSCI, 0, Serialized)
            {
                Method (GBDA, 0, Serialized)
                {
                    If ((GESF == Zero))
                    {
                        PARM = 0x0279
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == One))
                    {
                        PARM = 0x0240
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x04))
                    {
                        PARM &= 0xEFFF0000
                        PARM &= (DerefOf (DBTB [IBTT]) << 0x10)
                        PARM |= IBTT /* \_SB_.PCI0.GFX0.PARM */
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x05))
                    {
                        PARM = IPSC /* \IPSC */
                        PARM |= (IPAT << 0x08)
                        PARM += 0x0100
                        PARM |= (LIDS << 0x10)
                        PARM += 0x00010000
                        PARM |= (IBLC << 0x12)
                        PARM |= (IBIA << 0x14)
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x06))
                    {
                        PARM = ITVF /* \ITVF */
                        PARM |= (ITVM << 0x04)
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x07))
                    {
                        PARM = GIVD /* \_SB_.PCI0.GFX0.GIVD */
                        PARM ^= One
                        PARM |= (GMFN << One)
                        PARM |= 0x1800
                        PARM |= (IDMS << 0x11)
                        PARM |= (DerefOf (CDCT [DCFE]) << 0x15) /* \_SB_.PCI0.GFX0.PARM */
                        GESF = One
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x0A))
                    {
                        PARM = Zero
                        If (ISSC)
                        {
                            PARM |= 0x03
                        }

                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    GESF = Zero
                    Return (CRIT) /* \_SB_.PCI0.GFX0.CRIT */
                }

                Method (SBCB, 0, Serialized)
                {
                    If ((GESF == Zero))
                    {
                        PARM = Zero
                        If ((PFLV == FMBL))
                        {
                            PARM = 0x000F87FD
                        }

                        If ((PFLV == FDTP))
                        {
                            PARM = 0x000F87BD
                        }

                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == One))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x03))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x04))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x05))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x06))
                    {
                        ITVF = (PARM & 0x0F)
                        ITVM = ((PARM & 0xF0) >> 0x04)
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x07))
                    {
                        If ((PARM == Zero))
                        {
                            Local0 = CLID /* \_SB_.PCI0.GFX0.CLID */
                            If ((0x80000000 & Local0))
                            {
                                CLID &= 0x0F
                                GLID (CLID)
                            }
                        }

                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x08))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x09))
                    {
                        IBTT = (PARM & 0xFF)
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x0A))
                    {
                        IPSC = (PARM & 0xFF)
                        If (((PARM >> 0x08) & 0xFF))
                        {
                            IPAT = ((PARM >> 0x08) & 0xFF)
                            IPAT--
                        }

                        IBLC = ((PARM >> 0x12) & 0x03)
                        IBIA = ((PARM >> 0x14) & 0x07)
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x0B))
                    {
                        IF1E = ((PARM >> One) & One)
                        IDMS = ((PARM >> 0x11) & 0x0F)
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x10))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x11))
                    {
                        PARM = (LIDS << 0x08)
                        PARM += 0x0100
                        GESF = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x12))
                    {
                        If ((PARM & One))
                        {
                            If (((PARM >> One) == One))
                            {
                                ISSC = One
                            }
                            Else
                            {
                                GESF = Zero
                                Return (CRIT) /* \_SB_.PCI0.GFX0.CRIT */
                            }
                        }
                        Else
                        {
                            ISSC = Zero
                        }

                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x13))
                    {
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    If ((GESF == 0x14))
                    {
                        PAVP = (PARM & 0x0F)
                        GESF = Zero
                        PARM = Zero
                        Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                    }

                    GESF = Zero
                    Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */
                }

                If ((GEFC == 0x04))
                {
                    GXFC = GBDA ()
                }

                If ((GEFC == 0x06))
                {
                    GXFC = SBCB ()
                }

                GEFC = Zero
                SCIS = One
                GSSE = Zero
                SCIE = Zero
                Return (Zero)
            }

            Method (PDRD, 0, NotSerialized)
            {
                If (!DRDY)
                {
                    Sleep (ASLP)
                }

                Return (!DRDY)
            }

            Method (PSTS, 0, NotSerialized)
            {
                If ((CSTS > 0x02))
                {
                    Sleep (ASLP)
                }

                Return ((CSTS == 0x03))
            }

            Method (GNOT, 2, NotSerialized)
            {
                If (PDRD ())
                {
                    Return (One)
                }

                CEVT = Arg0
                CSTS = 0x03
                If (((CHPD == Zero) && (Arg1 == Zero)))
                {
                    If (((OSYS > 0x07D0) || (OSYS < 0x07D6)))
                    {
                        Notify (PCI0, Arg1)
                    }
                    Else
                    {
                        Notify (GFX0, Arg1)
                    }
                }

                Notify (GFX0, 0x80) // Status Change
                Return (Zero)
            }

            Method (GHDS, 1, NotSerialized)
            {
                TIDX = Arg0
                Return (GNOT (One, Zero))
            }

            Method (GLID, 1, NotSerialized)
            {
                CLID = Arg0
                Return (GNOT (0x02, Zero))
            }

            Method (GDCK, 1, NotSerialized)
            {
                CDCK = Arg0
                Return (GNOT (0x04, Zero))
            }

            Method (PARD, 0, NotSerialized)
            {
                If (!ARDY)
                {
                    Sleep (ASLP)
                }

                Return (!ARDY)
            }

            Method (AINT, 2, NotSerialized)
            {
                If (!(TCHE & (One << Arg0)))
                {
                    Return (One)
                }

                If (PARD ())
                {
                    Return (One)
                }

                If ((Arg0 == 0x02))
                {
                    If (CPFM)
                    {
                        Local0 = (CPFM & 0x0F)
                        Local1 = (EPFM & 0x0F)
                        If ((Local0 == One))
                        {
                            If ((Local1 & 0x06))
                            {
                                PFIT = 0x06
                            }
                            ElseIf ((Local1 & 0x08))
                            {
                                PFIT = 0x08
                            }
                            Else
                            {
                                PFIT = One
                            }
                        }

                        If ((Local0 == 0x06))
                        {
                            If ((Local1 & 0x08))
                            {
                                PFIT = 0x08
                            }
                            ElseIf ((Local1 & One))
                            {
                                PFIT = One
                            }
                            Else
                            {
                                PFIT = 0x06
                            }
                        }

                        If ((Local0 == 0x08))
                        {
                            If ((Local1 & One))
                            {
                                PFIT = One
                            }
                            ElseIf ((Local1 & 0x06))
                            {
                                PFIT = 0x06
                            }
                            Else
                            {
                                PFIT = 0x08
                            }
                        }
                    }
                    Else
                    {
                        PFIT ^= 0x07
                    }

                    PFIT |= 0x80000000
                    ASLC = 0x04
                }
                ElseIf ((Arg0 == One))
                {
                    BCLP = ((Arg1 * 0xFF) / 0x64)
                    BCLP |= 0x80000000
                    ASLC = 0x02
                }
                ElseIf ((Arg0 == Zero))
                {
                    ALSI = Arg1
                    ASLC = One
                }
                Else
                {
                    Return (One)
                }

                ASLE = One
                Return (Zero)
            }

            Method (SCIP, 0, NotSerialized)
            {
                If ((OVER != Zero))
                {
                    Return (!GSMI)
                }

                Return (Zero)
            }

            Device (ISP0)
            {
                Name (_ADR, 0x0F38)  // _ADR: Address
                Name (_DDN, "VLV2 ISP - 80860F38")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x01)  // _DEP: Dependencies
                {
                    PEPD
                })
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((SOCS >= 0x02))
                    {
                        If ((ISPD == One))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                    Else
                    {
                        _ADR = 0x0F39
                        _DDN = "VLV2 ISP - 80860F39"
                        If ((ISPD == One))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Name (SBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xD0C00000,         // Address Base
                        0x00400000,         // Address Length
                        )
                })
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Return (SBUF) /* \_SB_.PCI0.GFX0.ISP0.SBUF */
                }

                Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                {
                }

                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                {
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == One))
                    {
                        Return (One)
                    }
                    ElseIf ((Arg0 == 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x0F)
                    }
                }
            }
        }
    }

    Scope (_PR)
    {
        Processor (CPU0, 0x01, 0x00000000, 0x00) {}
        Processor (CPU1, 0x02, 0x00000000, 0x00) {}
        Processor (CPU2, 0x03, 0x00000000, 0x00) {}
        Processor (CPU3, 0x04, 0x00000000, 0x00) {}
    }

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

    Method (P8XH, 2, Serialized)
    {
        If ((Arg0 == Zero))
        {
            P80D = ((P80D & 0xFFFFFF00) | Arg1)
        }

        If ((Arg0 == One))
        {
            P80D = ((P80D & 0xFFFF00FF) | (Arg1 << 0x08))
        }

        If ((Arg0 == 0x02))
        {
            P80D = ((P80D & 0xFF00FFFF) | (Arg1 << 0x10))
        }

        If ((Arg0 == 0x03))
        {
            P80D = ((P80D & 0x00FFFFFF) | (Arg1 << 0x18))
        }

        P80H = P80D /* \P80D */
    }

    OperationRegion (SPRT, SystemIO, 0xB2, 0x02)
    Field (SPRT, ByteAcc, Lock, Preserve)
    {
        SSMP,   8
    }

    Method (_PIC, 1, NotSerialized)  // _PIC: Interrupt Model
    {
        GPIC = Arg0
        PICM = Arg0
    }

    OperationRegion (SWC0, SystemIO, 0x0610, 0x0F)
    Field (SWC0, ByteAcc, NoLock, Preserve)
    {
        G1S,    8, 
        Offset (0x04), 
        G1E,    8, 
        Offset (0x0A), 
        G1S2,   8, 
        G1S3,   8
    }

    OperationRegion (SWC1, SystemIO, PMBS, 0x2C)
    Field (SWC1, DWordAcc, NoLock, Preserve)
    {
        Offset (0x20), 
        G0S,    32, 
        Offset (0x28), 
        G0EN,   32
    }

    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        P80D = Zero
        P8XH (Zero, Arg0)
        G1S3 = Ones
        G1S2 = Ones
        G1S = One
        G1E = One
        G0S = Ones
        If (((Arg0 == 0x04) || (Arg0 == 0x05)))
        {
            G0EN = Zero
            SLPS = One
            SLPE = Zero
            PWBS = One
            PM1S = One
        }

        If (CondRefOf (TCGM))
        {
            \_SB.PCI0.LPCB.TPM.PTS (Arg0)
        }
    }

    Method (_WAK, 1, Serialized)  // _WAK: Wake
    {
        P8XH (One, 0xAB)
        If (NEXP)
        {
            If ((OSCC & 0x02))
            {
                \_SB.PCI0.NHPG ()
            }

            If ((OSCC & 0x04))
            {
                \_SB.PCI0.NPME ()
            }
        }

        If (((Arg0 == 0x03) || (Arg0 == 0x04)))
        {
            If ((PFLV == FMBL))
            {
                If ((Arg0 == 0x04))
                {
                    PNOT ()
                }
            }

            If ((CFGD & 0x01000000)) {}
            If ((OSYS == 0x07D2))
            {
                If ((CFGD & One))
                {
                    If ((\_PR.CPU0._PPC > Zero))
                    {
                        \_PR.CPU0._PPC -= One
                        PNOT ()
                        \_PR.CPU0._PPC += One
                        PNOT ()
                    }
                    Else
                    {
                        \_PR.CPU0._PPC += One
                        PNOT ()
                        \_PR.CPU0._PPC -= One
                        PNOT ()
                    }
                }
            }
        }

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

    Method (PNOT, 0, Serialized)
    {
        If (MPEN)
        {
            If ((PDC0 & 0x08))
            {
                Notify (\_PR.CPU0, 0x80) // Performance Capability Change
                If ((PDC0 & 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU0, 0x81) // C-State Change
                }
            }

            If ((PDC1 & 0x08))
            {
                Notify (\_PR.CPU1, 0x80) // Performance Capability Change
                If ((PDC1 & 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU1, 0x81) // C-State Change
                }
            }

            If ((PDC2 & 0x08))
            {
                Notify (\_PR.CPU2, 0x80) // Performance Capability Change
                If ((PDC2 & 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU2, 0x81) // C-State Change
                }
            }

            If ((PDC3 & 0x08))
            {
                Notify (\_PR.CPU3, 0x80) // Performance Capability Change
                If ((PDC3 & 0x10))
                {
                    Sleep (0x64)
                    Notify (\_PR.CPU3, 0x81) // C-State Change
                }
            }
        }
        Else
        {
            Notify (\_PR.CPU0, 0x80) // Performance Capability Change
            Sleep (0x64)
            Notify (\_PR.CPU0, 0x81) // C-State Change
        }
    }

    Scope (_SB)
    {
        Name (CRTT, 0x6E)
        Name (ACTT, 0x55)
        Name (SCR0, 0x0102)
        Name (SCR1, 0x0102)
        Name (SCR2, 0x0102)
        Name (SCR3, 0x0102)
        Name (GCR0, 0x46)
        Name (GCR1, 0x46)
        Name (GCR2, 0x46)
        Name (GCR3, 0x46)
        Name (GCR4, 0x46)
        Name (PST0, 0x3C)
        Name (PST1, 0x3C)
        Name (PST2, 0x3C)
        Name (PST3, 0x3C)
        Name (PST4, 0x3C)
        Name (LPMV, 0x03)
        Name (PDBG, Zero)
        Name (PDPM, One)
        Name (PDBP, One)
        Name (DLPO, Package (0x06)
        {
            One, 
            One, 
            One, 
            0x19, 
            One, 
            One
        })
        Name (BRQD, Zero)
        Name (PSC1, Zero)
        Name (PSC2, Zero)
        Name (PSC3, Zero)
        Name (PSA1, Zero)
        Name (PSA2, Zero)
        Name (PSA3, Zero)
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            CRTT = DPCT /* \DPCT */
            ACTT = DPPT /* \DPPT */
            GCR0 = DGC0 /* \DGC0 */
            GCR1 = DGC1 /* \DGC1 */
            GCR2 = DGC2 /* \DGC2 */
            GCR3 = DGC3 /* \DGC3 */
            GCR4 = DGC4 /* \DGC4 */
            PST0 = DGP0 /* \DGP0 */
            PST1 = DGP1 /* \DGP1 */
            PST2 = DGP2 /* \DGP2 */
            PST3 = DGP3 /* \DGP3 */
            PST4 = DGP4 /* \DGP4 */
            SCR0 = DSC0 /* \DSC0 */
            SCR1 = DSC1 /* \DSC1 */
            SCR2 = DSC2 /* \DSC2 */
            SCR3 = DSC3 /* \DSC3 */
            LPMV = DLPM /* \DLPM */
            PDBG = DDBG /* \DDBG */
            DLPO [One] = LPOE /* \LPOE */
            DLPO [0x02] = LPPS /* \LPPS */
            DLPO [0x03] = LPST /* \LPST */
            DLPO [0x04] = LPPC /* \LPPC */
            DLPO [0x05] = LPPF /* \LPPF */
            PDPM = DPME /* \DPME */
        }

        Scope (PCI0)
        {
            Method (_INI, 0, NotSerialized)  // _INI: Initialize
            {
                OSYS = 0x07D0
                If (CondRefOf (\_OSI, Local0))
                {
                    If (_OSI ("Windows 2001"))
                    {
                        OSYS = 0x07D1
                    }

                    If (_OSI ("Windows 2001 SP1"))
                    {
                        OSYS = 0x07D1
                    }

                    If (_OSI ("Windows 2001 SP2"))
                    {
                        OSYS = 0x07D2
                    }

                    If (_OSI ("Windows 2006"))
                    {
                        OSYS = 0x07D6
                    }

                    If (_OSI ("Windows 2009"))
                    {
                        OSYS = 0x07D9
                    }

                    If (_OSI ("Windows 2012"))
                    {
                        OSYS = 0x07DC
                    }

                    If (_OSI ("Windows 2013"))
                    {
                        OSYS = 0x07DD
                    }
                }
            }

            Method (NHPG, 0, Serialized)
            {
            }

            Method (NPME, 0, Serialized)
            {
            }
        }

        Device (GPED)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "INT0002" /* Virtual GPIO Controller */)  // _HID: Hardware ID
            Name (_CID, "INT0002" /* Virtual GPIO Controller */)  // _CID: Compatible ID
            Name (_DDN, "Virtual GPIO controller")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (INST, One)
            Name (XTMP, Zero)
            OperationRegion (SCIS, SystemMemory, 0xFED030C0, 0x04)
            Field (SCIS, DWordAcc, NoLock, Preserve)
            {
                LGBE,   1, 
                LHAD,   1, 
                LATA,   1, 
                LDIO,   1, 
                LARD,   1, 
                LIO1,   1, 
                LCEP,   1, 
                LANB,   1, 
                LHCI,   1, 
                LOTG,   1, 
                LECI,   1, 
                LHSI,   1
            }

            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == ToUUID ("8b38b469-6f95-4b08-9b02-2defcc2d2c35")))
                {
                    If ((Arg2 == Zero))
                    {
                        If ((Arg1 == One))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                             /* . */
                            })
                        }
                    }

                    If ((Arg2 == One))
                    {
                        Return ((PMBS + 0x20))
                    }

                    Return (Zero)
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                             /* . */
                    })
                }
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, )
                    {
                        0x00000009,
                    }
                })
                Return (RBUF) /* \_SB_.GPED._CRS.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_AEI, 0, NotSerialized)  // _AEI: ACPI Event Interrupts
            {
                Name (RBUF, ResourceTemplate ()
                {
                    GpioInt (Level, ActiveHigh, ExclusiveAndWake, PullDown, 0x0000,
                        "\\_SB.GPED", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0002
                        }
                })
                Return (RBUF) /* \_SB_.GPED._AEI.RBUF */
            }

            Method (_L02, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
            {
                If ((XHCI == Zero))
                {
                    If ((^^PCI0.EHC1.PMES == One))
                    {
                        ^^PCI0.EHC1.PMEE = Zero
                        Local0 = ^^PCI0.EHC1.PMEE /* \_SB_.PCI0.EHC1.PMEE */
                        Notify (^^PCI0.EHC1, 0x02) // Device Wake
                    }
                }
                ElseIf ((SOCS > 0x05))
                {
                    XTMP = (^^PCI0.XHC1.PMCS & 0x8000)
                    If ((XTMP == 0x8000))
                    {
                        Notify (^^PCI0.XHC1, 0x02) // Device Wake
                    }
                }
                ElseIf ((SOCS > 0x02))
                {
                    XTMP = (^^PCI0.XHC1.PMCS & 0x8000)
                    If ((XTMP == 0x8000))
                    {
                        ^^PCI0.XHC1.PMCH = 0x81
                        Notify (^^PCI0.XHC1, 0x02) // Device Wake
                    }
                }
                Else
                {
                    XTMP = (^^PCI0.XHC1.PMCS & 0x0103)
                    If ((XTMP == 0x0103))
                    {
                        ^^PCI0.XHC1.PMCS = 0x0100
                        Sleep (0x0A)
                        XTMP = (^^PCI0.XHC1.PMCS & 0x8000)
                        If ((XTMP == 0x8000))
                        {
                            ^^PCI0.XHC1.PMCH = 0x81
                        }
                        Else
                        {
                            ^^PCI0.XHC1.PMCS = 0x0103
                        }

                        Sleep (0x0A)
                        Notify (^^PCI0.XHC1, 0x02) // Device Wake
                    }
                    Else
                    {
                        ^^PCI0.XHC1.PMCH = 0x81
                        Sleep (0x0A)
                    }
                }

                If ((OTGM != Zero))
                {
                    If ((^^PCI0.OTG1.PMES == One))
                    {
                        ADBG ("OTG wake")
                        ^^PCI0.OTG1.PMEE = Zero
                        ^^PCI0.OTG1.CPME = Zero
                        ^^PCI0.OTG1.U2EN = Zero
                        ^^PCI0.OTG1.U3EN = Zero
                        Notify (^^PCI0.OTG1, 0x02) // Device Wake
                    }
                }

                If ((^^PCI0.SEC0.PMES == One))
                {
                    ^^PCI0.SEC0.PMEE = Zero
                    Local0 = ^^PCI0.SEC0.PMEE /* \_SB_.PCI0.SEC0.PMEE */
                    Notify (^^PCI0.SEC0, 0x02) // Device Wake
                }
            }
        }

        Device (GPO0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _HID: Hardware ID
            Name (_CID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _CID: Compatible ID
            Name (_DDN, "ValleyView General Purpose Input/Output (GPIO) controller")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED0C000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
                    {
                        0x00000031,
                    }
                })
                Return (RBUF) /* \_SB_.GPO0._CRS.RBUF */
            }

            OperationRegion (GP0M, SystemMemory, 0xFED0C000, 0x0100)
            Field (GP0M, DWordAcc, NoLock, Preserve)
            {
                Offset (0xA8), 
                DPRS,   1
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_AEI, 0, NotSerialized)  // _AEI: ACPI Event Interrupts
            {
                Name (PBUF, ResourceTemplate ()
                {
                    GpioInt (Edge, ActiveBoth, SharedAndWake, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x005E
                        }
                })
                Return (PBUF) /* \_SB_.GPO0._AEI.PBUF */
            }

            Method (_E5E, 0, NotSerialized)  // _Exx: Edge-Triggered GPE
            {
                Notify (LWMI, 0xA0) // Device-Specific
            }

            Name (AVBL, Zero)
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If ((Arg0 == 0x08))
                {
                    AVBL = Arg1
                }
            }

            OperationRegion (GPOP, GeneralPurposeIo, Zero, 0x0C)
            Field (GPOP, ByteAcc, NoLock, Preserve)
            {
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0035
                        }
                ), 
                BTD3,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x003A
                        }
                ), 
                SUSB,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x003B
                        }
                ), 
                SHD3,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x003C
                        }
                ), 
                TCD3,   1
            }

            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                If ((Arg0 == ToUUID ("4f248f40-d5e2-499f-834c-27758ea1cd3f") /* GPIO Controller */))
                {
                    While (One)
                    {
                        _T_0 = ToInteger (Arg2)
                        If ((_T_0 == Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x01                                             /* . */
                            })
                        }
                        ElseIf ((_T_0 == One))
                        {
                            Return (Package (0x01)
                            {
                                0x06
                            })
                        }
                        Else
                        {
                            Return (Zero)
                        }

                        Break
                    }
                }

                Return (Zero)
            }
        }

        Device (GPO1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _HID: Hardware ID
            Name (_CID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _CID: Compatible ID
            Name (_DDN, "ValleyView GPNCORE controller")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED0D000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
                    {
                        0x00000030,
                    }
                })
                Return (RBUF) /* \_SB_.GPO1._CRS.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }
        }

        Device (GPO2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _HID: Hardware ID
            Name (_CID, "INT33FC" /* Intel Baytrail GPIO Controller */)  // _CID: Compatible ID
            Name (_DDN, "ValleyView GPSUS controller")  // _DDN: DOS Device Name
            Name (_UID, 0x03)  // _UID: Unique ID
            OperationRegion (GP2M, SystemMemory, 0xFED0E000, 0x0300)
            Field (GP2M, DWordAcc, NoLock, Preserve)
            {
                Offset (0x118), 
                LIDI,   1, 
                Offset (0x258), 
                CLID,   1
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED0E000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
                    {
                        0x00000032,
                    }
                })
                Return (RBUF) /* \_SB_.GPO2._CRS.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_AEI, 0, NotSerialized)  // _AEI: ACPI Event Interrupts
            {
                Name (RBUF, ResourceTemplate ()
                {
                    GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0012
                        }
                    GpioInt (Edge, ActiveBoth, SharedAndWake, PullUp, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x000E
                        }
                })
                Name (FBUF, ResourceTemplate ()
                {
                    GpioInt (Level, ActiveLow, ExclusiveAndWake, PullUp, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0012
                        }
                    GpioInt (Edge, ActiveBoth, SharedAndWake, PullUp, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x000E
                        }
                    GpioInt (Edge, ActiveBoth, SharedAndWake, PullUp, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0009
                        }
                })
                If ((FSAS == One))
                {
                    Return (FBUF) /* \_SB_.GPO2._AEI.FBUF */
                }

                Return (RBUF) /* \_SB_.GPO2._AEI.RBUF */
            }

            Name (BFSA, Buffer (0x03)
            {
                 0x00, 0x01, 0x00                                 /* ... */
            })
            CreateByteField (BFSA, Zero, BYYY)
            CreateByteField (BFSA, 0x02, DATT)
            Name (BFSB, Buffer (0x03)
            {
                 0x00, 0x01, 0x00                                 /* ... */
            })
            CreateByteField (BFSB, Zero, YYYY)
            CreateByteField (BFSB, 0x02, DTTT)
            Name (BUFF, Buffer (0x07)
            {
                 0xFF                                             /* . */
            })
            CreateByteField (BUFF, Zero, STAT)
            CreateByteField (BUFF, One, LEN)
            CreateByteField (BUFF, 0x02, TMP0)
            CreateByteField (BUFF, 0x03, AX00)
            CreateByteField (BUFF, 0x04, AX01)
            CreateByteField (BUFF, 0x05, AX10)
            CreateByteField (BUFF, 0x06, AX11)
            Method (_L12, 0, NotSerialized)  // _Lxx: Level-Triggered GPE
            {
                Local0 = ^^I2C1.BAT0.EVEN ()
                ADBG ("EC INTR")
                Notify (ADP1, 0x80) // Status Change
                Notify (^^I2C1.BAT0, 0x80) // Status Change
                Notify (^^I2C1.BAT0, 0x81) // Information Change
            }

            Method (_E0E, 0, NotSerialized)  // _Exx: Edge-Triggered GPE
            {
                If (LDWK)
                {
                    Local0 = ^^LID0._LID ()
                    If ((Local0 == Zero))
                    {
                        Notify (LID0, 0x80) // Status Change
                    }
                }
                Else
                {
                    Notify (LID0, 0x80) // Status Change
                }
            }

            Method (_E09, 0, NotSerialized)  // _Exx: Edge-Triggered GPE
            {
                Local0 = WSTA /* \WSTA */
                Local0 <<= One
                Local0 &= 0x06
                If ((Local0 & 0x02))
                {
                    If ((Local0 & 0x04))
                    {
                        Notify (LID0, 0x80) // Status Change
                    }

                    ^^HKEY.MHKQ (0x5020)
                }
            }

            Name (AVBL, Zero)
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If ((Arg0 == 0x08))
                {
                    AVBL = Arg1
                }
            }

            OperationRegion (GPOP, GeneralPurposeIo, Zero, 0x0C)
            Field (GPOP, ByteAcc, NoLock, Preserve)
            {
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0006
                        }
                ), 
                WWP3,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x000A
                        }
                ), 
                WFD3,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0016
                        }
                ), 
                WWD3,   1, 
                Connection (
                    GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x001D
                        }
                ), 
                WWR3,   1
            }
        }

        Device (PEPD)
        {
            Name (_HID, "INT3396" /* Standard Power Management Controller */)  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0D80") /* Windows-compatible System Power Management Controller */)  // _CID: Compatible ID
            Name (_UID, One)  // _UID: Unique ID
            Name (PEPP, Zero)
            Name (DEVS, Package (0x01)
            {
                Zero
            })
            Name (DEVX, Package (0x12)
            {
                Package (0x02)
                {
                    "\\_SB.PCI0.XHC1", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.PCI0.EHC1", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.PCI0.GFX0", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.PCI0.GFX0.ISP0", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.PCI0.SEC0", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C1", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C2", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C3", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C4", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C5", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C6", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.I2C7", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.SDHA", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.SDHB", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.SDHC", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.SPI1", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.URT1", 
                    One
                }, 

                Package (0x02)
                {
                    "\\_SB.URT2", 
                    One
                }
            })
            Name (CDMP, Package (0x02) {})
            Name (DEVY, Package (0x16)
            {
                Package (0x03)
                {
                    "\\_PR.CPU0", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            Zero
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_PR.CPU1", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            Zero
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_PR.CPU2", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            Zero
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_PR.CPU3", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            Zero
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.PCI0.GFX0", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.PCI0.GFX0.ISP0", 
                    One, 
                    Package (0x02)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            0xFF, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C1", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C2", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C3", 
                    Zero, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C4", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C5", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C6", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.I2C7", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.PCI0.XHC1", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.PCI0.SEC0", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.LPEA", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.SDHA", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.SDHB", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.SDHC", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.SPI1", 
                    Zero, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.URT1", 
                    One, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }, 

                Package (0x03)
                {
                    "\\_SB.URT2", 
                    Zero, 
                    Package (0x05)
                    {
                        Zero, 
                        Package (0x02)
                        {
                            Zero, 
                            Zero
                        }, 

                        Package (0x02)
                        {
                            One, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x02, 
                            0x03
                        }, 

                        Package (0x02)
                        {
                            0x03, 
                            0x03
                        }
                    }
                }
            })
            Name (BCCD, Package (0x01)
            {
                Package (0x02)
                {
                    "\\_SB.SDHA", 
                    Package (0x01)
                    {
                        Package (0x03)
                        {
                            Package (0x05)
                            {
                                Zero, 
                                0x20, 
                                Zero, 
                                0x03, 
                                Ones
                            }, 

                            Package (0x03)
                            {
                                0xFFFFFFFC, 
                                Zero, 
                                0x04
                            }, 

                            Zero
                        }
                    }
                }
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == ToUUID ("b8febfe0-baf8-454b-aecd-49fb91137b21")))
                {
                    If ((Arg2 == Zero))
                    {
                        Return (Buffer (One)
                        {
                             0x0F                                             /* . */
                        })
                    }

                    If ((Arg2 == One))
                    {
                        PEPP = One
                        Return (0x0F)
                    }

                    If ((Arg2 == 0x02))
                    {
                        If ((Arg1 == Zero))
                        {
                            Return (DEVS) /* \_SB_.PEPD.DEVS */
                        }

                        If ((Arg1 == One))
                        {
                            Return (DEVX) /* \_SB_.PEPD.DEVX */
                        }
                    }

                    If ((Arg2 == 0x03))
                    {
                        CDMP [Zero] = "\\_SB.SDHA"
                        CDMP [One] = EM1A /* \EM1A */
                        Return (CDMP) /* \_SB_.PEPD.CDMP */
                    }
                }

                If ((Arg0 == ToUUID ("c4eb40a0-6cd2-11e2-bcfd-0800200c9a66")))
                {
                    If ((Arg2 == Zero))
                    {
                        Return (Buffer (One)
                        {
                             0x07                                             /* . */
                        })
                    }

                    If ((Arg2 == One))
                    {
                        If (((I40A == Zero) || (L24D == One)))
                        {
                            DerefOf (DEVY [0x09]) [One] = Zero
                        }

                        If (((SI0A == Zero) || (SD2D == One)))
                        {
                            DerefOf (DEVY [0x11]) [One] = Zero
                        }

                        If (((SD0A == Zero) || (SD3D == One)))
                        {
                            DerefOf (DEVY [0x12]) [One] = Zero
                        }

                        If (((SP0A == Zero) || (L15D == One)))
                        {
                            DerefOf (DEVY [0x13]) [One] = Zero
                        }

                        If (((U10A == Zero) || (L13D == One)))
                        {
                            DerefOf (DEVY [0x14]) [One] = Zero
                        }

                        If (((U20A == Zero) || (L14D == One)))
                        {
                            DerefOf (DEVY [0x15]) [One] = Zero
                        }

                        Return (DEVY) /* \_SB_.PEPD.DEVY */
                    }

                    If ((Arg2 == 0x02))
                    {
                        Local0 = EM1A /* \EM1A */
                        Local0 += 0x84
                        DerefOf (DerefOf (DerefOf (DerefOf (BCCD [Zero]
                            ) [One]) [Zero]) [Zero]) [0x04] = Local0
                        Return (BCCD) /* \_SB_.PEPD.BCCD */
                    }
                }

                Return (One)
            }
        }

        Device (SDHA)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F14" /* Intel Baytrail SDIO/MMC Host Controller */)  // _HID: Hardware ID
            Name (_CID, "PNP0D40" /* SDA Standard Compliant SD Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) eMMC Controller - 80860F14")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBF1, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y07)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002D,
                }
            })
            Name (RBF2, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y08)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002C,
                }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBF1, \_SB.SDHA._Y07._BAS, B0B1)  // _BAS: Base Address
                CreateDWordField (RBF1, \_SB.SDHA._Y07._LEN, B0L1)  // _LEN: Length
                B0B1 = EM0A /* \EM0A */
                B0L1 = EM0L /* \EM0L */
                CreateDWordField (RBF2, \_SB.SDHA._Y08._BAS, B0B2)  // _BAS: Base Address
                CreateDWordField (RBF2, \_SB.SDHA._Y08._LEN, B0L2)  // _LEN: Length
                B0B2 = EM0A /* \EM0A */
                B0L2 = EM0L /* \EM0L */
                If ((EMVR == One))
                {
                    Return (RBF2) /* \_SB_.SDHA.RBF2 */
                }

                Return (RBF1) /* \_SB_.SDHA.RBF1 */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
                If (((SOCS < 0x02) || ((SOCS == 0x02) && (EMVR == One))))
                {
                    Sleep (0x02)
                }
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
                If (((SOCS < 0x02) || ((SOCS == 0x02) && (EMVR == One))))
                {
                    Sleep (0x02)
                }
            }

            OperationRegion (KEYS, SystemMemory, EM1A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
            }

            Device (EMMD)
            {
                Name (_ADR, 0x08)  // _ADR: Address
                Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                {
                    Return (Zero)
                }
            }
        }

        Device (SDHB)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "INT33BB" /* Intel Baytrail SD Host Controller */)  // _HID: Hardware ID
            Name (_CID, "PNP0D40" /* SDA Standard Compliant SD Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) SDIO Controller - 80860F15")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (_HRV, 0x02)  // _HRV: Hardware Revision
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                PEPD, 
                GPO2
            })
            Name (PSTS, Zero)
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y09)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002E,
                }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.SDHB._Y09._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.SDHB._Y09._LEN, B0LN)  // _LEN: Length
                B0BA = SI0A /* \SI0A */
                B0LN = SI0L /* \SI0L */
                Return (RBUF) /* \_SB_.SDHB.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((STEP <= 0x04))
                {
                    _HRV = SDMD /* \SDMD */
                }

                If (((SI0A == Zero) || (SD2D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
                If ((PSTS == Zero))
                {
                    If ((^^GPO2.AVBL == One))
                    {
                        ^^GPO2.WFD3 = One
                        PSTS = One
                    }
                }
            }

            OperationRegion (KEYS, SystemMemory, SI1A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Device (BRCM)
            {
                Name (_ADR, One)  // _ADR: Address
                Name (_DEP, Package (0x01)  // _DEP: Dependencies
                {
                    GPO2
                })
                Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                {
                    Return (Zero)
                }

                Name (_S4W, 0x02)  // _S4W: S4 Device Wake State
                Name (_S0W, 0x02)  // _S0W: S0 Device Wake State
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (RBUF, ResourceTemplate ()
                    {
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, ,, )
                        {
                            0x00000049,
                        }
                    })
                    Return (RBUF) /* \_SB_.SDHB.BRCM._CRS.RBUF */
                }

                Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
                {
                    If ((^^^GPO2.AVBL == One))
                    {
                        ^^^GPO2.WFD3 = Zero
                        PSTS = Zero
                    }
                }

                Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
                {
                    If ((PSTS == Zero))
                    {
                        If ((^^^GPO2.AVBL == One))
                        {
                            ^^^GPO2.WFD3 = One
                            PSTS = One
                        }
                    }
                }
            }

            Device (BRC2)
            {
                Name (_ADR, 0x02)  // _ADR: Address
                Name (_STA, 0x0F)  // _STA: Status
                Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                {
                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (NAM, Buffer (0x0F)
                    {
                        "\\_SB.SDHB.BRCM"
                    })
                    Name (SPB, Buffer (0x0C)
                    {
                        /* 0000 */  0x8E, 0x18, 0x00, 0x01, 0x00, 0xC0, 0x02, 0x00,  /* ........ */
                        /* 0008 */  0x00, 0x01, 0x00, 0x00                           /* .... */
                    })
                    Name (END, ResourceTemplate ()
                    {
                    })
                    Concatenate (SPB, NAM, Local0)
                    Concatenate (Local0, END, Local1)
                    Return (Local1)
                }
            }
        }

        Device (SDHC)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F14" /* Intel Baytrail SDIO/MMC Host Controller */)  // _HID: Hardware ID
            Name (_CID, "PNP0D40" /* SDA Standard Compliant SD Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) SD Card Controller - 80860F16")  // _DDN: DOS Device Name
            Name (_UID, 0x03)  // _UID: Unique ID
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                PEPD, 
                GPO0
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y0A)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002F,
                }
                GpioInt (Edge, ActiveBoth, SharedAndWake, PullNone, 0x2710,
                    "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0026
                    }
                GpioIo (Shared, PullDefault, 0x0000, 0x0000, IoRestrictionInputOnly,
                    "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                    )
                    {   // Pin list
                        0x0026
                    }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.SDHC._Y0A._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.SDHC._Y0A._LEN, B0LN)  // _LEN: Length
                B0BA = SD0A /* \SD0A */
                B0LN = SD0L /* \SD0L */
                Return (RBUF) /* \_SB_.SDHC.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((SD0A == Zero) || (SD3D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, SD1A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }
        }

        Device (GDM1)
        {
            Name (_HID, "INTL9C60" /* Intel Baytrail SOC DMA Controller */)  // _HID: Hardware ID
            Name (_DDN, "Intel(R) DMA Controller #1 - INTL9C60")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00004000,         // Address Length
                    _Y0B)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002A,
                }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.GDM1._Y0B._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.GDM1._Y0B._LEN, B0LN)  // _LEN: Length
                B0BA = D10A /* \D10A */
                B0LN = D10L /* \D10L */
                Return (RBUF) /* \_SB_.GDM1.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((D10A == Zero) || (L10D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }
        }

        Device (GDM2)
        {
            Name (_HID, "INTL9C60" /* Intel Baytrail SOC DMA Controller */)  // _HID: Hardware ID
            Name (_DDN, "Intel(R) DMA Controller #2 - INTL9C60")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00004000,         // Address Length
                    _Y0C)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x0000002B,
                }
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.GDM2._Y0C._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.GDM2._Y0C._LEN, B0LN)  // _LEN: Length
                B0BA = D20A /* \D20A */
                B0LN = D20L /* \D20L */
                Return (RBUF) /* \_SB_.GDM2.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((D20A == Zero) || (L20D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }
        }

        Device (PWM1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F09" /* Intel PWM Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F09" /* Intel PWM Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) PWM Controller #1 - 80860F08")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y0D)
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.PWM1._Y0D._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.PWM1._Y0D._LEN, B0LN)  // _LEN: Length
                B0BA = P10A /* \P10A */
                B0LN = P10L /* \P10L */
                Return (RBUF) /* \_SB_.PWM1.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((P10A == Zero) || (L11D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }
        }

        Device (PWM2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F09" /* Intel PWM Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F09" /* Intel PWM Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) PWM Controller #2 - 80860F09")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y0E)
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.PWM2._Y0E._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.PWM2._Y0E._LEN, B0LN)  // _LEN: Length
                B0BA = P20A /* \P20A */
                B0LN = P20L /* \P20L */
                Return (RBUF) /* \_SB_.PWM2.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((P20A == Zero) || (L12D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }
        }

        Device (URT1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F0A" /* Intel Atom UART Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F0A" /* Intel Atom UART Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) HS-UART Controller #1 - 80860F0A")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y0F)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000027,
                }
                FixedDMA (0x0002, 0x0002, Width32bit, )
                FixedDMA (0x0003, 0x0003, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.URT1._Y0F._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.URT1._Y0F._LEN, B0LN)  // _LEN: Length
                B0BA = U10A /* \U10A */
                B0LN = U10L /* \U10L */
                Return (RBUF) /* \_SB_.URT1.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((U10A == Zero) || (L13D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, U11A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Device (BTH0)
            {
                Name (_HID, "BCM2E3C")  // _HID: Hardware ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (UBUF, ResourceTemplate ()
                    {
                        UartSerialBus (0x0001C200, DataBitsEight, StopBitsOne,
                            0xFC, LittleEndian, ParityTypeNone, FlowControlNone,
                            0x0020, 0x0020, "\\_SB.URT1",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, ,, )
                        {
                            0x00000046,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0034
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0035
                            }
                    })
                    Name (PBUF, ResourceTemplate ()
                    {
                        UartSerialBus (0x0001C200, DataBitsEight, StopBitsOne,
                            0xFC, LittleEndian, ParityTypeNone, FlowControlNone,
                            0x0020, 0x0020, "\\_SB.URT1",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, ,, )
                        {
                            0x00000046,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0035
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0034
                            }
                    })
                    If ((BDID == 0x04))
                    {
                        If ((FBID == Zero))
                        {
                            Return (PBUF) /* \_SB_.URT1.BTH0._CRS.PBUF */
                        }
                    }

                    Return (UBUF) /* \_SB_.URT1.BTH0._CRS.UBUF */
                }
            }

            Device (BTH1)
            {
                Name (_HID, "BCM2E55")  // _HID: Hardware ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (UBUF, ResourceTemplate ()
                    {
                        UartSerialBus (0x0001C200, DataBitsEight, StopBitsOne,
                            0xFC, LittleEndian, ParityTypeNone, FlowControlNone,
                            0x0020, 0x0020, "\\_SB.URT1",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, ,, )
                        {
                            0x00000046,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0034
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0035
                            }
                    })
                    Name (PBUF, ResourceTemplate ()
                    {
                        UartSerialBus (0x0001C200, DataBitsEight, StopBitsOne,
                            0xFC, LittleEndian, ParityTypeNone, FlowControlNone,
                            0x0020, 0x0020, "\\_SB.URT1",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, ExclusiveAndWake, ,, )
                        {
                            0x00000046,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0035
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0034
                            }
                    })
                    If ((BDID == 0x04))
                    {
                        If ((FBID == Zero))
                        {
                            Return (PBUF) /* \_SB_.URT1.BTH1._CRS.PBUF */
                        }
                    }

                    Return (UBUF) /* \_SB_.URT1.BTH1._CRS.UBUF */
                }
            }
        }

        Device (URT2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F0A" /* Intel Atom UART Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F0A" /* Intel Atom UART Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) HS-UART Controller #2 - 80860F0C")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y10)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000028,
                }
                FixedDMA (0x0004, 0x0004, Width32bit, )
                FixedDMA (0x0005, 0x0005, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.URT2._Y10._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.URT2._Y10._LEN, B0LN)  // _LEN: Length
                B0BA = U20A /* \U20A */
                B0LN = U20L /* \U20L */
                Return (RBUF) /* \_SB_.URT2.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((U20A == Zero) || (L14D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, U21A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }
        }

        Device (SPI1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F0E" /* Intel SPI Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F0E" /* Intel SPI Controller */)  // _CID: Compatible ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_DDN, "Intel(R) SPI Controller - 80860F0E")  // _DDN: DOS Device Name
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y11)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000029,
                }
                FixedDMA (0x0000, 0x0000, Width32bit, )
                FixedDMA (0x0001, 0x0001, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.SPI1._Y11._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.SPI1._Y11._LEN, B0LN)  // _LEN: Length
                B0BA = SP0A /* \SP0A */
                B0LN = SP0L /* \SP0L */
                Return (RBUF) /* \_SB_.SPI1.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((SP0A == Zero) || (L15D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, SP1A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Device (FPNT)
            {
                Name (_HID, "AUTH2750" /* AuthenTec AES2750 */)  // _HID: Hardware ID
                Name (_DDN, "AuthenTec AES2750")  // _DDN: DOS Device Name
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (UBUF, ResourceTemplate ()
                    {
                        SpiSerialBus (0x0001, PolarityLow, FourWireMode, 0x08,
                            ControllerInitiated, 0x007A1200, ClockPolarityLow,
                            ClockPhaseSecond, "\\_SB.SPI1",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
                        {
                            0x00000048,
                        }
                    })
                    Return (UBUF) /* \_SB_.SPI1.FPNT._CRS.UBUF */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (Zero)
                }
            }
        }

        Device (I2C1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_DDN, "Intel(R) I2C Controller #1 - 80860F41")  // _DDN: DOS Device Name
            Name (_UID, One)  // _UID: Unique ID
            Name (I2CP, Zero)
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y12)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000020,
                }
                FixedDMA (0x0010, 0x0000, Width32bit, )
                FixedDMA (0x0011, 0x0001, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C1._Y12._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C1._Y12._LEN, B0LN)  // _LEN: Length
                B0BA = I10A /* \I10A */
                B0LN = I10L /* \I10L */
                Return (RBUF) /* \_SB_.I2C1.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I10A == Zero) || (L21D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                AVB2 = Zero
                If ((AVB1 == Zero))
                {
                    PSAT |= 0x03
                    PSAT |= Zero
                    I2CP = One
                }
                Else
                {
                    Sleep (0x06)
                    If ((AVB1 == Zero))
                    {
                        PSAT |= 0x03
                        PSAT |= Zero
                        I2CP = One
                    }
                }
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                If ((I2CP == One))
                {
                    PSAT &= 0xFFFFFFFC
                    PSAT |= Zero
                    I2CP = Zero
                }

                AVB2 = One
            }

            OperationRegion (KEYS, SystemMemory, I11A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }
        }

        Device (I2C2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (_DDN, "Intel(R) I2C Controller #2 - 80860F42")  // _DDN: DOS Device Name
            Name (_UID, 0x02)  // _UID: Unique ID
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y13)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000021,
                }
                FixedDMA (0x0012, 0x0002, Width32bit, )
                FixedDMA (0x0013, 0x0003, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C2._Y13._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C2._Y13._LEN, B0LN)  // _LEN: Length
                B0BA = I20A /* \I20A */
                B0LN = I20L /* \I20L */
                Return (RBUF) /* \_SB_.I2C2.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I20A == Zero) || (L22D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I21A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Device (RTEK)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "10EC5640" /* Realtek I2S Audio Codec */)  // _HID: Hardware ID
                Name (_CID, "10EC5640" /* Realtek I2S Audio Codec */)  // _CID: Compatible ID
                Name (_DDN, "RTEK Codec Controller ")  // _DDN: DOS Device Name
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x001A, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C2",
                            0x00, ResourceConsumer, ,
                            )
                        GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
                            "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0004
                            }
                    })
                    Return (SBUF) /* \_SB_.I2C2.RTEK._CRS.SBUF */
                }

                Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                {
                    Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                    Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                    If ((Arg0 == ToUUID ("a9240c44-f032-454d-80e5-7aeed80e9551")))
                    {
                        CreateByteField (Arg3, Zero, FARG)
                        While (One)
                        {
                            _T_0 = Arg2
                            If ((_T_0 == 0x03))
                            {
                                While (One)
                                {
                                    _T_1 = Arg3
                                    If ((_T_1 == Zero))
                                    {
                                        Return (0x07DD)
                                    }
                                    ElseIf ((_T_1 == 0x04))
                                    {
                                        Return (Buffer (0x54)
                                        {
                                            /* 0000 */  0x0A, 0x00, 0x00, 0xCE, 0x28, 0x00, 0x01, 0x00,  /* ....(... */
                                            /* 0008 */  0x3F, 0x00, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,  /* ?..."... */
                                            /* 0010 */  0x04, 0x00, 0xAA, 0x17, 0x2C, 0x00, 0x01, 0x00,  /* ....,... */
                                            /* 0018 */  0x62, 0x01, 0x00, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* b....... */
                                            /* 0020 */  0x8A, 0x8A, 0x02, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0028 */  0x0A, 0xA0, 0x45, 0x00, 0x14, 0x00, 0x01, 0x00,  /* ..E..... */
                                            /* 0030 */  0xCC, 0x4C, 0x07, 0x00, 0x2A, 0x00, 0x01, 0x00,  /* .L..*... */
                                            /* 0038 */  0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0040 */  0x00, 0x00, 0xFA, 0xFF, 0x1D, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0048 */  0x00, 0x40, 0xE6, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* .@...... */
                                            /* 0050 */  0x01, 0x5F, 0x31, 0x00                           /* ._1. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x02))
                                    {
                                        Return (Buffer (0x03CC)
                                        {
                                            /* 0000 */  0x03, 0x30, 0x72, 0x56, 0x1E, 0x00, 0x01, 0x00,  /* .0rV.... */
                                            /* 0008 */  0xA4, 0x00, 0xE6, 0x1E, 0x01, 0x00, 0xA5, 0x00,  /* ........ */
                                            /* 0010 */  0x00, 0xF9, 0x01, 0x00, 0xEB, 0x00, 0xEB, 0x03,  /* ........ */
                                            /* 0018 */  0x01, 0x00, 0xEC, 0x00, 0xFC, 0x82, 0x01, 0x00,  /* ........ */
                                            /* 0020 */  0xED, 0x00, 0x13, 0x1E, 0x01, 0x00, 0xEE, 0x00,  /* ........ */
                                            /* 0028 */  0xCB, 0xB6, 0x01, 0x00, 0xE7, 0x00, 0x1F, 0x1C,  /* ........ */
                                            /* 0030 */  0x01, 0x00, 0xE8, 0x00, 0x95, 0xA9, 0x01, 0x00,  /* ........ */
                                            /* 0038 */  0xE9, 0x00, 0xE1, 0x01, 0x01, 0x00, 0xEA, 0x00,  /* ........ */
                                            /* 0040 */  0x6E, 0x1A, 0x01, 0x00, 0xE5, 0x00, 0x05, 0x02,  /* n....... */
                                            /* 0048 */  0x01, 0x00, 0xE6, 0x00, 0xEC, 0xC3, 0x01, 0x00,  /* ........ */
                                            /* 0050 */  0xAE, 0x00, 0x06, 0xCF, 0x01, 0x00, 0xAF, 0x00,  /* ........ */
                                            /* 0058 */  0x8D, 0x18, 0x01, 0x00, 0xB0, 0x00, 0x73, 0x0C,  /* ......s. */
                                            /* 0060 */  0x01, 0x00, 0xB4, 0x00, 0x21, 0xC1, 0x01, 0x00,  /* ....!... */
                                            /* 0068 */  0xB5, 0x00, 0x69, 0x1F, 0x01, 0x00, 0xB6, 0x00,  /* ..i..... */
                                            /* 0070 */  0x54, 0xFB, 0x01, 0x00, 0xBA, 0x00, 0xC5, 0xC1,  /* T....... */
                                            /* 0078 */  0x01, 0x00, 0xBB, 0x00, 0x5D, 0x1E, 0x01, 0x00,  /* ....]... */
                                            /* 0080 */  0xBC, 0x00, 0x99, 0x06, 0x01, 0x00, 0xC0, 0x00,  /* ........ */
                                            /* 0088 */  0xF8, 0x1E, 0x01, 0x00, 0xC1, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0090 */  0x01, 0x00, 0xC4, 0x00, 0x68, 0x1F, 0x01, 0x00,  /* ....h... */
                                            /* 0098 */  0xC5, 0x00, 0x94, 0x00, 0x01, 0x00, 0xC6, 0x00,  /* ........ */
                                            /* 00A0 */  0x69, 0x1F, 0x01, 0x00, 0xCA, 0x00, 0xD6, 0x02,  /* i....... */
                                            /* 00A8 */  0x01, 0x00, 0xCC, 0x00, 0x18, 0x14, 0x00, 0x00,  /* ........ */
                                            /* 00B0 */  0xB1, 0x00, 0x2E, 0x03, 0x00, 0x00, 0xB0, 0x00,  /* ........ */
                                            /* 00B8 */  0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* .`...... */
                                            /* 00C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00D8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00E0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00E8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00F0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0x1C, 0x00,  /* ........ */
                                            /* 00F8 */  0x01, 0x00, 0xA6, 0x00, 0xE6, 0x1E, 0x01, 0x00,  /* ........ */
                                            /* 0100 */  0xA7, 0x00, 0x00, 0xF9, 0x01, 0x00, 0xF5, 0x00,  /* ........ */
                                            /* 0108 */  0xEB, 0x03, 0x01, 0x00, 0xF6, 0x00, 0xFC, 0x82,  /* ........ */
                                            /* 0110 */  0x01, 0x00, 0xF7, 0x00, 0x13, 0x1E, 0x01, 0x00,  /* ........ */
                                            /* 0118 */  0xF8, 0x00, 0xCB, 0xB6, 0x01, 0x00, 0xF1, 0x00,  /* ........ */
                                            /* 0120 */  0x1F, 0x1C, 0x01, 0x00, 0xF2, 0x00, 0x95, 0xA9,  /* ........ */
                                            /* 0128 */  0x01, 0x00, 0xF3, 0x00, 0xE1, 0x01, 0x01, 0x00,  /* ........ */
                                            /* 0130 */  0xF4, 0x00, 0x6E, 0x1A, 0x01, 0x00, 0xEF, 0x00,  /* ..n..... */
                                            /* 0138 */  0x05, 0x02, 0x01, 0x00, 0xF0, 0x00, 0xEC, 0xC3,  /* ........ */
                                            /* 0140 */  0x01, 0x00, 0xB1, 0x00, 0x06, 0xCF, 0x01, 0x00,  /* ........ */
                                            /* 0148 */  0xB2, 0x00, 0x8D, 0x18, 0x01, 0x00, 0xB3, 0x00,  /* ........ */
                                            /* 0150 */  0x73, 0x0C, 0x01, 0x00, 0xB7, 0x00, 0x21, 0xC1,  /* s.....!. */
                                            /* 0158 */  0x01, 0x00, 0xB8, 0x00, 0x69, 0x1F, 0x01, 0x00,  /* ....i... */
                                            /* 0160 */  0xB9, 0x00, 0x54, 0xFB, 0x01, 0x00, 0xBD, 0x00,  /* ..T..... */
                                            /* 0168 */  0xC5, 0xC1, 0x01, 0x00, 0xBE, 0x00, 0x5D, 0x1E,  /* ......]. */
                                            /* 0170 */  0x01, 0x00, 0xBF, 0x00, 0x99, 0x06, 0x01, 0x00,  /* ........ */
                                            /* 0178 */  0xC2, 0x00, 0xF8, 0x1E, 0x01, 0x00, 0xC3, 0x00,  /* ........ */
                                            /* 0180 */  0x00, 0x00, 0x01, 0x00, 0xC7, 0x00, 0x68, 0x1F,  /* ......h. */
                                            /* 0188 */  0x01, 0x00, 0xC8, 0x00, 0x94, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0190 */  0xC9, 0x00, 0x69, 0x1F, 0x01, 0x00, 0xCB, 0x00,  /* ..i..... */
                                            /* 0198 */  0xD6, 0x02, 0x01, 0x00, 0xCD, 0x00, 0x18, 0x14,  /* ........ */
                                            /* 01A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01D8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01E0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01E8 */  0x14, 0x00, 0x01, 0x00, 0xCE, 0x00, 0x10, 0x1C,  /* ........ */
                                            /* 01F0 */  0x01, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 01F8 */  0xD0, 0x00, 0x24, 0xDF, 0x01, 0x00, 0xD1, 0x00,  /* ..$..... */
                                            /* 0200 */  0xF7, 0x62, 0x01, 0x00, 0xD2, 0x00, 0x10, 0x48,  /* .b.....H */
                                            /* 0208 */  0x01, 0x00, 0xD3, 0x00, 0x87, 0xDB, 0x01, 0x00,  /* ........ */
                                            /* 0210 */  0xD4, 0x00, 0xF9, 0x0D, 0x01, 0x00, 0xD5, 0x00,  /* ........ */
                                            /* 0218 */  0x05, 0xF4, 0x01, 0x00, 0xD6, 0x00, 0x5F, 0xC2,  /* ......_. */
                                            /* 0220 */  0x01, 0x00, 0xD7, 0x00, 0xF8, 0x1D, 0x01, 0x00,  /* ........ */
                                            /* 0228 */  0xD8, 0x00, 0xEC, 0x0F, 0x01, 0x00, 0xD9, 0x00,  /* ........ */
                                            /* 0230 */  0x82, 0xC4, 0x01, 0x00, 0xDA, 0x00, 0xD2, 0x1C,  /* ........ */
                                            /* 0238 */  0x01, 0x00, 0xDB, 0x00, 0x05, 0xF8, 0x01, 0x00,  /* ........ */
                                            /* 0240 */  0xDC, 0x00, 0x36, 0x04, 0x01, 0x00, 0xDD, 0x00,  /* ..6..... */
                                            /* 0248 */  0x00, 0x00, 0x01, 0x00, 0xE1, 0x00, 0x92, 0x03,  /* ........ */
                                            /* 0250 */  0x01, 0x00, 0xE2, 0x00, 0xE8, 0x11, 0x00, 0x00,  /* ........ */
                                            /* 0258 */  0xAF, 0x00, 0x3D, 0x00, 0x00, 0x00, 0xAE, 0x00,  /* ..=..... */
                                            /* 0260 */  0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* .`...... */
                                            /* 0268 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0270 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0278 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0280 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0288 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0290 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0298 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02D8 */  0xCD, 0xCD, 0x14, 0x00, 0x01, 0x00, 0xCE, 0x00,  /* ........ */
                                            /* 02E0 */  0x00, 0x00, 0x01, 0x00, 0xCF, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 02E8 */  0x01, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 02F0 */  0xD1, 0x00, 0x00, 0x00, 0x01, 0x00, 0xD2, 0x00,  /* ........ */
                                            /* 02F8 */  0x00, 0x00, 0x01, 0x00, 0xD3, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0300 */  0x01, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0308 */  0xD5, 0x00, 0x00, 0x00, 0x01, 0x00, 0xD6, 0x00,  /* ........ */
                                            /* 0310 */  0x00, 0x00, 0x01, 0x00, 0xD7, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0318 */  0x01, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0320 */  0xD9, 0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x00,  /* ........ */
                                            /* 0328 */  0x00, 0x00, 0x01, 0x00, 0xDB, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0330 */  0x01, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0338 */  0xDD, 0x00, 0x00, 0x00, 0x01, 0x00, 0xE1, 0x00,  /* ........ */
                                            /* 0340 */  0x00, 0x00, 0x01, 0x00, 0xE2, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0348 */  0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0350 */  0xAE, 0x00, 0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD,  /* ...`.... */
                                            /* 0358 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0360 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0368 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0370 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0378 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0380 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0388 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0390 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0398 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03C8 */  0xCD, 0xCD, 0xCD, 0xCD                           /* .... */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x03))
                                    {
                                        Return (Buffer (0x42)
                                        {
                                            /* 0000 */  0x00, 0x20, 0x72, 0x56, 0x06, 0x00, 0x00, 0x00,  /* . rV.... */
                                            /* 0008 */  0xB2, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xB3, 0x00,  /* ........ */
                                            /* 0010 */  0x5F, 0x22, 0x00, 0x00, 0xB4, 0x00, 0x2C, 0x42,  /* _"....,B */
                                            /* 0018 */  0x00, 0x00, 0xB5, 0x00, 0x00, 0x1F, 0x00, 0x00,  /* ........ */
                                            /* 0020 */  0xB6, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xB7, 0x00,  /* ........ */
                                            /* 0028 */  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0030 */  0xF0, 0xE9, 0x09, 0x01, 0xF8, 0xE9, 0x09, 0x01,  /* ........ */
                                            /* 0038 */  0x08, 0x00, 0x00, 0x00, 0x7A, 0xE2, 0xA7, 0x77,  /* ....z..w */
                                            /* 0040 */  0xD2, 0xD5                                       /* .. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x06))
                                    {
                                        Return (Buffer (0x2E)
                                        {
                                            /* 0000 */  0x07, 0x41, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .A@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x04, 0x23, 0x00, 0x00,  /* KK...#.. */
                                            /* 0010 */  0x02, 0x00, 0xA8, 0x23, 0x00, 0x18, 0x02, 0x00,  /* ...#.... */
                                            /* 0018 */  0xAB, 0x23, 0x00, 0x70, 0x02, 0x00, 0xC4, 0x23,  /* .#.p...# */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x70, 0x23, 0x0A, 0x00,  /* .@..p#.. */
                                            /* 0028 */  0x02, 0x00, 0xC6, 0x23, 0x0A, 0x00               /* ...#.. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x07))
                                    {
                                        Return (Buffer (0x52)
                                        {
                                            /* 0000 */  0x0D, 0x42, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .B@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x2F, 0x23, 0x70, 0x00,  /* KK../#p. */
                                            /* 0010 */  0x02, 0x00, 0xFC, 0x22, 0x00, 0x60, 0x02, 0x00,  /* ...".`.. */
                                            /* 0018 */  0x2B, 0x23, 0x80, 0x00, 0x02, 0x00, 0x98, 0x22,  /* +#....." */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x09, 0x23, 0x00, 0x04,  /* .@...#.. */
                                            /* 0028 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0030 */  0x0D, 0x23, 0x00, 0x01, 0x02, 0x00, 0x8A, 0x23,  /* .#.....# */
                                            /* 0038 */  0x00, 0x20, 0x02, 0x00, 0xE7, 0x23, 0x00, 0x2C,  /* . ...#., */
                                            /* 0040 */  0x02, 0x00, 0xE8, 0x23, 0x00, 0x3C, 0x02, 0x00,  /* ...#.<.. */
                                            /* 0048 */  0xE9, 0x23, 0x00, 0x40, 0x02, 0x00, 0xEA, 0x23,  /* .#.@...# */
                                            /* 0050 */  0x00, 0x78                                       /* .x */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x08))
                                    {
                                        Return (Buffer (0x52)
                                        {
                                            /* 0000 */  0x0D, 0x43, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .C@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x2F, 0x23, 0x70, 0x00,  /* KK../#p. */
                                            /* 0010 */  0x02, 0x00, 0xFC, 0x22, 0x00, 0x60, 0x02, 0x00,  /* ...".`.. */
                                            /* 0018 */  0x2B, 0x23, 0x80, 0x00, 0x02, 0x00, 0x98, 0x22,  /* +#....." */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x09, 0x23, 0x00, 0x04,  /* .@...#.. */
                                            /* 0028 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0030 */  0x0D, 0x23, 0x00, 0x01, 0x02, 0x00, 0x8A, 0x23,  /* .#.....# */
                                            /* 0038 */  0x00, 0x20, 0x02, 0x00, 0xE7, 0x23, 0x00, 0x2C,  /* . ...#., */
                                            /* 0040 */  0x02, 0x00, 0xE8, 0x23, 0x00, 0x3C, 0x02, 0x00,  /* ...#.<.. */
                                            /* 0048 */  0xE9, 0x23, 0x00, 0x40, 0x02, 0x00, 0xEA, 0x23,  /* .#.@...# */
                                            /* 0050 */  0x00, 0x78                                       /* .x */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x09))
                                    {
                                        Return (Buffer (0x34)
                                        {
                                            /* 0000 */  0x08, 0x44, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .D@V.... */
                                            /* 0008 */  0x6C, 0x6C, 0x00, 0x00, 0x2E, 0x00, 0x2F, 0x2F,  /* ll....// */
                                            /* 0010 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0018 */  0xA8, 0x23, 0x00, 0x18, 0x02, 0x00, 0xAB, 0x23,  /* .#.....# */
                                            /* 0020 */  0x00, 0x70, 0x02, 0x00, 0xC4, 0x23, 0x00, 0x40,  /* .p...#.@ */
                                            /* 0028 */  0x02, 0x00, 0x70, 0x23, 0x0A, 0x00, 0x02, 0x00,  /* ..p#.... */
                                            /* 0030 */  0xC6, 0x23, 0x0A, 0x00                           /* .#.. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x0A))
                                    {
                                        Return (Buffer (0x46)
                                        {
                                            /* 0000 */  0x0B, 0x45, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .E@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0xFD, 0x22, 0x1A, 0x00,  /* KK...".. */
                                            /* 0010 */  0x02, 0x00, 0xF2, 0x22, 0x50, 0x00, 0x02, 0x00,  /* ..."P... */
                                            /* 0018 */  0x09, 0x23, 0x00, 0x02, 0x02, 0x00, 0x2F, 0x23,  /* .#..../# */
                                            /* 0020 */  0x40, 0x00, 0x02, 0x00, 0x71, 0x23, 0x0D, 0x00,  /* @...q#.. */
                                            /* 0028 */  0x02, 0x00, 0x8B, 0x23, 0x00, 0x28, 0x02, 0x00,  /* ...#.(.. */
                                            /* 0030 */  0x8C, 0x23, 0x00, 0x28, 0x02, 0x00, 0xC4, 0x23,  /* .#.(...# */
                                            /* 0038 */  0xFF, 0x7F, 0x02, 0x00, 0xFC, 0x22, 0x00, 0x60,  /* .....".` */
                                            /* 0040 */  0x02, 0x00, 0x2B, 0x23, 0x80, 0x00               /* ..+#.. */
                                        })
                                    }
                                    Else
                                    {
                                        Return (0x80000002)
                                    }

                                    Break
                                }
                            }

                            Break
                        }
                    }

                    Return (0x80000002)
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (Zero)
                }

                Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
                {
                    CKC3 = Zero
                }

                Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
                {
                    CKC3 = One
                }

                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                {
                }
            }

            Device (RTE2)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "10EC5640" /* Realtek I2S Audio Codec */)  // _HID: Hardware ID
                Name (_CID, "10EC5640" /* Realtek I2S Audio Codec */)  // _CID: Compatible ID
                Name (_DDN, "RTEK Codec Controller ")  // _DDN: DOS Device Name
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x001C, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C2",
                            0x00, ResourceConsumer, ,
                            )
                        GpioInt (Edge, ActiveHigh, ExclusiveAndWake, PullNone, 0x0000,
                            "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0004
                            }
                    })
                    Return (SBUF) /* \_SB_.I2C2.RTE2._CRS.SBUF */
                }

                Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                {
                    Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                    Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                    If ((Arg0 == ToUUID ("a9240c44-f032-454d-80e5-7aeed80e9551")))
                    {
                        CreateByteField (Arg3, Zero, FARG)
                        While (One)
                        {
                            _T_0 = Arg2
                            If ((_T_0 == 0x03))
                            {
                                While (One)
                                {
                                    _T_1 = Arg3
                                    If ((_T_1 == Zero))
                                    {
                                        Return (0x07DD)
                                    }
                                    ElseIf ((_T_1 == 0x04))
                                    {
                                        Return (Buffer (0x54)
                                        {
                                            /* 0000 */  0x0A, 0x00, 0x00, 0xCE, 0x28, 0x00, 0x01, 0x00,  /* ....(... */
                                            /* 0008 */  0x3F, 0x00, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00,  /* ?..."... */
                                            /* 0010 */  0x04, 0x00, 0xAA, 0x17, 0x2C, 0x00, 0x01, 0x00,  /* ....,... */
                                            /* 0018 */  0x62, 0x01, 0x00, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* b....... */
                                            /* 0020 */  0x8A, 0x8A, 0x02, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0028 */  0x0A, 0xA0, 0x45, 0x00, 0x14, 0x00, 0x01, 0x00,  /* ..E..... */
                                            /* 0030 */  0xCC, 0x4C, 0x07, 0x00, 0x2A, 0x00, 0x01, 0x00,  /* .L..*... */
                                            /* 0038 */  0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0040 */  0x00, 0x00, 0xFA, 0xFF, 0x1D, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0048 */  0x00, 0x40, 0xE6, 0x00, 0x1D, 0x00, 0x01, 0x00,  /* .@...... */
                                            /* 0050 */  0x01, 0x5F, 0x31, 0x00                           /* ._1. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x02))
                                    {
                                        Return (Buffer (0x03CC)
                                        {
                                            /* 0000 */  0x03, 0x30, 0x72, 0x56, 0x1E, 0x00, 0x01, 0x00,  /* .0rV.... */
                                            /* 0008 */  0xA4, 0x00, 0xE6, 0x1E, 0x01, 0x00, 0xA5, 0x00,  /* ........ */
                                            /* 0010 */  0x00, 0xF9, 0x01, 0x00, 0xEB, 0x00, 0xEB, 0x03,  /* ........ */
                                            /* 0018 */  0x01, 0x00, 0xEC, 0x00, 0xFC, 0x82, 0x01, 0x00,  /* ........ */
                                            /* 0020 */  0xED, 0x00, 0x13, 0x1E, 0x01, 0x00, 0xEE, 0x00,  /* ........ */
                                            /* 0028 */  0xCB, 0xB6, 0x01, 0x00, 0xE7, 0x00, 0x1F, 0x1C,  /* ........ */
                                            /* 0030 */  0x01, 0x00, 0xE8, 0x00, 0x95, 0xA9, 0x01, 0x00,  /* ........ */
                                            /* 0038 */  0xE9, 0x00, 0xE1, 0x01, 0x01, 0x00, 0xEA, 0x00,  /* ........ */
                                            /* 0040 */  0x6E, 0x1A, 0x01, 0x00, 0xE5, 0x00, 0x05, 0x02,  /* n....... */
                                            /* 0048 */  0x01, 0x00, 0xE6, 0x00, 0xEC, 0xC3, 0x01, 0x00,  /* ........ */
                                            /* 0050 */  0xAE, 0x00, 0x06, 0xCF, 0x01, 0x00, 0xAF, 0x00,  /* ........ */
                                            /* 0058 */  0x8D, 0x18, 0x01, 0x00, 0xB0, 0x00, 0x73, 0x0C,  /* ......s. */
                                            /* 0060 */  0x01, 0x00, 0xB4, 0x00, 0x21, 0xC1, 0x01, 0x00,  /* ....!... */
                                            /* 0068 */  0xB5, 0x00, 0x69, 0x1F, 0x01, 0x00, 0xB6, 0x00,  /* ..i..... */
                                            /* 0070 */  0x54, 0xFB, 0x01, 0x00, 0xBA, 0x00, 0xC5, 0xC1,  /* T....... */
                                            /* 0078 */  0x01, 0x00, 0xBB, 0x00, 0x5D, 0x1E, 0x01, 0x00,  /* ....]... */
                                            /* 0080 */  0xBC, 0x00, 0x99, 0x06, 0x01, 0x00, 0xC0, 0x00,  /* ........ */
                                            /* 0088 */  0xF8, 0x1E, 0x01, 0x00, 0xC1, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0090 */  0x01, 0x00, 0xC4, 0x00, 0x68, 0x1F, 0x01, 0x00,  /* ....h... */
                                            /* 0098 */  0xC5, 0x00, 0x94, 0x00, 0x01, 0x00, 0xC6, 0x00,  /* ........ */
                                            /* 00A0 */  0x69, 0x1F, 0x01, 0x00, 0xCA, 0x00, 0xD6, 0x02,  /* i....... */
                                            /* 00A8 */  0x01, 0x00, 0xCC, 0x00, 0x18, 0x14, 0x00, 0x00,  /* ........ */
                                            /* 00B0 */  0xB1, 0x00, 0x2E, 0x03, 0x00, 0x00, 0xB0, 0x00,  /* ........ */
                                            /* 00B8 */  0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* .`...... */
                                            /* 00C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00D8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00E0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00E8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 00F0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0x1C, 0x00,  /* ........ */
                                            /* 00F8 */  0x01, 0x00, 0xA6, 0x00, 0xE6, 0x1E, 0x01, 0x00,  /* ........ */
                                            /* 0100 */  0xA7, 0x00, 0x00, 0xF9, 0x01, 0x00, 0xF5, 0x00,  /* ........ */
                                            /* 0108 */  0xEB, 0x03, 0x01, 0x00, 0xF6, 0x00, 0xFC, 0x82,  /* ........ */
                                            /* 0110 */  0x01, 0x00, 0xF7, 0x00, 0x13, 0x1E, 0x01, 0x00,  /* ........ */
                                            /* 0118 */  0xF8, 0x00, 0xCB, 0xB6, 0x01, 0x00, 0xF1, 0x00,  /* ........ */
                                            /* 0120 */  0x1F, 0x1C, 0x01, 0x00, 0xF2, 0x00, 0x95, 0xA9,  /* ........ */
                                            /* 0128 */  0x01, 0x00, 0xF3, 0x00, 0xE1, 0x01, 0x01, 0x00,  /* ........ */
                                            /* 0130 */  0xF4, 0x00, 0x6E, 0x1A, 0x01, 0x00, 0xEF, 0x00,  /* ..n..... */
                                            /* 0138 */  0x05, 0x02, 0x01, 0x00, 0xF0, 0x00, 0xEC, 0xC3,  /* ........ */
                                            /* 0140 */  0x01, 0x00, 0xB1, 0x00, 0x06, 0xCF, 0x01, 0x00,  /* ........ */
                                            /* 0148 */  0xB2, 0x00, 0x8D, 0x18, 0x01, 0x00, 0xB3, 0x00,  /* ........ */
                                            /* 0150 */  0x73, 0x0C, 0x01, 0x00, 0xB7, 0x00, 0x21, 0xC1,  /* s.....!. */
                                            /* 0158 */  0x01, 0x00, 0xB8, 0x00, 0x69, 0x1F, 0x01, 0x00,  /* ....i... */
                                            /* 0160 */  0xB9, 0x00, 0x54, 0xFB, 0x01, 0x00, 0xBD, 0x00,  /* ..T..... */
                                            /* 0168 */  0xC5, 0xC1, 0x01, 0x00, 0xBE, 0x00, 0x5D, 0x1E,  /* ......]. */
                                            /* 0170 */  0x01, 0x00, 0xBF, 0x00, 0x99, 0x06, 0x01, 0x00,  /* ........ */
                                            /* 0178 */  0xC2, 0x00, 0xF8, 0x1E, 0x01, 0x00, 0xC3, 0x00,  /* ........ */
                                            /* 0180 */  0x00, 0x00, 0x01, 0x00, 0xC7, 0x00, 0x68, 0x1F,  /* ......h. */
                                            /* 0188 */  0x01, 0x00, 0xC8, 0x00, 0x94, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0190 */  0xC9, 0x00, 0x69, 0x1F, 0x01, 0x00, 0xCB, 0x00,  /* ..i..... */
                                            /* 0198 */  0xD6, 0x02, 0x01, 0x00, 0xCD, 0x00, 0x18, 0x14,  /* ........ */
                                            /* 01A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01D8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01E0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 01E8 */  0x14, 0x00, 0x01, 0x00, 0xCE, 0x00, 0x10, 0x1C,  /* ........ */
                                            /* 01F0 */  0x01, 0x00, 0xCF, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 01F8 */  0xD0, 0x00, 0x24, 0xDF, 0x01, 0x00, 0xD1, 0x00,  /* ..$..... */
                                            /* 0200 */  0xF7, 0x62, 0x01, 0x00, 0xD2, 0x00, 0x10, 0x48,  /* .b.....H */
                                            /* 0208 */  0x01, 0x00, 0xD3, 0x00, 0x87, 0xDB, 0x01, 0x00,  /* ........ */
                                            /* 0210 */  0xD4, 0x00, 0xF9, 0x0D, 0x01, 0x00, 0xD5, 0x00,  /* ........ */
                                            /* 0218 */  0x05, 0xF4, 0x01, 0x00, 0xD6, 0x00, 0x5F, 0xC2,  /* ......_. */
                                            /* 0220 */  0x01, 0x00, 0xD7, 0x00, 0xF8, 0x1D, 0x01, 0x00,  /* ........ */
                                            /* 0228 */  0xD8, 0x00, 0xEC, 0x0F, 0x01, 0x00, 0xD9, 0x00,  /* ........ */
                                            /* 0230 */  0x82, 0xC4, 0x01, 0x00, 0xDA, 0x00, 0xD2, 0x1C,  /* ........ */
                                            /* 0238 */  0x01, 0x00, 0xDB, 0x00, 0x05, 0xF8, 0x01, 0x00,  /* ........ */
                                            /* 0240 */  0xDC, 0x00, 0x36, 0x04, 0x01, 0x00, 0xDD, 0x00,  /* ..6..... */
                                            /* 0248 */  0x00, 0x00, 0x01, 0x00, 0xE1, 0x00, 0x92, 0x03,  /* ........ */
                                            /* 0250 */  0x01, 0x00, 0xE2, 0x00, 0xE8, 0x11, 0x00, 0x00,  /* ........ */
                                            /* 0258 */  0xAF, 0x00, 0x3D, 0x00, 0x00, 0x00, 0xAE, 0x00,  /* ..=..... */
                                            /* 0260 */  0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* .`...... */
                                            /* 0268 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0270 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0278 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0280 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0288 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0290 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0298 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02C8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02D0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 02D8 */  0xCD, 0xCD, 0x14, 0x00, 0x01, 0x00, 0xCE, 0x00,  /* ........ */
                                            /* 02E0 */  0x00, 0x00, 0x01, 0x00, 0xCF, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 02E8 */  0x01, 0x00, 0xD0, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 02F0 */  0xD1, 0x00, 0x00, 0x00, 0x01, 0x00, 0xD2, 0x00,  /* ........ */
                                            /* 02F8 */  0x00, 0x00, 0x01, 0x00, 0xD3, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0300 */  0x01, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0308 */  0xD5, 0x00, 0x00, 0x00, 0x01, 0x00, 0xD6, 0x00,  /* ........ */
                                            /* 0310 */  0x00, 0x00, 0x01, 0x00, 0xD7, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0318 */  0x01, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0320 */  0xD9, 0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x00,  /* ........ */
                                            /* 0328 */  0x00, 0x00, 0x01, 0x00, 0xDB, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0330 */  0x01, 0x00, 0xDC, 0x00, 0x00, 0x00, 0x01, 0x00,  /* ........ */
                                            /* 0338 */  0xDD, 0x00, 0x00, 0x00, 0x01, 0x00, 0xE1, 0x00,  /* ........ */
                                            /* 0340 */  0x00, 0x00, 0x01, 0x00, 0xE2, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0348 */  0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0350 */  0xAE, 0x00, 0x00, 0x60, 0xCD, 0xCD, 0xCD, 0xCD,  /* ...`.... */
                                            /* 0358 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0360 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0368 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0370 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0378 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0380 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0388 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0390 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 0398 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03A0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03A8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03B0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03B8 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03C0 */  0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,  /* ........ */
                                            /* 03C8 */  0xCD, 0xCD, 0xCD, 0xCD                           /* .... */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x03))
                                    {
                                        Return (Buffer (0x42)
                                        {
                                            /* 0000 */  0x00, 0x20, 0x72, 0x56, 0x06, 0x00, 0x00, 0x00,  /* . rV.... */
                                            /* 0008 */  0xB2, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xB3, 0x00,  /* ........ */
                                            /* 0010 */  0x5F, 0x22, 0x00, 0x00, 0xB4, 0x00, 0x2C, 0x42,  /* _"....,B */
                                            /* 0018 */  0x00, 0x00, 0xB5, 0x00, 0x00, 0x1F, 0x00, 0x00,  /* ........ */
                                            /* 0020 */  0xB6, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xB7, 0x00,  /* ........ */
                                            /* 0028 */  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                                            /* 0030 */  0xF0, 0xE9, 0x09, 0x01, 0xF8, 0xE9, 0x09, 0x01,  /* ........ */
                                            /* 0038 */  0x08, 0x00, 0x00, 0x00, 0x7A, 0xE2, 0xA7, 0x77,  /* ....z..w */
                                            /* 0040 */  0xD2, 0xD5                                       /* .. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x06))
                                    {
                                        Return (Buffer (0x2E)
                                        {
                                            /* 0000 */  0x07, 0x41, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .A@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x04, 0x23, 0x00, 0x00,  /* KK...#.. */
                                            /* 0010 */  0x02, 0x00, 0xA8, 0x23, 0x00, 0x18, 0x02, 0x00,  /* ...#.... */
                                            /* 0018 */  0xAB, 0x23, 0x00, 0x70, 0x02, 0x00, 0xC4, 0x23,  /* .#.p...# */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x70, 0x23, 0x0A, 0x00,  /* .@..p#.. */
                                            /* 0028 */  0x02, 0x00, 0xC6, 0x23, 0x0A, 0x00               /* ...#.. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x07))
                                    {
                                        Return (Buffer (0x52)
                                        {
                                            /* 0000 */  0x0D, 0x42, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .B@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x2F, 0x23, 0x70, 0x00,  /* KK../#p. */
                                            /* 0010 */  0x02, 0x00, 0xFC, 0x22, 0x00, 0x60, 0x02, 0x00,  /* ...".`.. */
                                            /* 0018 */  0x2B, 0x23, 0x80, 0x00, 0x02, 0x00, 0x98, 0x22,  /* +#....." */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x09, 0x23, 0x00, 0x04,  /* .@...#.. */
                                            /* 0028 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0030 */  0x0D, 0x23, 0x00, 0x01, 0x02, 0x00, 0x8A, 0x23,  /* .#.....# */
                                            /* 0038 */  0x00, 0x20, 0x02, 0x00, 0xE7, 0x23, 0x00, 0x2C,  /* . ...#., */
                                            /* 0040 */  0x02, 0x00, 0xE8, 0x23, 0x00, 0x3C, 0x02, 0x00,  /* ...#.<.. */
                                            /* 0048 */  0xE9, 0x23, 0x00, 0x40, 0x02, 0x00, 0xEA, 0x23,  /* .#.@...# */
                                            /* 0050 */  0x00, 0x78                                       /* .x */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x08))
                                    {
                                        Return (Buffer (0x52)
                                        {
                                            /* 0000 */  0x0D, 0x43, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .C@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0x2F, 0x23, 0x70, 0x00,  /* KK../#p. */
                                            /* 0010 */  0x02, 0x00, 0xFC, 0x22, 0x00, 0x60, 0x02, 0x00,  /* ...".`.. */
                                            /* 0018 */  0x2B, 0x23, 0x80, 0x00, 0x02, 0x00, 0x98, 0x22,  /* +#....." */
                                            /* 0020 */  0x00, 0x40, 0x02, 0x00, 0x09, 0x23, 0x00, 0x04,  /* .@...#.. */
                                            /* 0028 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0030 */  0x0D, 0x23, 0x00, 0x01, 0x02, 0x00, 0x8A, 0x23,  /* .#.....# */
                                            /* 0038 */  0x00, 0x20, 0x02, 0x00, 0xE7, 0x23, 0x00, 0x2C,  /* . ...#., */
                                            /* 0040 */  0x02, 0x00, 0xE8, 0x23, 0x00, 0x3C, 0x02, 0x00,  /* ...#.<.. */
                                            /* 0048 */  0xE9, 0x23, 0x00, 0x40, 0x02, 0x00, 0xEA, 0x23,  /* .#.@...# */
                                            /* 0050 */  0x00, 0x78                                       /* .x */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x09))
                                    {
                                        Return (Buffer (0x34)
                                        {
                                            /* 0000 */  0x08, 0x44, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .D@V.... */
                                            /* 0008 */  0x6C, 0x6C, 0x00, 0x00, 0x2E, 0x00, 0x2F, 0x2F,  /* ll....// */
                                            /* 0010 */  0x02, 0x00, 0x0C, 0x23, 0x00, 0x01, 0x02, 0x00,  /* ...#.... */
                                            /* 0018 */  0xA8, 0x23, 0x00, 0x18, 0x02, 0x00, 0xAB, 0x23,  /* .#.....# */
                                            /* 0020 */  0x00, 0x70, 0x02, 0x00, 0xC4, 0x23, 0x00, 0x40,  /* .p...#.@ */
                                            /* 0028 */  0x02, 0x00, 0x70, 0x23, 0x0A, 0x00, 0x02, 0x00,  /* ..p#.... */
                                            /* 0030 */  0xC6, 0x23, 0x0A, 0x00                           /* .#.. */
                                        })
                                    }
                                    ElseIf ((_T_1 == 0x0A))
                                    {
                                        Return (Buffer (0x46)
                                        {
                                            /* 0000 */  0x0B, 0x45, 0x40, 0x56, 0x00, 0x00, 0x1C, 0x00,  /* .E@V.... */
                                            /* 0008 */  0x4B, 0x4B, 0x02, 0x00, 0xFD, 0x22, 0x1A, 0x00,  /* KK...".. */
                                            /* 0010 */  0x02, 0x00, 0xF2, 0x22, 0x50, 0x00, 0x02, 0x00,  /* ..."P... */
                                            /* 0018 */  0x09, 0x23, 0x00, 0x02, 0x02, 0x00, 0x2F, 0x23,  /* .#..../# */
                                            /* 0020 */  0x40, 0x00, 0x02, 0x00, 0x71, 0x23, 0x0D, 0x00,  /* @...q#.. */
                                            /* 0028 */  0x02, 0x00, 0x8B, 0x23, 0x00, 0x28, 0x02, 0x00,  /* ...#.(.. */
                                            /* 0030 */  0x8C, 0x23, 0x00, 0x28, 0x02, 0x00, 0xC4, 0x23,  /* .#.(...# */
                                            /* 0038 */  0xFF, 0x7F, 0x02, 0x00, 0xFC, 0x22, 0x00, 0x60,  /* .....".` */
                                            /* 0040 */  0x02, 0x00, 0x2B, 0x23, 0x80, 0x00               /* ..+#.. */
                                        })
                                    }
                                    Else
                                    {
                                        Return (0x80000002)
                                    }

                                    Break
                                }
                            }

                            Break
                        }
                    }

                    Return (0x80000002)
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
                {
                    CKC3 = Zero
                }

                Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
                {
                    CKC3 = One
                }

                Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                {
                }
            }
        }

        Device (I2C3)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) I2C Controller #3 - 80860F43")  // _DDN: DOS Device Name
            Name (_UID, 0x03)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y14)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000022,
                }
                FixedDMA (0x0014, 0x0004, Width32bit, )
                FixedDMA (0x0015, 0x0005, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C3._Y14._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C3._Y14._LEN, B0LN)  // _LEN: Length
                B0BA = I30A /* \I30A */
                B0LN = I30L /* \I30L */
                Return (RBUF) /* \_SB_.I2C3.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I30A == Zero) || (L23D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I31A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }
        }

        Device (I2C4)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) I2C Controller #4 - 80860F44")  // _DDN: DOS Device Name
            Name (_UID, 0x04)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y15)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000023,
                }
                FixedDMA (0x0016, 0x0006, Width32bit, )
                FixedDMA (0x0017, 0x0007, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C4._Y15._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C4._Y15._LEN, B0LN)  // _LEN: Length
                B0BA = I40A /* \I40A */
                B0LN = I40L /* \I40L */
                Return (RBUF) /* \_SB_.I2C4.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I40A == Zero) || (L24D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I41A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            PowerResource (CLK0, 0x00, 0x0000)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (CKC0) /* \CKC0 */
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                    CKC0 = One
                    CKF0 = One
                    Sleep (0x20)
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                    CKC0 = 0x02
                }
            }

            PowerResource (CLK1, 0x00, 0x0000)
            {
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (CKC1) /* \CKC1 */
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                    CKC1 = One
                    CKF1 = One
                    Sleep (0x20)
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                    CKC1 = 0x02
                }
            }

            Device (CAM0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INTCF0B")  // _HID: Hardware ID
                Name (_CID, "INTCF0B")  // _CID: Compatible ID
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_DDN, "OV2720")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x02)  // _DEP: Dependencies
                {
                    I2C7, 
                    ^^I2C7.PMIC
                })
                Name (_PR0, Package (0x03)  // _PR0: Power Resources for D0
                {
                    P28X, 
                    P18X, 
                    CLK1
                })
                Name (PLDB, Package (0x01)
                {
                    Buffer (0x14)
                    {
                        /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                        /* 0008 */  0x61, 0x4C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* aL...... */
                        /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                    }
                })
                Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                {
                    Return (PLDB) /* \_SB_.I2C4.CAM0.PLDB */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((BDID == 0x04))
                    {
                        If ((FBID == 0x02))
                        {
                            Return (Zero)
                        }

                        If ((FBID == 0x03))
                        {
                            Return (Zero)
                        }
                    }

                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0016
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0019
                            }
                        I2cSerialBus (0x0036, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C4.CAM0._CRS.SBUF */
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("377ba76a-f390-4aff-ab38-9b1bf33a3015")))
                    {
                        Return ("INTCF0B")
                    }

                    If ((Arg0 == ToUUID ("3c62aaaa-d8e0-401a-84c3-fc05656fa28c")))
                    {
                        Return ("OV2720")
                    }

                    If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
                    {
                        Return ("11P2SF208")
                    }

                    If ((Arg0 == ToUUID ("2959512a-028c-4646-b73d-4d1b5672fad8")))
                    {
                        If ((BDID == 0x04))
                        {
                            If ((FBID == 0x02))
                            {
                                Return ("INTEL_FFRD")
                            }

                            If ((FBID == 0x03))
                            {
                                Return ("INTEL_FFRD")
                            }
                        }

                        Return ("INTEL_RVP")
                    }

                    If ((Arg0 == ToUUID ("918ab242-c37c-450a-9d0f-f47ab97c3dea")))
                    {
                        Return (0x0101)
                    }

                    If ((Arg0 == ToUUID ("ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("b65ac492-9e30-4d60-b5b2-f497c790d9cf")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("e770ab0f-2644-4bab-8628-d62f1683fb9d")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("1ea54ab2-cd84-48cc-9dd4-7f594ec3b015")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("8dbe2651-70c1-4c6f-ac87-a37cb46e4af6")))
                    {
                        Return (One)
                    }

                    If ((Arg0 == ToUUID ("75c9a639-5c8a-4a00-9f48-a9c3b5da789f")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x04003600)
                        }
                    }

                    If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (0x02)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x01001600)
                        }

                        If ((Arg2 == 0x03))
                        {
                            Return (0x01001901)
                        }
                    }

                    Return (Zero)
                }
            }

            Device (CAM1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INTCF1A" /* Sony IMX175 Camera Sensor */)  // _HID: Hardware ID
                Name (_CID, "INTCF1A" /* Sony IMX175 Camera Sensor */)  // _CID: Compatible ID
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_DDN, "Sony IMX175")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x02)  // _DEP: Dependencies
                {
                    I2C7, 
                    ^^I2C7.PMIC
                })
                Name (_PR0, Package (0x03)  // _PR0: Power Resources for D0
                {
                    P28X, 
                    P18X, 
                    CLK0
                })
                Name (PLDB, Package (0x01)
                {
                    Buffer (0x14)
                    {
                        /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                        /* 0008 */  0x69, 0x4C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* iL...... */
                        /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                    }
                })
                Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                {
                    Return (PLDB) /* \_SB_.I2C4.CAM1.PLDB */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((BDID == 0x03))
                    {
                        Return (Zero)
                    }

                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0018
                            }
                        I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                        I2cSerialBus (0x000C, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                        I2cSerialBus (0x0054, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C4.CAM1._CRS.SBUF */
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("377ba76a-f390-4aff-ab38-9b1bf33a3015")))
                    {
                        Return ("INTCF1A")
                    }

                    If ((Arg0 == ToUUID ("3c62aaaa-d8e0-401a-84c3-fc05656fa28c")))
                    {
                        Return ("IMX175")
                    }

                    If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
                    {
                        Return ("13P2BA832A")
                    }

                    If ((Arg0 == ToUUID ("2959512a-028c-4646-b73d-4d1b5672fad8")))
                    {
                        If ((BDID == 0x04))
                        {
                            If ((FBID == 0x02))
                            {
                                Return ("INTEL_FFRD")
                            }

                            If ((FBID == 0x03))
                            {
                                Return ("INTEL_FFRD")
                            }
                        }

                        Return ("INTEL_RVP")
                    }

                    If ((Arg0 == ToUUID ("918ab242-c37c-450a-9d0f-f47ab97c3dea")))
                    {
                        Return (0x0104)
                    }

                    If ((Arg0 == ToUUID ("ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab")))
                    {
                        Return (One)
                    }

                    If ((Arg0 == ToUUID ("b65ac492-9e30-4d60-b5b2-f497c790d9cf")))
                    {
                        If ((CAMI == One))
                        {
                            Return (One)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    If ((Arg0 == ToUUID ("e770ab0f-2644-4bab-8628-d62f1683fb9d")))
                    {
                        Return (0x02)
                    }

                    If ((Arg0 == ToUUID ("1ea54ab2-cd84-48cc-9dd4-7f594ec3b015")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("8dbe2651-70c1-4c6f-ac87-a37cb46e4af6")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("75c9a639-5c8a-4a00-9f48-a9c3b5da789f")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (0x03)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x04001000)
                        }

                        If ((Arg2 == 0x03))
                        {
                            Return (0x04000C01)
                        }

                        If ((Arg2 == 0x04))
                        {
                            Return (0x04005402)
                        }
                    }

                    If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x01001800)
                        }
                    }

                    Return (Zero)
                }
            }

            Device (CAM3)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INTCF1B")  // _HID: Hardware ID
                Name (_CID, "INTCF1B")  // _CID: Compatible ID
                Name (_SUB, "INTL0000")  // _SUB: Subsystem ID
                Name (_DDN, "Sony IMX134")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x02)  // _DEP: Dependencies
                {
                    I2C7, 
                    ^^I2C7.PMIC
                })
                Name (_PR0, Package (0x03)  // _PR0: Power Resources for D0
                {
                    P28X, 
                    P18X, 
                    CLK0
                })
                Name (PLDB, Package (0x01)
                {
                    Buffer (0x14)
                    {
                        /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                        /* 0008 */  0x69, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* i....... */
                        /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                    }
                })
                Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                {
                    Return (PLDB) /* \_SB_.I2C4.CAM3.PLDB */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((BDID == 0x03))
                    {
                        Return (0x0F)
                    }

                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0018
                            }
                        I2cSerialBus (0x0010, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                        I2cSerialBus (0x000C, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                        I2cSerialBus (0x0054, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C4.CAM3._CRS.SBUF */
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("377ba76a-f390-4aff-ab38-9b1bf33a3015")))
                    {
                        Return ("INTCF1A")
                    }

                    If ((Arg0 == ToUUID ("3c62aaaa-d8e0-401a-84c3-fc05656fa28c")))
                    {
                        Return ("IMX175")
                    }

                    If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
                    {
                        Return ("13P2BA807")
                    }

                    If ((Arg0 == ToUUID ("2959512a-028c-4646-b73d-4d1b5672fad8")))
                    {
                        If ((BDID == 0x04))
                        {
                            If ((FBID == 0x02))
                            {
                                Return ("INTEL_FFRD")
                            }

                            If ((FBID == 0x03))
                            {
                                Return ("INTEL_FFRD")
                            }
                        }

                        Return ("INTEL_RVP")
                    }

                    If ((Arg0 == ToUUID ("918ab242-c37c-450a-9d0f-f47ab97c3dea")))
                    {
                        Return (0x0104)
                    }

                    If ((Arg0 == ToUUID ("ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab")))
                    {
                        Return (One)
                    }

                    If ((Arg0 == ToUUID ("b65ac492-9e30-4d60-b5b2-f497c790d9cf")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("e770ab0f-2644-4bab-8628-d62f1683fb9d")))
                    {
                        Return (0x02)
                    }

                    If ((Arg0 == ToUUID ("1ea54ab2-cd84-48cc-9dd4-7f594ec3b015")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("8dbe2651-70c1-4c6f-ac87-a37cb46e4af6")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("75c9a639-5c8a-4a00-9f48-a9c3b5da789f")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (0x03)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x04001000)
                        }

                        If ((Arg2 == 0x03))
                        {
                            Return (0x04000C01)
                        }

                        If ((Arg2 == 0x04))
                        {
                            Return (0x04005402)
                        }
                    }

                    If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x01001800)
                        }
                    }

                    Return (Zero)
                }
            }

            Device (CAM2)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INT33FB" /* MIPI-CSI Camera Sensor OV2722 */)  // _HID: Hardware ID
                Name (_CID, "INT33FB" /* MIPI-CSI Camera Sensor OV2722 */)  // _CID: Compatible ID
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_DDN, "OV2722")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x02)  // _DEP: Dependencies
                {
                    I2C7, 
                    ^^I2C7.PMIC
                })
                Name (_PR0, Package (0x03)  // _PR0: Power Resources for D0
                {
                    P28X, 
                    P18X, 
                    CLK1
                })
                Name (PLDB, Package (0x01)
                {
                    Buffer (0x14)
                    {
                        /* 0000 */  0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                        /* 0008 */  0x61, 0x4C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,  /* aL...... */
                        /* 0010 */  0xFF, 0xFF, 0xFF, 0xFF                           /* .... */
                    }
                })
                Method (_PLD, 0, Serialized)  // _PLD: Physical Location of Device
                {
                    Return (PLDB) /* \_SB_.I2C4.CAM2.PLDB */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((BDID == 0x03))
                    {
                        Return (Zero)
                    }

                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0016
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0019
                            }
                        I2cSerialBus (0x0036, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C4.CAM2._CRS.SBUF */
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("377ba76a-f390-4aff-ab38-9b1bf33a3015")))
                    {
                        Return ("INT33FB")
                    }

                    If ((Arg0 == ToUUID ("3c62aaaa-d8e0-401a-84c3-fc05656fa28c")))
                    {
                        Return ("OV2722")
                    }

                    If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
                    {
                        Return ("13P2SF223")
                    }

                    If ((Arg0 == ToUUID ("2959512a-028c-4646-b73d-4d1b5672fad8")))
                    {
                        If ((BDID == 0x04))
                        {
                            If ((FBID == 0x02))
                            {
                                Return ("INTEL_FFRD")
                            }

                            If ((FBID == 0x03))
                            {
                                Return ("INTEL_FFRD")
                            }
                        }

                        Return ("INTEL_RVP")
                    }

                    If ((Arg0 == ToUUID ("918ab242-c37c-450a-9d0f-f47ab97c3dea")))
                    {
                        Return (0x0101)
                    }

                    If ((Arg0 == ToUUID ("ea3b7bd8-e09b-4239-ad6e-ed525f3f26ab")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("b65ac492-9e30-4d60-b5b2-f497c790d9cf")))
                    {
                        Return (One)
                    }

                    If ((Arg0 == ToUUID ("e770ab0f-2644-4bab-8628-d62f1683fb9d")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("1ea54ab2-cd84-48cc-9dd4-7f594ec3b015")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("8dbe2651-70c1-4c6f-ac87-a37cb46e4af6")))
                    {
                        Return (One)
                    }

                    If ((Arg0 == ToUUID ("75c9a639-5c8a-4a00-9f48-a9c3b5da789f")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x04003600)
                        }
                    }

                    If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (0x02)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x01001600)
                        }

                        If ((Arg2 == 0x03))
                        {
                            If ((BDID == 0x03))
                            {
                                Return (0x1901)
                            }

                            Return (0x01001901)
                        }
                    }

                    Return (Zero)
                }
            }

            Device (STRA)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INTCF1C")  // _HID: Hardware ID
                Name (_CID, "INTCF1C")  // _CID: Compatible ID
                Name (_SUB, "221C17AA")  // _SUB: Subsystem ID
                Name (_DDN, "Flash LM3554")  // _DDN: DOS Device Name
                Name (_UID, One)  // _UID: Unique ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0013
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0014
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0010
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0011
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO1", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x000F
                            }
                        I2cSerialBus (0x0053, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C4",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C4.STRA._CRS.SBUF */
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("377ba76a-f390-4aff-ab38-9b1bf33a3015")))
                    {
                        Return ("INTCF1C")
                    }

                    If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
                    {
                        Return ("LM3554")
                    }

                    If ((Arg0 == ToUUID ("2959512a-028c-4646-b73d-4d1b5672fad8")))
                    {
                        If ((BDID == 0x04))
                        {
                            If ((FBID == 0x02))
                            {
                                Return ("INTEL_FFRD")
                            }

                            If ((FBID == 0x03))
                            {
                                Return ("INTEL_FFRD")
                            }
                        }

                        Return ("INTEL_RVP")
                    }

                    If ((Arg0 == ToUUID ("75c9a639-5c8a-4a00-9f48-a9c3b5da789f")))
                    {
                        Return (Zero)
                    }

                    If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x04005300)
                        }
                    }

                    If ((Arg0 == ToUUID ("79234640-9e10-4fea-a5c1-b5aa8b19756f")))
                    {
                        If ((Arg2 == One))
                        {
                            Return (0x04)
                        }

                        If ((Arg2 == 0x02))
                        {
                            Return (0x01001302)
                        }

                        If ((Arg2 == 0x03))
                        {
                            Return (0x01001403)
                        }

                        If ((Arg2 == 0x04))
                        {
                            Return (0x01001001)
                        }

                        If ((Arg2 == 0x05))
                        {
                            Return (0x01001104)
                        }
                    }

                    Return (Zero)
                }
            }
        }

        Device (I2C5)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) I2C Controller #5 - 80860F45")  // _DDN: DOS Device Name
            Name (_UID, 0x05)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y16)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000024,
                }
                FixedDMA (0x0018, 0x0000, Width32bit, )
                FixedDMA (0x0019, 0x0001, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C5._Y16._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C5._Y16._LEN, B0LN)  // _LEN: Length
                B0BA = I50A /* \I50A */
                B0LN = I50L /* \I50L */
                Return (RBUF) /* \_SB_.I2C5.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I50A == Zero) || (L25D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I51A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            Device (SHUB)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INV6050")  // _HID: Hardware ID
                Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // _CID: Compatible ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
                    {
                        If ((Arg2 == Zero))
                        {
                            If ((Arg1 == One))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                             /* . */
                                })
                            }
                        }

                        If ((Arg2 == One))
                        {
                            Return (One)
                        }

                        Return (Zero)
                    }
                    Else
                    {
                        Return (Buffer (One)
                        {
                             0x00                                             /* . */
                        })
                    }
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }

                Method (_PS3, 0, Serialized)  // _PS3: Power State 3
                {
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.SHD3 = Zero
                    }
                }

                Method (_PS0, 0, Serialized)  // _PS0: Power State 0
                {
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.SHD3 = One
                        Sleep (0x32)
                    }
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x0070, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C5",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
                        {
                            0x00000044,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x005F
                            }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x003B
                            }
                    })
                    Return (SBUF) /* \_SB_.I2C5.SHUB._CRS.SBUF */
                }
            }
        }

        Device (I2C6)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) I2C Controller #6 - 80860F46")  // _DDN: DOS Device Name
            Name (_UID, 0x06)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y17)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000025,
                }
                FixedDMA (0x001A, 0x0002, Width32bit, )
                FixedDMA (0x001B, 0x0003, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C6._Y17._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C6._Y17._LEN, B0LN)  // _LEN: Length
                B0BA = I60A /* \I60A */
                B0LN = I60L /* \I60L */
                Return (RBUF) /* \_SB_.I2C6.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I60A == Zero) || (L26D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I61A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }

            PowerResource (TCPR, 0x00, 0x0000)
            {
                Name (_DEP, Package (0x02)  // _DEP: Dependencies
                {
                    I2C7, 
                    ^^I2C7.PMIC
                })
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((^^^I2C7.PMIC.AVBL == One))
                    {
                        Return (^^^I2C7.PMIC.TCON) /* \_SB_.I2C7.PMIC.TCON */
                    }

                    Return (Zero)
                }

                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                {
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.TCD3 = Zero
                    }

                    Sleep (0x05)
                    If ((^^^I2C7.PMIC.AVBG == One))
                    {
                        ^^^I2C7.PMIC.TCON = One
                    }

                    Sleep (0x0A)
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.TCD3 = One
                    }

                    Sleep (0x50)
                }

                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                {
                    If ((^^^I2C7.PMIC.AVBG == One))
                    {
                        ^^^I2C7.PMIC.TCON = Zero
                    }
                }
            }

            Device (TCS0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "ATML1000" /* Atmel Touchscreen Controller */)  // _HID: Hardware ID
                Name (_CID, "PNP0C50" /* HID Protocol Device (I2C bus) */)  // _CID: Compatible ID
                Name (_S0W, Zero)  // _S0W: S0 Device Wake State
                Name (_DEP, Package (0x04)  // _DEP: Dependencies
                {
                    GPO0, 
                    I2C7, 
                    ^^I2C7.PMIC, 
                    I2C1
                })
                Method (_PS3, 0, Serialized)  // _PS3: Power State 3
                {
                    If ((^^^I2C7.PMIC.AVBG == One))
                    {
                        ^^^I2C7.PMIC.TCON = Zero
                    }
                }

                Method (_PS0, 0, Serialized)  // _PS0: Power State 0
                {
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.TCD3 = Zero
                    }

                    Sleep (0x0A)
                    If ((^^^I2C7.PMIC.AVBG == One))
                    {
                        ^^^I2C7.PMIC.TCON = Zero
                        Sleep (0x32)
                        ^^^I2C7.PMIC.TCON = One
                    }

                    Sleep (0x28)
                    If ((^^^GPO0.AVBL == One))
                    {
                        ^^^GPO0.TCD3 = One
                    }

                    Sleep (0x78)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (RBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x004A, ControllerInitiated, 0x0019F0A0,
                            AddressingMode7Bit, "\\_SB.I2C6",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
                        {
                            0x00000045,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x003C
                            }
                    })
                    Name (PBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x004B, ControllerInitiated, 0x00061A80,
                            AddressingMode7Bit, "\\_SB.I2C6",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive, ,, )
                        {
                            0x00000045,
                        }
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x003C
                            }
                    })
                    If ((ITSA == 0x4B))
                    {
                        Return (PBUF) /* \_SB_.I2C6.TCS0._CRS.PBUF */
                    }
                    Else
                    {
                        Return (RBUF) /* \_SB_.I2C6.TCS0._CRS.RBUF */
                    }
                }

                Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
                {
                    Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                    Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                    Debug = "Method _DSM begin"
                    If ((Arg0 == ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
                    {
                        While (One)
                        {
                            _T_0 = ToInteger (Arg2)
                            If ((_T_0 == Zero))
                            {
                                While (One)
                                {
                                    _T_1 = ToInteger (Arg1)
                                    If ((_T_1 == One))
                                    {
                                        Debug = "Method _DSM Function Query"
                                        Return (Buffer (One)
                                        {
                                             0x03                                             /* . */
                                        })
                                    }
                                    Else
                                    {
                                        Return (Buffer (One)
                                        {
                                             0x00                                             /* . */
                                        })
                                    }

                                    Break
                                }
                            }
                            ElseIf ((_T_0 == One))
                            {
                                Debug = "Method _DSM Function HID"
                                Return (Zero)
                            }
                            Else
                            {
                                Return (Zero)
                            }

                            Break
                        }
                    }
                    Else
                    {
                        Return (Buffer (One)
                        {
                             0x00                                             /* . */
                        })
                    }
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    Return (0x0F)
                }
            }
        }

        Device (I2C7)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_HID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _HID: Hardware ID
            Name (_CID, "80860F41" /* Intel Baytrail I2C Host Controller */)  // _CID: Compatible ID
            Name (_DDN, "Intel(R) I2C Controller #7 - 80860F47")  // _DDN: DOS Device Name
            Name (_UID, 0x07)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                PEPD
            })
            Name (RBUF, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0x00000000,         // Address Base
                    0x00001000,         // Address Length
                    _Y18)
                Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, )
                {
                    0x00000026,
                }
                FixedDMA (0x001C, 0x0004, Width32bit, )
                FixedDMA (0x001D, 0x0005, Width32bit, )
            })
            Method (_HRV, 0, NotSerialized)  // _HRV: Hardware Revision
            {
                Return (SOCS) /* \SOCS */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (RBUF, \_SB.I2C7._Y18._BAS, B0BA)  // _BAS: Base Address
                CreateDWordField (RBUF, \_SB.I2C7._Y18._LEN, B0LN)  // _LEN: Length
                B0BA = I70A /* \I70A */
                B0LN = I70L /* \I70L */
                Return (RBUF) /* \_SB_.I2C7.RBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (((I70A == Zero) || (L27D == One)))
                {
                    Return (Zero)
                }

                Return (0x0F)
            }

            Method (_PS3, 0, NotSerialized)  // _PS3: Power State 3
            {
                PSAT |= 0x03
                PSAT |= Zero
            }

            Method (_PS0, 0, NotSerialized)  // _PS0: Power State 0
            {
                PSAT &= 0xFFFFFFFC
                PSAT |= Zero
            }

            OperationRegion (KEYS, SystemMemory, I71A, 0x0100)
            Field (KEYS, DWordAcc, NoLock, WriteAsZeros)
            {
                Offset (0x84), 
                PSAT,   32
            }
        }

        Scope (I2C7)
        {
            Device (PMIC)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "INT33FD" /* Intel Baytrail Power Management IC */)  // _HID: Hardware ID
                Name (_CID, "INT33FD" /* Intel Baytrail Power Management IC */)  // _CID: Compatible ID
                Name (_DDN, "PMIC GPIO Controller")  // _DDN: DOS Device Name
                Name (_HRV, 0x02)  // _HRV: Hardware Revision
                Name (_UID, One)  // _UID: Unique ID
                Name (_DEP, Package (0x01)  // _DEP: Dependencies
                {
                    I2C7
                })
                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x006E, ControllerInitiated, 0x000F4240,
                            AddressingMode7Bit, "\\_SB.I2C7",
                            0x00, ResourceConsumer, ,
                            )
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, )
                        {
                            0x00000043,
                        }
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, )
                        {
                            0x00000043,
                        }
                        Interrupt (ResourceConsumer, Level, ActiveHigh, Shared, ,, )
                        {
                            0x00000043,
                        }
                    })
                    Return (SBUF) /* \_SB_.I2C7.PMIC._CRS.SBUF */
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((PMEN == Zero))
                    {
                        Return (Zero)
                    }

                    Return (0x0F)
                }

                OperationRegion (DPTF, 0x8C, Zero, 0x0100)
                Field (DPTF, DWordAcc, NoLock, Preserve)
                {
                    TMP0,   32, 
                    AX00,   32, 
                    AX01,   32, 
                    TMP1,   32, 
                    AX10,   32, 
                    AX11,   32, 
                    TMP2,   32, 
                    AX20,   32, 
                    AX21,   32, 
                    TMP3,   32, 
                    AX30,   32, 
                    AX31,   32, 
                    TMP4,   32, 
                    AX40,   32, 
                    AX41,   32, 
                    TMP5,   32, 
                    AX50,   32, 
                    AX51,   32, 
                    PEN0,   32, 
                    PEN1,   32, 
                    PEN2,   32, 
                    PEN3,   32, 
                    PEN4,   32, 
                    PEN5,   32
                }

                OperationRegion (PMOP, 0x8D, Zero, 0x0100)
                Field (PMOP, DWordAcc, NoLock, Preserve)
                {
                    VSYS,   32, 
                    SYSX,   32, 
                    SYSU,   32, 
                    SYSS,   32, 
                    V50S,   32, 
                    HOST,   32, 
                    VBUS,   32, 
                    HDMI,   32, 
                    S285,   32, 
                    X285,   32, 
                    V33A,   32, 
                    V33S,   32, 
                    V33U,   32, 
                    V33I,   32, 
                    V18A,   32, 
                    REFQ,   32, 
                    V12A,   32, 
                    V18S,   32, 
                    V18X,   32, 
                    V18U,   32, 
                    V12X,   32, 
                    V12S,   32, 
                    V10A,   32, 
                    V10S,   32, 
                    V10X,   32, 
                    V105,   32
                }

                OperationRegion (GPOP, GeneralPurposeIo, Zero, 0x0100)
                Field (GPOP, ByteAcc, NoLock, Preserve)
                {
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0020
                            }
                    ), 
                    GMP0,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0021
                            }
                    ), 
                    GX00,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0022
                            }
                    ), 
                    GX01,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0023
                            }
                    ), 
                    GMP1,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0024
                            }
                    ), 
                    GX10,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0025
                            }
                    ), 
                    GX11,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0026
                            }
                    ), 
                    GMP2,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0027
                            }
                    ), 
                    GX20,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0028
                            }
                    ), 
                    GX21,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0029
                            }
                    ), 
                    GMP3,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002A
                            }
                    ), 
                    GX30,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002B
                            }
                    ), 
                    GX31,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002C
                            }
                    ), 
                    GMP4,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002D
                            }
                    ), 
                    GX40,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002E
                            }
                    ), 
                    GX41,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x002F
                            }
                    ), 
                    GMP5,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0030
                            }
                    ), 
                    GX50,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0031
                            }
                    ), 
                    GX51,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0032
                            }
                    ), 
                    GEN0,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0033
                            }
                    ), 
                    GEN1,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0034
                            }
                    ), 
                    GEN2,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0035
                            }
                    ), 
                    GEN3,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0036
                            }
                    ), 
                    GEN4,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0037
                            }
                    ), 
                    GEN5,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0040
                            }
                    ), 
                    GSYS,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0041
                            }
                    ), 
                    GYSX,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0042
                            }
                    ), 
                    GYSU,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0043
                            }
                    ), 
                    GYSS,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0044
                            }
                    ), 
                    G50S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0045
                            }
                    ), 
                    GOST,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0046
                            }
                    ), 
                    GBUS,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0047
                            }
                    ), 
                    GDMI,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0048
                            }
                    ), 
                    G28S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0049
                            }
                    ), 
                    G28X,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004A
                            }
                    ), 
                    G33A,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004B
                            }
                    ), 
                    G33S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004C
                            }
                    ), 
                    G33U,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004D
                            }
                    ), 
                    G33I,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004E
                            }
                    ), 
                    G18A,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x004F
                            }
                    ), 
                    GEFQ,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0050
                            }
                    ), 
                    G12A,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0051
                            }
                    ), 
                    G18S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0052
                            }
                    ), 
                    G18X,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0053
                            }
                    ), 
                    G18U,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0054
                            }
                    ), 
                    G12X,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0055
                            }
                    ), 
                    G12S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0056
                            }
                    ), 
                    G10A,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0057
                            }
                    ), 
                    G10S,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0058
                            }
                    ), 
                    G10X,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x0059
                            }
                    ), 
                    G105,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x005E
                            }
                    ), 
                    FCOT,   1, 
                    Connection (
                        GpioIo (Exclusive, PullDefault, 0x0000, 0x0000, IoRestrictionOutputOnly,
                            "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                            )
                            {   // Pin list
                                0x000B
                            }
                    ), 
                    TCON,   1
                }

                Name (AVBL, Zero)
                Name (AVBD, Zero)
                Name (AVBG, Zero)
                Method (_REG, 2, NotSerialized)  // _REG: Region Availability
                {
                    If ((Arg0 == 0x08))
                    {
                        AVBG = Arg1
                    }

                    If ((Arg0 == 0x8D))
                    {
                        AVBL = Arg1
                    }

                    If ((Arg0 == 0x8C))
                    {
                        AVBD = Arg1
                    }
                }

                Name (LPAT, Package (0x30)
                {
                    0x09E3, 
                    0x03D1, 
                    0x0A15, 
                    0x03C1, 
                    0x0A47, 
                    0x03AD, 
                    0x0A79, 
                    0x0395, 
                    0x0AAB, 
                    0x0377, 
                    0x0ADD, 
                    0x0355, 
                    0x0B0F, 
                    0x032D, 
                    0x0B41, 
                    0x0301, 
                    0x0B73, 
                    0x02D0, 
                    0x0BA5, 
                    0x029D, 
                    0x0BD7, 
                    0x0267, 
                    0x0C09, 
                    0x0231, 
                    0x0C3B, 
                    0x01FC, 
                    0x0C6D, 
                    0x01C8, 
                    0x0C9F, 
                    0x0197, 
                    0x0CD1, 
                    0x0165, 
                    0x0D03, 
                    0x013B, 
                    0x0D35, 
                    0x0115, 
                    0x0D67, 
                    0xF3, 
                    0x0D99, 
                    0xD4, 
                    0x0DCB, 
                    0xBA, 
                    0x0DFD, 
                    0xA2, 
                    0x0E2F, 
                    0x8C, 
                    0x0E93, 
                    0x6B
                })
            }
        }

        Scope (I2C1)
        {
            Device (IMP1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "IMPJ0001")  // _HID: Hardware ID
                Name (_CID, "IMPJ0001")  // _CID: Compatible ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((PSSD == One))
                    {
                        Return (0x0F)
                    }

                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x006E, ControllerInitiated, 0x000186A0,
                            AddressingMode7Bit, "\\_SB.I2C1",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C1.IMP1._CRS.SBUF */
                }
            }

            Device (IMP2)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "IMPJ0002")  // _HID: Hardware ID
                Name (_CID, "IMPJ0002")  // _CID: Compatible ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((PSSD == One))
                    {
                        Return (0x0F)
                    }

                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x006F, ControllerInitiated, 0x000186A0,
                            AddressingMode7Bit, "\\_SB.I2C1",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C1.IMP2._CRS.SBUF */
                }
            }

            Device (IMP3)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Name (_HID, "IMPJ0003")  // _HID: Hardware ID
                Name (_CID, "IMPJ0003")  // _CID: Compatible ID
                Name (_UID, One)  // _UID: Unique ID
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If ((PSSD == 0x02))
                    {
                        Return (0x0F)
                    }

                    Return (Zero)
                }

                Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                {
                    Name (SBUF, ResourceTemplate ()
                    {
                        I2cSerialBus (0x006E, ControllerInitiated, 0x000186A0,
                            AddressingMode7Bit, "\\_SB.I2C1",
                            0x00, ResourceConsumer, ,
                            )
                    })
                    Return (SBUF) /* \_SB_.I2C1.IMP3._CRS.SBUF */
                }
            }
        }

        PowerResource (P28X, 0x05, 0x0000)
        {
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                I2C7, 
                ^I2C7.PMIC
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((^^I2C7.PMIC.AVBG == One))
                {
                    ^^I2C7.PMIC.G28X = Zero
                    If ((^^I2C7.PMIC.AVBL == One))
                    {
                        Return (^^I2C7.PMIC.X285) /* \_SB_.I2C7.PMIC.X285 */
                    }
                }

                Return (Zero)
            }

            Method (_ON, 0, NotSerialized)  // _ON_: Power On
            {
                If ((^^I2C7.PMIC.AVBL == One))
                {
                    ^^I2C7.PMIC.X285 = One
                    If ((^^I2C7.PMIC.AVBG == One))
                    {
                        ^^I2C7.PMIC.G28X = One
                        Sleep (0x1E)
                    }
                }
            }

            Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
            {
                If ((^^I2C7.PMIC.AVBL == One))
                {
                    ^^I2C7.PMIC.X285 = Zero
                    If ((^^I2C7.PMIC.AVBG == One))
                    {
                        ^^I2C7.PMIC.G28X = One
                        Sleep (0x1E)
                    }
                }
            }
        }

        PowerResource (P18X, 0x05, 0x0000)
        {
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                I2C7, 
                ^I2C7.PMIC
            })
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((^^I2C7.PMIC.AVBG == One))
                {
                    ^^I2C7.PMIC.G18X = Zero
                    If ((^^I2C7.PMIC.AVBL == One))
                    {
                        Return (^^I2C7.PMIC.V18X) /* \_SB_.I2C7.PMIC.V18X */
                    }
                }

                Return (Zero)
            }

            Method (_ON, 0, NotSerialized)  // _ON_: Power On
            {
                If ((^^I2C7.PMIC.AVBL == One))
                {
                    ^^I2C7.PMIC.V18X = One
                    If ((^^I2C7.PMIC.AVBG == One))
                    {
                        ^^I2C7.PMIC.G18X = One
                        Sleep (0x1E)
                    }
                }
            }

            Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
            {
                If ((^^I2C7.PMIC.AVBL == One))
                {
                    ^^I2C7.PMIC.V18X = Zero
                    If ((^^I2C7.PMIC.AVBG == One))
                    {
                        ^^I2C7.PMIC.G18X = One
                        Sleep (0x1E)
                    }
                }
            }
        }

        Device (TBAD)
        {
            Name (_HID, "INTCFD9" /* Intel Baytrail SOC GPIO Controller */)  // _HID: Hardware ID
            Name (_CID, "PNP0C40" /* Standard Button Controller */)  // _CID: Compatible ID
            Name (_DDN, "Keyboard less system - 5 Button Array Device")  // _DDN: DOS Device Name
            Name (_DEP, Package (0x04)  // _DEP: Dependencies
            {
                GPO0, 
                GPO2, 
                I2C7, 
                ^I2C7.PMIC
            })
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDefault, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0010
                        }
                    GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0006
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0000
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0001
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.I2C7.PMIC", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0007
                        }
                })
                Name (PBUF, ResourceTemplate ()
                {
                    GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDefault, 0x0000,
                        "\\_SB.GPO2", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0010
                        }
                    GpioInt (Edge, ActiveBoth, ExclusiveAndWake, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0006
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0005
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0004
                        }
                    GpioInt (Edge, ActiveBoth, Exclusive, PullDefault, 0x0000,
                        "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                        )
                        {   // Pin list
                            0x0002
                        }
                })
                Return (PBUF) /* \_SB_.TBAD._CRS.PBUF */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
            {
                Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                If ((OSYS == 0x07DD))
                {
                    ^^I2C7.PMIC.FCOT = One
                }
                Else
                {
                    ^^I2C7.PMIC.FCOT = Zero
                }

                If ((Arg0 == ToUUID ("dfbcf3c5-e7a5-44e6-9c1f-29c76f6e059c") /* Power Button Device */))
                {
                    While (One)
                    {
                        _T_0 = ToInteger (Arg2)
                        If ((_T_0 == Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                             /* . */
                            })
                        }
                        ElseIf ((_T_0 == One))
                        {
                            Return (0x07)
                        }

                        Break
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                             /* . */
                    })
                }

                Return (Zero)
            }
        }

        Device (MBID)
        {
            Name (_HID, "INT33BD" /* Intel Baytrail Mailbox Device */)  // _HID: Hardware ID
            Name (_CID, "INT33BD" /* Intel Baytrail Mailbox Device */)  // _CID: Compatible ID
            Name (_HRV, 0x02)  // _HRV: Hardware Revision
            Name (_UID, One)  // _UID: Unique ID
            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                Name (RBUF, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xE00000D0,         // Address Base
                        0x0000000C,         // Address Length
                        )
                })
                Return (RBUF) /* \_SB_.MBID._CRS.RBUF */
            }

            OperationRegion (REGS, 0x87, Zero, 0x30)
            Field (REGS, DWordAcc, NoLock, Preserve)
            {
                PORT,   32, 
                REG,    32, 
                DATA,   32, 
                MASK,   32, 
                BE,     32, 
                OP,     32
            }

            Name (AVBL, Zero)
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If ((Arg0 == 0x87))
                {
                    AVBL = Arg1
                }
            }

            Method (READ, 3, Serialized)
            {
                Local0 = 0xFFFFFFFF
                If ((AVBL == One))
                {
                    OP = Zero
                    PORT = Arg0
                    REG = Arg1
                    BE = Arg2
                    Local0 = DATA /* \_SB_.MBID.DATA */
                }

                Return (Local0)
            }

            Method (WRIT, 4, Serialized)
            {
                If ((AVBL == One))
                {
                    OP = One
                    PORT = Arg0
                    REG = Arg1
                    BE = Arg2
                    DATA = Arg3
                }
            }

            Method (MODI, 5, Serialized)
            {
                If ((AVBL == One))
                {
                    OP = 0x02
                    PORT = Arg0
                    REG = Arg1
                    BE = Arg2
                    DATA = Arg3
                    MASK = Arg4
                }
            }
        }

        Device (PAGD)
        {
            Name (_HID, "ACPI000C" /* Processor Aggregator Device */)  // _HID: Hardware ID
            Name (_CID, "ACPI000C" /* Processor Aggregator Device */)  // _CID: Compatible ID
            Name (IDCN, Zero)
            Name (PURP, Package (0x02)
            {
                One, 
                Zero
            })
            Method (_PUR, 0, Serialized)  // _PUR: Processor Utilization Request
            {
                PURP [One] = IDCN /* \_SB_.PAGD.IDCN */
                Return (PURP) /* \_SB_.PAGD.PURP */
            }

            Method (_OST, 3, Serialized)  // _OST: OSPM Status Indication
            {
                Debug = "_OST is invoked"
            }
        }
    }

    Name (PICM, Zero)
    Scope (_TZ)
    {
        ThermalZone (TZ00)
        {
            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                \_SB.I2C7, 
                \_SB.I2C7.PMIC
            })
            Method (_TMP, 0, Serialized)  // _TMP: Temperature
            {
                If ((\_SB.I2C7.PMIC.AVBG == One))
                {
                    \_SB.I2C7.PMIC.GMP2 = Zero
                    If ((\_SB.I2C7.PMIC.AVBD == One))
                    {
                        Return (\_SB.I2C7.PMIC.TMP2)
                    }
                }

                Return (0x0AAC)
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Device (PDRC)
        {
            Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
            Name (_UID, One)  // _UID: Unique ID
            Name (BUF0, ResourceTemplate ()
            {
                Memory32Fixed (ReadWrite,
                    0xE0000000,         // Address Base
                    0x10000000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED01000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED03000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED04000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED0C000,         // Address Base
                    0x00004000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED08000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFED1C000,         // Address Base
                    0x00001000,         // Address Length
                    )
                Memory32Fixed (ReadOnly,
                    0xFEE00000,         // Address Base
                    0x00100000,         // Address Length
                    )
                Memory32Fixed (ReadWrite,
                    0xFEF00000,         // Address Base
                    0x00100000,         // Address Length
                    )
            })
        }
    }

    Method (BRTN, 1, Serialized)
    {
        If (((DID1 & 0x0F00) == 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD01, Arg0)
        }

        If (((DID2 & 0x0F00) == 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD02, Arg0)
        }

        If (((DID3 & 0x0F00) == 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD03, Arg0)
        }

        If (((DID4 & 0x0F00) == 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD04, Arg0)
        }

        If (((DID5 & 0x0F00) == 0x0400))
        {
            Notify (\_SB.PCI0.GFX0.DD05, Arg0)
        }

        If (CondRefOf (NDN3))
        {
            NDN3 (Arg0)
        }
    }

    Scope (_SB.I2C3)
    {
        Name (AVBL, Zero)
        Method (_REG, 2, NotSerialized)  // _REG: Region Availability
        {
            If ((Arg0 == 0x09))
            {
                AVBL = Arg1
            }
        }

        Name (SFSA, ResourceTemplate ()
        {
            I2cSerialBus (0x0025, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.I2C3",
                0x00, ResourceConsumer, ,
                )
        })
        OperationRegion (FSAO, GenericSerialBus, Zero, 0x0100)
        Field (FSAO, BufferAcc, NoLock, Preserve)
        {
            Connection (SFSA), 
            Offset (0x02), 
            AccessAs (BufferAcc, AttribByte), 
            FSIM,   8
        }

        Field (FSAO, BufferAcc, NoLock, Preserve)
        {
            Connection (SFSA), 
            Offset (0x03), 
            AccessAs (BufferAcc, AttribByte), 
            FSIN,   8
        }

        Field (FSAO, BufferAcc, NoLock, Preserve)
        {
            Connection (SFSA), 
            Offset (0x07), 
            AccessAs (BufferAcc, AttribByte), 
            FSRC,   8
        }

        Field (FSAO, BufferAcc, NoLock, Preserve)
        {
            Connection (SFSA), 
            Offset (0x0A), 
            AccessAs (BufferAcc, AttribByte), 
            FSDT,   8
        }

        Field (FSAO, BufferAcc, NoLock, Preserve)
        {
            Connection (SFSA), 
            Offset (0x13), 
            AccessAs (BufferAcc, AttribByte), 
            FSMS,   8
        }
    }

    Scope (_SB.I2C1)
    {
        Name (UMPC, ResourceTemplate ()
        {
            I2cSerialBus (0x0078, ControllerInitiated, 0x000186A0,
                AddressingMode7Bit, "\\_SB.I2C1",
                0x00, ResourceConsumer, ,
                )
        })
        Name (AVB1, Zero)
        Name (AVB2, Zero)
        Name (AVBL, Zero)
        Method (_REG, 2, NotSerialized)  // _REG: Region Availability
        {
            If ((Arg0 == 0x09))
            {
                AVBL = Arg1
            }
        }

        OperationRegion (DVUM, GenericSerialBus, Zero, 0x0100)
        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            AccessAs (BufferAcc, AttribBytes (0x39)), 
            FGC0,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x2F), 
            AccessAs (BufferAcc, AttribByte), 
            FL2F,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x30), 
            AccessAs (BufferAcc, AttribBytes (0x04)), 
            FL30,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x4E), 
            AccessAs (BufferAcc, AttribByte), 
            FL4E,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x4F), 
            AccessAs (BufferAcc, AttribByte), 
            FL4F,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x50), 
            AccessAs (BufferAcc, AttribByte), 
            FL50,   8, 
            FL51,   8, 
            FL52,   8, 
            FL53,   8
        }

        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC), 
            Offset (0x34), 
            AccessAs (BufferAcc, AttribBytes (0x05)), 
            THRM,   8
        }

        Device (BATC)
        {
            Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
            Name (_UID, One)  // _UID: Unique ID
            Name (BCCC, 0x80)
            Name (BCCE, One)
            Name (BCCV, 0x37)
            Name (BCCL, 0xFFFFFFFF)
            Name (BCLP, 0x1004)
            Name (DSCP, 0x1004)
            Name (DSVO, 0x0EA6)
            Name (BTPC, Zero)
            Name (SOCC, Zero)
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                I2C1
            })
            Name (BFFG, Buffer (0x40)
            {
                 0xFF                                             /* . */
            })
            CreateByteField (BFFG, Zero, STAT)
            CreateByteField (BFFG, One, LEN)
            CreateWordField (BFFG, 0x02, CNTL)
            CreateWordField (BFFG, 0x04, ATRA)
            CreateWordField (BFFG, 0x06, ARTE)
            CreateWordField (BFFG, 0x08, TEMP)
            CreateWordField (BFFG, 0x0A, VOLT)
            CreateWordField (BFFG, 0x0C, FLAG)
            CreateWordField (BFFG, 0x0E, NACT)
            CreateWordField (BFFG, 0x10, FACT)
            CreateWordField (BFFG, 0x12, RECT)
            CreateWordField (BFFG, 0x14, FCCT)
            CreateWordField (BFFG, 0x16, AVRC)
            CreateWordField (BFFG, 0x18, TTET)
            CreateWordField (BFFG, 0x1A, TTFL)
            CreateWordField (BFFG, 0x1C, STDC)
            CreateWordField (BFFG, 0x1E, STTE)
            CreateWordField (BFFG, 0x20, MALC)
            CreateWordField (BFFG, 0x22, MLTE)
            CreateWordField (BFFG, 0x24, AVEE)
            CreateWordField (BFFG, 0x26, AVEP)
            CreateWordField (BFFG, 0x28, TECP)
            CreateWordField (BFFG, 0x2A, DSSP)
            CreateWordField (BFFG, 0x2C, CYLC)
            CreateWordField (BFFG, 0x2E, SOCH)
            CreateByteField (BFFG, 0x30, CHST)
            CreateByteField (BFFG, 0x31, CHCU)
            CreateDWordField (BFFG, 0x32, BTRP)
            CreateByteField (BFFG, 0x36, SKT0)
            CreateWordField (BFFG, 0x37, ST00)
            CreateWordField (BFFG, 0x39, ST01)
            Name (BUFF, Buffer (0x03)
            {
                 0x00, 0x01, 0x00                                 /* ... */
            })
            CreateByteField (BUFF, Zero, BYAT)
            CreateByteField (BUFF, 0x02, DATA)
            Name (BUF1, Buffer (0x06)
            {
                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00               /* ...... */
            })
            CreateByteField (BUF1, Zero, BSTA)
            CreateByteField (BUF1, One, BLEN)
            CreateDWordField (BUF1, 0x02, DAT1)
            Name (BIXP, Package (0x14)
            {
                Zero, 
                One, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                One, 
                0xFFFFFFFF, 
                0x0A, 
                0x04, 
                Zero, 
                0x00017318, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0x88B8, 
                0x61A8, 
                One, 
                One, 
                "SR Real Battery", 
                "123456789", 
                "LION", 
                "Intel SR 1"
            })
            Name (BSTP, Package (0x04)
            {
                Zero, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Method (_BIX, 0, NotSerialized)  // _BIX: Battery Information Extended
            {
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        If ((CYLC != BCCL))
                        {
                            BCCL = CYLC /* \_SB_.I2C1.BATC.CYLC */
                            BCLP = FCCT /* \_SB_.I2C1.BATC.FCCT */
                        }

                        BIXP [0x03] = BCLP /* \_SB_.I2C1.BATC.BCLP */
                        BIXP [0x08] = CYLC /* \_SB_.I2C1.BATC.CYLC */
                    }

                    If ((DSSP != Zero))
                    {
                        DSCP = DSSP /* \_SB_.I2C1.BATC.DSSP */
                    }
                }

                BIXP [0x02] = DSCP /* \_SB_.I2C1.BATC.DSCP */
                BIXP [0x05] = DSVO /* \_SB_.I2C1.BATC.DSVO */
                Divide (DSCP, 0x0A, Local0, Local1)
                BIXP [0x06] = Local1
                Divide (DSCP, 0x14, Local0, Local1)
                BIXP [0x07] = Local1
                Return (BIXP) /* \_SB_.I2C1.BATC.BIXP */
            }

            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        Local0 = (CHST >> 0x04)
                        Local0 &= 0x03
                        If (((Local0 == One) || (Local0 == 0x02)))
                        {
                            Local1 = 0x02
                        }

                        If ((Local0 == Zero))
                        {
                            Local1 = One
                        }

                        If ((Local0 == 0x03))
                        {
                            Local1 = Zero
                        }

                        BSTP [Zero] = Local1
                        Local1 = AVRC /* \_SB_.I2C1.BATC.AVRC */
                        If ((Local1 & 0x8000))
                        {
                            Local1 = (0xFFFF - Local1)
                        }

                        BSTP [One] = Local1
                        BSTP [0x02] = RECT /* \_SB_.I2C1.BATC.RECT */
                        BSTP [0x03] = VOLT /* \_SB_.I2C1.BATC.VOLT */
                        SOCC = SOCH /* \_SB_.I2C1.BATC.SOCH */
                        BUFF = FL53 /* \_SB_.I2C1.FL53 */
                        If ((BYAT != One))
                        {
                            If ((BCCE == One))
                            {
                                DATA |= One
                                FL53 = BUFF /* \_SB_.I2C1.BATC.BUFF */
                            }
                            Else
                            {
                                DATA &= 0xFE
                                FL53 = BUFF /* \_SB_.I2C1.BATC.BUFF */
                            }
                        }

                        DATA = BCCC /* \_SB_.I2C1.BATC.BCCC */
                        FL2F = BUFF /* \_SB_.I2C1.BATC.BUFF */
                    }
                }

                Return (BSTP) /* \_SB_.I2C1.BATC.BSTP */
            }

            Method (INTR, 0, NotSerialized)
            {
                If ((AVBL == One))
                {
                    BUFF = FL4F /* \_SB_.I2C1.FL4F */
                    If ((BYAT != One))
                    {
                        Return (DATA) /* \_SB_.I2C1.BATC.DATA */
                    }

                    Return (0xFF)
                }

                Return (0xFF)
            }

            Method (_BTP, 1, NotSerialized)  // _BTP: Battery Trip Point
            {
                BTPC = Arg0
                ADBG ("BTP")
                ADBG (Arg0)
                If ((AVBL == One))
                {
                    DAT1 = Arg0
                    BLEN = 0x04
                    FL30 = BUF1 /* \_SB_.I2C1.BATC.BUF1 */
                }

                BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                ADBG (RECT)
            }

            Method (_BTM, 1, NotSerialized)  // _BTM: Battery Time
            {
                If ((Arg0 > 0x7530))
                {
                    Return (Zero)
                }

                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        If ((Arg0 == Zero))
                        {
                            Local0 = (TTET * 0x3C)
                            Return (Local0)
                        }

                        Local0 = (RECT * 0x0E10)
                        Divide (Local0, Arg0, Local1, Local2)
                        Return (Local2)
                    }
                }

                Return (0xFFFFFFFF)
            }

            Method (_BCT, 1, NotSerialized)  // _BCT: Battery Charge Time
            {
                If (((Arg0 > 0x64) || (Arg0 < One)))
                {
                    Return (Zero)
                }

                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        If ((Arg0 < RECT))
                        {
                            Return (Zero)
                        }

                        Local1 = AVRC /* \_SB_.I2C1.BATC.AVRC */
                        If ((Local1 & 0x8000))
                        {
                            Return (Zero)
                        }

                        Local0 = (BCLP * Arg0)
                        Local0 -= RECT /* \_SB_.I2C1.BATC.RECT */
                        Local0 *= 0x0E10
                        Divide (Local0, Local1, Local2, Local3)
                        Return (Local3)
                    }
                }

                Return (0xFFFFFFFF)
            }

            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == ToUUID ("4c2067e3-887d-475c-9720-4af1d3ed602e") /* Battery Thermal Limit */))
                {
                    If ((Arg2 == 0x02))
                    {
                        If ((Arg1 == Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x00                                             /* . */
                            })
                        }
                    }
                }

                Return (Zero)
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != Zero))
                    {
                        Return (Zero)
                    }

                    If ((BDID == 0x04))
                    {
                        If ((FBID < 0x02))
                        {
                            Return (0x1F)
                        }
                    }

                    BUFF = FL4E /* \_SB_.I2C1.FL4E */
                    If ((BYAT == Zero))
                    {
                        If ((DATA == 0x02))
                        {
                            Return (0x1F)
                        }

                        Return (Zero)
                    }

                    Return (Zero)
                }

                Return (Zero)
            }

            Method (_PCL, 0, NotSerialized)  // _PCL: Power Consumer List
            {
                Return (_SB) /* \_SB_ */
            }

            Method (PSOC, 0, NotSerialized)
            {
                Return (SOCC) /* \_SB_.I2C1.BATC.SOCC */
            }

            Method (PMAX, 0, NotSerialized)
            {
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        Local1 = MALC /* \_SB_.I2C1.BATC.MALC */
                        If ((Local1 & 0x8000))
                        {
                            Local1 = (0xFFFF - Local1)
                        }

                        Local1 *= DSVO
                        Return (Local1)
                    }
                }

                Return (Zero)
            }

            Method (VMIN, 0, NotSerialized)
            {
                Return (0x0DAC)
            }

            Method (APWR, 0, NotSerialized)
            {
                Return (0x0365C040)
            }

            Method (NPWR, 0, NotSerialized)
            {
                Local0 = APWR ()
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        Local1 = AVRC /* \_SB_.I2C1.BATC.AVRC */
                        If ((Local1 & 0x8000))
                        {
                            Local1 = (0xFFFF - Local1)
                        }

                        Local2 = (VOLT * Local1)
                        Local0 -= Local2
                        Return (Local0)
                    }
                }

                Return (Local0)
            }

            Method (PSRC, 0, NotSerialized)
            {
                If ((AVBL == One))
                {
                    BFFG = FGC0 /* \_SB_.I2C1.FGC0 */
                    If ((STAT != One))
                    {
                        Local0 = CHST /* \_SB_.I2C1.BATC.CHST */
                        ADBG ("BATC.PSRC")
                        ADBG (Local0)
                        Local0 >>= 0x06
                        Local0 &= 0x03
                        If ((Local0 == Zero))
                        {
                            Return (Zero)
                        }

                        If ((Local0 == 0x02))
                        {
                            Return (One)
                        }

                        If ((Local0 == One))
                        {
                            Return (0x02)
                        }

                        If ((Local0 == 0x03))
                        {
                            Return (0x04)
                        }
                    }
                }

                Return (One)
            }

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

            Method (ARTG, 0, NotSerialized)
            {
                Return (0x0365C040)
            }
        }
    }

    Scope (_SB.I2C1.BATC)
    {
        Name (TWR0, Buffer (0x0100)
        {
             0x00                                             /* . */
        })
        CreateByteField (TWR0, Zero, TW00)
        CreateByteField (TWR0, One, TW01)
        CreateByteField (TWR0, 0x02, TW02)
        CreateByteField (TWR0, 0x03, TW03)
        CreateByteField (TWR0, 0x04, TW04)
        CreateByteField (TWR0, 0x05, TW05)
        CreateByteField (TWR0, 0x10, TW10)
        CreateByteField (TWR0, 0x11, TW11)
        CreateWordField (TWR0, 0x12, TW12)
        CreateWordField (TWR0, 0x14, TW14)
        CreateWordField (TWR0, 0x16, TW16)
        CreateWordField (TWR0, 0x18, TW18)
        CreateWordField (TWR0, 0x1A, TW1A)
        CreateWordField (TWR0, 0x1C, TW1C)
        CreateWordField (TWR0, 0x1E, TW1E)
        CreateByteField (TWR0, 0x20, TW20)
        CreateByteField (TWR0, 0x21, TW21)
        CreateWordField (TWR0, 0x22, TW22)
        CreateWordField (TWR0, 0x24, TW24)
        CreateWordField (TWR0, 0x26, TW26)
        CreateWordField (TWR0, 0x28, TW28)
        CreateWordField (TWR0, 0x2A, TW2A)
        CreateWordField (TWR0, 0x2C, TW2C)
        CreateWordField (TWR0, 0x2E, TW2E)
        CreateByteField (TWR0, 0x30, TW30)
        CreateByteField (TWR0, 0x31, TW31)
        CreateWordField (TWR0, 0x32, TW32)
        CreateWordField (TWR0, 0x34, TW34)
        CreateWordField (TWR0, 0x36, TW36)
        CreateWordField (TWR0, 0x38, TW38)
        CreateWordField (TWR0, 0x3A, TW3A)
        CreateWordField (TWR0, 0x3C, TW3C)
        CreateByteField (TWR0, 0x40, TW40)
        CreateByteField (TWR0, 0x41, TW41)
        CreateField (TWR0, 0x0210, 0x70, TW42)
        CreateByteField (TWR0, 0x50, TW50)
        CreateByteField (TWR0, 0x51, TW51)
        CreateField (TWR0, 0x0290, 0x70, TW52)
        CreateByteField (TWR0, 0x60, TW60)
        CreateByteField (TWR0, 0x61, TW61)
        CreateField (TWR0, 0x0310, 0x70, TW62)
        CreateByteField (TWR0, 0x70, TW70)
        CreateByteField (TWR0, 0x71, TW71)
        CreateField (TWR0, 0x0390, 0x70, TW72)
        CreateByteField (TWR0, 0x80, TW80)
        CreateByteField (TWR0, 0x81, TW81)
        CreateWordField (TWR0, 0x82, TW82)
        CreateWordField (TWR0, 0x84, TW84)
        CreateWordField (TWR0, 0x86, TW86)
        CreateField (TWR0, 0x0440, 0x40, TW88)
        CreateByteField (TWR0, 0x90, TW90)
        CreateByteField (TWR0, 0x91, TW91)
        CreateWordField (TWR0, 0x92, TW92)
        CreateWordField (TWR0, 0x94, TW94)
        CreateWordField (TWR0, 0x96, TW96)
        CreateWordField (TWR0, 0x98, TW98)
        CreateByteField (TWR0, 0xA0, TWA0)
        CreateByteField (TWR0, 0xA1, TWA1)
        CreateField (TWR0, 0x0510, 0x70, TWA2)
        CreateByteField (TWR0, 0xB0, TWB0)
        CreateByteField (TWR0, 0xB1, TWB1)
        CreateField (TWR0, 0x0590, 0x70, TWB2)
        CreateByteField (TWR0, 0xC0, TWC0)
        CreateByteField (TWR0, 0xC1, TWC1)
        CreateByteField (TWR0, 0xD0, TWD0)
        CreateByteField (TWR0, 0xD1, TWD1)
        Name (BFFI, Buffer (0x24) {})
        CreateByteField (BFFI, Zero, STAI)
        CreateByteField (BFFI, One, LENI)
        CreateByteField (BFFI, 0x02, LENJ)
        CreateWordField (BFFI, 0x02, DATI)
        CreateByteField (BFFI, 0x04, PECI)
        CreateByteField (BFFI, 0x23, PECJ)
        CreateField (BFFI, 0x18, 0x70, DATJ)
        CreateField (BFFI, 0x18, 0x40, DATK)
        CreateField (BFFI, 0x18, 0x0100, DATL)
        Name (SBIF, Zero)
        Method (SBIG, 1, NotSerialized)
        {
            If ((Zero != Arg0))
            {
                Return (TWR0) /* \_SB_.I2C1.BATC.TWR0 */
            }
            Else
            {
                SBIF = One
                Return (TWR0) /* \_SB_.I2C1.BATC.TWR0 */
            }
        }

        Method (MHCF, 1, NotSerialized)
        {
            Name (BUF3, Buffer (0x03)
            {
                 0x00, 0x01, 0x00                                 /* ... */
            })
            CreateByteField (BUF3, Zero, BYA3)
            CreateByteField (BUF3, 0x02, DAT3)
            Return (Arg0)
        }

        Method (MHPF, 1, NotSerialized)
        {
            Local0 = Arg0
            CreateByteField (Local0, Zero, PRTL)
            CreateByteField (Local0, One, STS0)
            CreateByteField (Local0, 0x03, CMD0)
            CreateWordField (Local0, 0x04, WOR0)
            CreateField (Local0, 0x20, 0x0100, DA32)
            CreateField (Local0, 0x20, 0x40, DA08)
            CreateByteField (Local0, 0x25, PEC0)
            Return (Local0)
        }

        Method (MHIF, 1, NotSerialized)
        {
            Name (RETB, Buffer (0x0A) {})
            CreateWordField (RETB, Zero, RE35)
            CreateField (RETB, 0x10, 0x40, RE37)
            Return (RETB) /* \_SB_.I2C1.BATC.MHIF.RETB */
        }

        Method (MHDM, 1, NotSerialized)
        {
        }
    }

    Scope (_SB)
    {
        Device (HKEY)
        {
            Name (_HID, EisaId ("LEN0168"))  // _HID: Hardware ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }

            Method (MHKV, 0, NotSerialized)
            {
                Return (0x0100)
            }

            Name (_DEP, Package (0x02)  // _DEP: Dependencies
            {
                I2C1, 
                GPO2
            })
            Method (SBIG, 1, NotSerialized)
            {
                Return (^^I2C1.BAT0.SBIG (Arg0))
            }

            Method (MHCF, 1, NotSerialized)
            {
                Local0 = Arg0
                If (((Local0 & 0x60) == Zero))
                {
                    Local1 = Zero
                    \_PR.CPU0._PPC = Local1
                    Notify (\_PR.CPU0, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU1, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU2, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU3, 0x80) // Performance Capability Change
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                }
                Else
                {
                    Local1 = 0x06
                    \_PR.CPU0._PPC = Local1
                    Notify (\_PR.CPU0, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU1, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU2, 0x80) // Performance Capability Change
                    Notify (\_PR.CPU3, 0x80) // Performance Capability Change
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x87) // Device-Specific
                    Sleep (0x64)
                    Notify (^^PCI0.GFX0.DD1F, 0x86) // Device-Specific
                    Sleep (0x64)
                }

                ^^I2C1.BAT0.MHCF (Arg0)
                Return (Arg0)
            }

            Method (MHPF, 1, NotSerialized)
            {
                Return (^^I2C1.BAT0.MHPF (Arg0))
            }

            Method (MHIF, 1, NotSerialized)
            {
                Return (^^I2C1.BAT0.MHIF (Arg0))
            }

            Method (MHDM, 1, NotSerialized)
            {
            }

            Method (MHVF, 1, NotSerialized)
            {
                Return (One)
            }

            Name (DHKC, Zero)
            Name (DHKB, One)
            Name (DHKH, Zero)
            Name (DHKW, Zero)
            Name (DHKS, Zero)
            Name (DHKD, Zero)
            Name (DHKT, Zero)
            Name (DHWW, Zero)
            Method (MHKQ, 1, NotSerialized)
            {
                DHKH = Arg0
                Notify (HKEY, 0x80) // Status Change
            }

            Method (MHKP, 0, NotSerialized)
            {
                Local1 = DHKH /* \_SB_.HKEY.DHKH */
                DHKH = Zero
                Return (Local1)
            }

            Method (QDES, 0, NotSerialized)
            {
                If ((^^GPO2.AVBL == One))
                {
                    Local0 = WSTA /* \WSTA */
                    Local0 <<= One
                    Local0 &= 0x06
                    If ((^^GPO2.CLID == One))
                    {
                        Local0 &= 0x0E
                    }
                    Else
                    {
                        Local0 |= One
                    }

                    Return (Local0)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (SDES, 1, NotSerialized)
            {
                If ((^^GPO2.AVBL == One))
                {
                    Local0 = (Arg0 & 0x06)
                    Local0 >>= One
                    WSTA = Local0
                    UCMS (One, Local0)
                    Return (Zero)
                }
                Else
                {
                    Return (0x06)
                }
            }

            Method (MHQT, 1, NotSerialized)
            {
                If ((0x05 == Arg0))
                {
                    Local0 = CMST /* \CMST */
                    Local0 <<= One
                    Local0 |= One
                }
                Else
                {
                    Local0 = Zero
                }

                Return (Local0)
            }

            Method (MHAT, 1, NotSerialized)
            {
                Local0 = (Arg0 & 0x00080000)
                Local0 >>= 0x13
                CMST = Local0
                UCMS (Zero, Local0)
                Notify (STR2, 0x91) // Device-Specific
                Return (One)
            }
        }
    }

    Scope (_SB.I2C1)
    {
        Name (ENE3, ResourceTemplate ()
        {
            I2cSerialBus (0x0070, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.I2C1",
                0x00, ResourceConsumer, ,
                )
        })
        OperationRegion (ERAM, GenericSerialBus, Zero, 0x0100)
        Field (ERAM, BufferAcc, NoLock, Preserve)
        {
            Connection (ENE3), 
            Offset (0x01), 
            AccessAs (BufferAcc, AttribBytes (0x06)), 
            I2CR,   8, 
            AccessAs (BufferAcc, AttribBytes (0x05)), 
            I2CW,   8
        }
    }

    Scope (_SB.I2C1)
    {
        Device (BAT0)
        {
            Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
            Name (_UID, One)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                I2C1
            })
            Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
            {
                _SB
            })
            Name (BMDL, Zero)
            Name (BASC, One)
            Name (BFFW, Zero)
            Mutex (CFMZ, 0x00)
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If ((Arg0 == ToUUID ("4c2067e3-887d-475c-9720-4af1d3ed602e") /* Battery Thermal Limit */))
                {
                    If ((Arg2 == Zero))
                    {
                        If ((Arg1 == Zero))
                        {
                            Debug = "Battery _DSM Query "
                            Return (Buffer (One)
                            {
                                 0x0F                                             /* . */
                            })
                        }
                    }

                    If ((Arg1 == Zero))
                    {
                        If ((Arg2 == One))
                        {
                            Debug = "Set Battery Charge Throttle"
                            Debug = Arg3
                        }

                        If ((Arg2 == 0x02))
                        {
                            Debug = "User-Serviceable Battery"
                            Return (One)
                        }

                        If ((Arg2 == 0x03))
                        {
                            Debug = "Charging Watchdog "
                            Return (0x1E)
                        }
                    }
                }
                Else
                {
                    Return (Buffer (One)
                    {
                         0x00                                             /* . */
                    })
                }
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (AVBL)
                {
                    Acquire (CFMZ, 0xFFFF)
                    ECNR (0xF0)
                    Local0 = (ECR0 & One)
                    If (Local0)
                    {
                        Release (CFMZ)
                        Return (0x1F)
                    }
                    Else
                    {
                        Sleep (0x0A)
                        ECNR (0xF0)
                        Local0 = (ECR0 & One)
                        If (Local0)
                        {
                            Release (CFMZ)
                            Return (0x1F)
                        }
                        Else
                        {
                            Release (CFMZ)
                            Return (0x0F)
                        }
                    }
                }

                Return (0x1F)
            }

            Method (_BIF, 0, NotSerialized)  // _BIF: Battery Information
            {
                Return (BIFX (Zero))
            }

            Method (_BIX, 0, NotSerialized)  // _BIX: Battery Information Extended
            {
                Return (BIFX (One))
            }

            Method (BIFX, 1, NotSerialized)
            {
                Name (STAX, Package (0x14)
                {
                    Zero, 
                    One, 
                    0x1770, 
                    0x1770, 
                    One, 
                    0x2A30, 
                    0x0258, 
                    0xB4, 
                    0x08, 
                    0x09, 
                    0x0A, 
                    0x0B, 
                    0x0C, 
                    0x0D, 
                    0x0108, 
                    0x0EC4, 
                    "PABAS0241231", 
                    "41167", 
                    "Li-Ion", 
                    "LG Chem"
                })
                Name (STAF, Package (0x0D)
                {
                    One, 
                    0x1770, 
                    0x1770, 
                    One, 
                    0x2A30, 
                    0x0258, 
                    0xB4, 
                    0x0108, 
                    0x0EC4, 
                    "PABAS0241231", 
                    "41167", 
                    "Li-Ion", 
                    "LG Chem"
                })
                Name (BTNA, Buffer (0x0E)
                {
                    /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
                    /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00               /* ...... */
                })
                If (AVBL)
                {
                    Acquire (CFMZ, 0xFFFF)
                    ECNR (0xC0)
                    Local0 = (ECR0 & 0x02)
                    STAX [One] = Local0
                    ECNR (0xCB)
                    Local5 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xCA)
                    Local6 = (ECR0 | (Local5 << 0x08))
                    Local6 *= 0x0A
                    STAX [0x02] = Local6
                    ECNR (0xFC)
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xFB)
                    Local2 = (ECR0 | (Local0 << 0x08))
                    Local2 *= 0x0A
                    STAX [0x03] = Local2
                    ECNR (0xC9)
                    Local4 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xC8)
                    Local5 = (ECR0 | (Local4 << 0x08))
                    STAX [0x05] = Local5
                    Divide (Local2, 0x64, Local0, Local1)
                    Local1 *= 0x0A
                    STAX [0x06] = Local1
                    Divide (Local2, 0x64, Local0, Local1)
                    Local1 *= 0x03
                    STAX [0x07] = Local1
                    ECNR (0xCF)
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    STAX [0x08] = Local0
                    ECNR (0xFF)
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    STAX [0x09] = Local0
                    STAX [0x0A] = 0xFA
                    STAX [0x0B] = 0xFA
                    STAX [0x0C] = 0x03E8
                    STAX [0x0D] = 0x03E8
                    ECNR (0xC5)
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xC4)
                    Local0 = (ECR0 | (Local0 << 0x08))
                    ToDecimalString (Local0, Local1)
                    STAX [0x11] = Local1
                    ECBR (0x83, 0x52)
                    BTNA [Zero] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x53)
                    BTNA [One] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x54)
                    BTNA [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x55)
                    BTNA [0x03] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x56)
                    BTNA [0x04] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x57)
                    BTNA [0x05] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x58)
                    BTNA [0x06] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x59)
                    BTNA [0x07] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5A)
                    BTNA [0x08] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5B)
                    BTNA [0x09] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5C)
                    BTNA [0x0A] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5D)
                    BTNA [0x0B] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5E)
                    BTNA [0x0C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x5F)
                    BTNA [0x0D] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    STAX [0x10] = BTNA /* \_SB_.I2C1.BAT0.BIFX.BTNA */
                    ECBR (0x83, 0x62)
                    BTNA [Zero] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x63)
                    BTNA [One] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x64)
                    BTNA [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x65)
                    BTNA [0x03] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x66)
                    BTNA [0x04] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x67)
                    BTNA [0x05] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x68)
                    BTNA [0x06] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x69)
                    BTNA [0x07] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6A)
                    BTNA [0x08] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6B)
                    BTNA [0x09] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6C)
                    BTNA [0x0A] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6D)
                    BTNA [0x0B] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6E)
                    BTNA [0x0C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x6F)
                    BTNA [0x0D] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    STAX [0x12] = BTNA /* \_SB_.I2C1.BAT0.BIFX.BTNA */
                    ECBR (0x83, 0x42)
                    BTNA [Zero] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x43)
                    BTNA [One] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x44)
                    BTNA [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x45)
                    BTNA [0x03] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x46)
                    BTNA [0x04] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x47)
                    BTNA [0x05] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x48)
                    BTNA [0x06] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x49)
                    BTNA [0x07] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4A)
                    BTNA [0x08] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4B)
                    BTNA [0x09] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4C)
                    BTNA [0x0A] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4D)
                    BTNA [0x0B] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4E)
                    BTNA [0x0C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x4F)
                    BTNA [0x0D] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    STAX [0x13] = BTNA /* \_SB_.I2C1.BAT0.BIFX.BTNA */
                    STAF [Zero] = DerefOf (STAX [One])
                    STAF [One] = DerefOf (STAX [0x02])
                    STAF [0x02] = DerefOf (STAX [0x03])
                    STAF [0x03] = DerefOf (STAX [0x04])
                    STAF [0x04] = DerefOf (STAX [0x05])
                    STAF [0x05] = DerefOf (STAX [0x06])
                    STAF [0x06] = DerefOf (STAX [0x07])
                    STAF [0x07] = DerefOf (STAX [0x0E])
                    STAF [0x08] = DerefOf (STAX [0x0F])
                    STAF [0x09] = DerefOf (STAX [0x10])
                    STAF [0x0A] = DerefOf (STAX [0x11])
                    STAF [0x0B] = DerefOf (STAX [0x12])
                    STAF [0x0C] = DerefOf (STAX [0x13])
                    Release (CFMZ)
                }

                If ((Arg0 == One))
                {
                    Return (STAX) /* \_SB_.I2C1.BAT0.BIFX.STAX */
                }
                Else
                {
                    Return (STAF) /* \_SB_.I2C1.BAT0.BIFX.STAF */
                }
            }

            Name (PBST, Package (0x04)
            {
                Zero, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If (AVBL)
                {
                    Acquire (CFMZ, 0xFFFF)
                    ECNR (0xC1)
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    PBST [Zero] = Local0
                    ECNR (0xD1)
                    Local1 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xD0)
                    Local2 = (ECR0 | (Local1 << 0x08))
                    If ((Local2 > 0x7FFF))
                    {
                        Local2 = (0x00010000 - Local2)
                    }

                    ECNR (0xC7)
                    Local5 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xC6)
                    Local6 = (ECR0 | (Local5 << 0x08))
                    Local2 *= Local6
                    Divide (Local2, 0x03E8, Local7, Local2)
                    PBST [One] = Local2
                    ECNR (0xC3)
                    Local3 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0xC2)
                    Local4 = (ECR0 | (Local3 << 0x08))
                    Local4 *= 0x0A
                    PBST [0x02] = Local4
                    PBST [0x03] = Local6
                    LEDC ()
                    Release (CFMZ)
                }

                Return (PBST) /* \_SB_.I2C1.BAT0.PBST */
            }

            Method (_BTP, 1, NotSerialized)  // _BTP: Battery Trip Point
            {
                Divide (Arg0, 0x0A, Local0, Arg0)
                If (AVBL)
                {
                    ECNW (0xFD, Arg0)
                    ECNW (0xFE, (Arg0 >> 0x08))
                }
            }

            Method (PSRC, 0, NotSerialized)
            {
                If (((AVBL == One) && (AVB2 == One)))
                {
                    AVB1 = One
                    Acquire (CFMZ, 0xFFFF)
                    ECNR (0xA4)
                    Local2 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    Release (CFMZ)
                    AVB1 = Zero
                    Return (Local2)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Name (BUFF, Buffer (0x25)
            {
                 0x00                                             /* . */
            })
            CreateByteField (BUFF, Zero, DAT0)
            CreateByteField (BUFF, One, DAT1)
            CreateByteField (BUFF, 0x02, DAT2)
            CreateByteField (BUFF, 0x03, DAT3)
            CreateByteField (BUFF, 0x04, DAT4)
            CreateByteField (BUFF, 0x05, DAT5)
            CreateByteField (BUFF, 0x06, DAT6)
            CreateByteField (BUFF, 0x07, DAT7)
            CreateByteField (BUFF, 0x08, DAT8)
            CreateByteField (BUFF, 0x09, DAT9)
            CreateByteField (BUFF, 0x0A, DATA)
            CreateByteField (BUFF, 0x0B, DATB)
            CreateByteField (BUFF, 0x0C, DATC)
            CreateByteField (BUFF, 0x0D, DATD)
            CreateByteField (BUFF, 0x0E, DATE)
            CreateByteField (BUFF, 0x0F, DATF)
            CreateByteField (BUFF, 0x10, DATG)
            CreateByteField (BUFF, 0x11, DATH)
            CreateByteField (BUFF, 0x12, DATI)
            CreateByteField (BUFF, 0x13, DATJ)
            CreateByteField (BUFF, 0x14, DATK)
            CreateByteField (BUFF, 0x15, DATL)
            CreateByteField (BUFF, 0x16, DATM)
            CreateByteField (BUFF, 0x17, DATN)
            CreateByteField (BUFF, 0x18, DATO)
            CreateByteField (BUFF, 0x19, DATP)
            CreateByteField (BUFF, 0x1A, DATQ)
            CreateByteField (BUFF, 0x1B, DATR)
            CreateByteField (BUFF, 0x1C, DATS)
            CreateByteField (BUFF, 0x1D, DATT)
            CreateByteField (BUFF, 0x1E, DATU)
            CreateByteField (BUFF, 0x1F, DATV)
            CreateByteField (BUFF, 0x20, DATW)
            CreateByteField (BUFF, 0x21, DATX)
            CreateByteField (BUFF, 0x22, DATY)
            CreateByteField (BUFF, 0x23, DATZ)
            CreateByteField (BUFF, 0x24, PECD)
            Method (MHPF, 1, NotSerialized)
            {
                BUFF = Arg0
                If (((AVBL == One) && (AVB2 == One)))
                {
                    AVB1 = One
                    ECNW (0x62, DAT2)
                    ECNW (0x63, DAT3)
                    ECNW (0x64, DAT4)
                    ECNW (0x65, DAT5)
                    ECNW (0x66, DAT6)
                    ECNW (0x67, DAT7)
                    ECNW (0x68, DAT8)
                    ECNW (0x69, DAT9)
                    ECNW (0x6A, DATA)
                    ECNW (0x6B, DATB)
                    ECNW (0x6C, DATC)
                    ECNW (0x6D, DATD)
                    ECNW (0x6E, DATE)
                    ECNW (0x6F, DATF)
                    ECNW (0x70, DATG)
                    ECNW (0x71, DATH)
                    ECNW (0x72, DATI)
                    ECNW (0x73, DATJ)
                    ECNW (0x74, DATK)
                    ECNW (0x75, DATL)
                    ECNW (0x76, DATM)
                    ECNW (0x77, DATN)
                    ECNW (0x78, DATO)
                    ECNW (0x79, DATP)
                    ECNW (0x7A, DATQ)
                    ECNW (0x7B, DATR)
                    ECNW (0x7C, DATS)
                    ECNW (0x7D, DATT)
                    ECNW (0x7E, DATU)
                    ECNW (0x7F, DATV)
                    ECNW (0x80, DATW)
                    ECNW (0x81, DATX)
                    ECNW (0x82, DATY)
                    ECNW (0x83, DATZ)
                    ECNW (0x84, PECD)
                    ECNW (0x60, DAT0)
                    Sleep (0x0A)
                    Acquire (CFMZ, 0xFFFF)
                    ECNR (0x60)
                    DAT0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x61)
                    DAT1 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x62)
                    DAT2 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x63)
                    DAT3 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x64)
                    DAT4 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x65)
                    DAT5 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x66)
                    DAT6 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x67)
                    DAT7 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x68)
                    DAT8 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x69)
                    DAT9 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6A)
                    DATA = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6B)
                    DATB = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6C)
                    DATC = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6D)
                    DATD = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6E)
                    DATE = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x6F)
                    DATF = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x70)
                    DATG = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x71)
                    DATH = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x72)
                    DATI = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x73)
                    DATJ = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x74)
                    DATK = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x75)
                    DATL = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x76)
                    DATM = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x77)
                    DATN = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x78)
                    DATO = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x79)
                    DATP = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7A)
                    DATQ = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7B)
                    DATR = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7C)
                    DATS = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7D)
                    DATT = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7E)
                    DATU = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x7F)
                    DATV = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x80)
                    DATW = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x81)
                    DATX = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x82)
                    DATY = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x83)
                    DATZ = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECNR (0x84)
                    PECD = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    Release (CFMZ)
                    AVB1 = Zero
                    Return (BUFF) /* \_SB_.I2C1.BAT0.BUFF */
                }

                Return (BUFF) /* \_SB_.I2C1.BAT0.BUFF */
            }

            Method (MHIF, 1, NotSerialized)
            {
                Name (RETB, Buffer (0x0A)
                {
                     0x00                                             /* . */
                })
                If (((AVBL == One) && (AVB2 == One)))
                {
                    AVB1 = One
                    Acquire (CFMZ, 0xFFFF)
                    ECBR (0x83, 0x86)
                    RETB [Zero] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x87)
                    RETB [One] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x88)
                    RETB [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x89)
                    RETB [0x03] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8A)
                    RETB [0x04] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8B)
                    RETB [0x05] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8C)
                    RETB [0x06] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8D)
                    RETB [0x07] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8E)
                    RETB [0x08] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    ECBR (0x83, 0x8F)
                    RETB [0x09] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    Release (CFMZ)
                    AVB1 = Zero
                    Return (RETB) /* \_SB_.I2C1.BAT0.MHIF.RETB */
                }

                Return (RETB) /* \_SB_.I2C1.BAT0.MHIF.RETB */
            }

            Name (SBIF, Zero)
            Name (TWRB, Buffer (0x0100)
            {
                 0x00                                             /* . */
            })
            Method (SBIG, 1, Serialized)
            {
                AVB1 = One
                If (((AVBL == One) && (AVB2 == One)))
                {
                    Local0 = Zero
                    Acquire (CFMZ, 0xFFFF)
                    If ((SBIF == Zero))
                    {
                        While ((0x0100 != Local0))
                        {
                            ECBR (0x83, Local0)
                            TWRB [Local0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                            Local0 += One
                        }

                        SBIF = One
                    }
                    Else
                    {
                        ECBR (0x83, Zero)
                        TWRB [Zero] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x10] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x20] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x30] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x40] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x50] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x60] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x70] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x80] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x90] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xA0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xB0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xC0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xD0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xE0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xF0] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, One)
                        TWRB [One] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x11] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x21] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x31] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x41] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x51] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x61] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x71] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x81] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0x91] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xA1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xB1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xC1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xD1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xE1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        TWRB [0xF1] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x12)
                        TWRB [0x12] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x13)
                        TWRB [0x13] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x14)
                        TWRB [0x14] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x15)
                        TWRB [0x15] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x16)
                        TWRB [0x16] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x17)
                        TWRB [0x17] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x18)
                        TWRB [0x18] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x19)
                        TWRB [0x19] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1A)
                        TWRB [0x1A] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1B)
                        TWRB [0x1B] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1C)
                        TWRB [0x1C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1C)
                        TWRB [0x1C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1E)
                        TWRB [0x1E] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x1F)
                        TWRB [0x1F] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x22)
                        TWRB [0x22] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x23)
                        TWRB [0x23] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x24)
                        TWRB [0x24] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x25)
                        TWRB [0x25] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x26)
                        TWRB [0x26] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x27)
                        TWRB [0x27] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x28)
                        TWRB [0x28] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x29)
                        TWRB [0x29] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2A)
                        TWRB [0x2A] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2B)
                        TWRB [0x2B] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2C)
                        TWRB [0x2C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2D)
                        TWRB [0x2D] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2E)
                        TWRB [0x2E] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x2F)
                        TWRB [0x2F] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x3C)
                        TWRB [0x3C] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x3D)
                        TWRB [0x3D] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x86)
                        TWRB [0x86] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x87)
                        TWRB [0x87] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x88)
                        TWRB [0x88] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x89)
                        TWRB [0x89] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x92)
                        TWRB [0x92] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x93)
                        TWRB [0x93] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x94)
                        TWRB [0x94] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x95)
                        TWRB [0x95] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x96)
                        TWRB [0x96] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x97)
                        TWRB [0x97] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x98)
                        TWRB [0x98] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                        ECBR (0x83, 0x99)
                        TWRB [0x99] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    }

                    Release (CFMZ)
                }

                AVB1 = Zero
                Return (TWRB) /* \_SB_.I2C1.BAT0.TWRB */
            }

            Method (EVEN, 0, NotSerialized)
            {
                AVB1 = One
                If (((AVBL == One) && (AVB2 == One)))
                {
                    Acquire (CFMZ, 0xFFFF)
                    EVER ()
                    Local0 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                    Release (CFMZ)
                }
                Else
                {
                    Local0 = Zero
                }

                AVB1 = Zero
                Return (Local0)
            }

            Method (MHCF, 1, NotSerialized)
            {
                AVB1 = One
                If (((AVBL == One) && (AVB2 == One)))
                {
                    Acquire (CFMZ, 0xFFFF)
                    ECNW (0x8F, Arg0)
                    Release (CFMZ)
                }

                AVB1 = Zero
            }

            OperationRegion (COMP, SystemMemory, 0xB995BC98, 0x0200)
            Field (COMP, AnyAcc, Lock, Preserve)
            {
                RSV0,   32, 
                BOID,   8, 
                CPFB,   8, 
                PBTI,   8, 
                BRLV,   8, 
                CAVR,   8, 
                TJMA,   16, 
                CORE,   8, 
                CG12,   8, 
                CG13,   8, 
                CG14,   8, 
                CG15,   8, 
                CG16,   8, 
                CG17,   8, 
                CG18,   8, 
                CG19,   8, 
                CG20,   8, 
                CG21,   8, 
                CG22,   8, 
                CG23,   8, 
                CG24,   8, 
                CG25,   8, 
                CG26,   8, 
                CG27,   8, 
                CG28,   8, 
                CG29,   8, 
                CG30,   8, 
                CG31,   8, 
                SFNO,   16, 
                STDT,   16, 
                BFDT,   1024, 
                RSV1,   736, 
                IDFD,   1024, 
                RSV2,   1024
            }

            Method (CMFC, 4, Serialized)
            {
                Name (_T_C, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_B, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_A, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_9, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_8, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_7, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_6, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_5, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_4, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_3, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_2, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                Name (_T_0, Zero)  // _T_x: Emitted by ASL Compiler
                Local0 = Buffer (0x82) {}
                CreateWordField (Local0, Zero, RTST)
                CreateField (Local0, 0x10, 0x0400, RTDT)
                While (One)
                {
                    _T_0 = ToInteger (Arg0)
                    If ((_T_0 == 0x10))
                    {
                        RTST = One
                        RTDT = Zero
                        Return (Local0)
                    }
                    ElseIf ((_T_0 == 0x14))
                    {
                        APMC = 0x78
                        RTDT = Zero
                        RTST = One
                        Return (Local0)
                    }
                    ElseIf ((_T_0 == 0x20))
                    {
                        While (One)
                        {
                            _T_1 = ToInteger (Arg1)
                            If ((_T_1 == 0x03))
                            {
                                APMC = 0x79
                                RTDT = Zero
                                RTST = One
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x23))
                    {
                        RTST = One
                        RTDT = 0x06
                        Return (Local0)
                    }
                    ElseIf ((_T_0 == 0x27))
                    {
                        While (One)
                        {
                            _T_2 = ToInteger (Arg1)
                            If ((_T_2 == One))
                            {
                                CreateByteField (Arg2, Zero, ECST)
                                CreateByteField (Arg2, One, MODE)
                                CreateByteField (Arg2, 0x02, CMLN)
                                CreateByteField (Arg2, 0x03, ECCM)
                                CreateByteField (Arg2, 0x04, ECD0)
                                CreateByteField (Arg2, 0x05, ECD1)
                                CreateByteField (Arg2, 0x06, ECD2)
                                CreateByteField (Arg2, 0x07, ECD3)
                                CreateField (ECRD, 0x08, 0x38, BUFF)
                                STDT = Zero
                                BFDT = Zero
                                ECRW (ECCM, ECD0, ECD1, ECD2, ECD3)
                                BFDT = BUFF /* \_SB_.I2C1.BAT0.CMFC.BUFF */
                                STDT = One
                                RTST = STDT /* \_SB_.I2C1.BAT0.STDT */
                                RTDT = BFDT /* \_SB_.I2C1.BAT0.BFDT */
                                Return (Local0)
                            }
                            ElseIf ((_T_2 == 0x02))
                            {
                                STDT = Zero
                                BFDT = Zero
                                BFDT = One
                                STDT = One
                                RTST = STDT /* \_SB_.I2C1.BAT0.STDT */
                                RTDT = BFDT /* \_SB_.I2C1.BAT0.BFDT */
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x80))
                    {
                        While (One)
                        {
                            _T_3 = ToInteger (Arg1)
                            If ((_T_3 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x47, 0x82)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_3 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x47, 0x83)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_3 == 0x03))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x47, 0x88)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_3 == 0x04))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x47, 0x80)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_3 == 0x05))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x47, 0x85)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x81))
                    {
                        While (One)
                        {
                            _T_4 = ToInteger (Arg1)
                            If ((_T_4 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x59, 0x9A)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_4 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x59, 0x9B)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_4 == 0x03))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCR (0x80, 0xA4)
                                RTST = One
                                Local1 = (ECR0 >> 0x07)
                                RTDT = Local1
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x82))
                    {
                        While (One)
                        {
                            _T_5 = ToInteger (Arg1)
                            If ((_T_5 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECVR ()
                                RTST = One
                                Local0 [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                Local0 [0x03] = ECR1 /* \_SB_.I2C1.BAT0.ECR1 */
                                Local0 [0x04] = ECR2 /* \_SB_.I2C1.BAT0.ECR2 */
                                Local0 [0x05] = ECR3 /* \_SB_.I2C1.BAT0.ECR3 */
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_5 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECBR (0x82, 0xF0)
                                Local0 [0x02] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF1)
                                Local0 [0x03] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF2)
                                Local0 [0x04] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF3)
                                Local0 [0x05] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF4)
                                Local0 [0x06] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF5)
                                Local0 [0x07] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF6)
                                Local0 [0x08] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECBR (0x82, 0xF7)
                                Local0 [0x09] = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                RTST = One
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x83))
                    {
                        While (One)
                        {
                            _T_6 = ToInteger (Arg1)
                            If ((_T_6 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x45, 0xBF)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_6 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCT (0x59, 0x81, ToInteger (Arg2))
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_6 == 0x03))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x45, 0xEE)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_6 == 0x04))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x59, 0x82)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x84))
                    {
                        While (One)
                        {
                            _T_7 = ToInteger (Arg1)
                            If ((_T_7 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECNR (0xC0)
                                RTST = One
                                RTDT = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_7 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECNR (0xCB)
                                Local5 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECNR (0xCA)
                                Local6 = (ECR0 | (Local5 << 0x08))
                                RTST = One
                                RTDT = Local6
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_7 == 0x03))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECNR (0xFC)
                                Local1 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECNR (0xFB)
                                Local2 = (ECR0 | (Local1 << 0x08))
                                RTST = One
                                RTDT = Local2
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_7 == 0x04))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECNR (0xC3)
                                Local3 = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                ECNR (0xC2)
                                Local4 = (ECR0 | (Local3 << 0x08))
                                RTST = One
                                RTDT = Local4
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x85))
                    {
                        While (One)
                        {
                            _T_8 = ToInteger (Arg1)
                            If ((_T_8 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x45, 0xE0)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_8 == 0x02))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                MFCC (0x45, 0xE1)
                                RTST = One
                                RTDT = Zero
                                Release (CFMZ)
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x86))
                    {
                        P80H = 0x8686
                        If ((^^^GPO0.AVBL == One))
                        {
                            If ((^^^GPO0.DPRS == Zero))
                            {
                                RTST = One
                                RTDT = One
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = One
                                RTDT = Zero
                                Return (Local0)
                            }
                        }

                        RTST = Zero
                        RTDT = Zero
                        Return (Local0)
                    }
                    ElseIf ((_T_0 == 0x87))
                    {
                        While (One)
                        {
                            _T_9 = ToInteger (Arg1)
                            If ((_T_9 == One))
                            {
                                Acquire (CFMZ, 0xFFFF)
                                ECBR (0x87, 0x27)
                                RTDT = ECR0 /* \_SB_.I2C1.BAT0.ECR0 */
                                RTST = One
                                Release (CFMZ)
                                Return (Local0)
                            }
                            ElseIf ((_T_9 == 0x02))
                            {
                                If ((^^^GPO2.AVBL == One))
                                {
                                    If ((^^^GPO2.LIDI == One))
                                    {
                                        RTST = One
                                        RTDT = One
                                    }
                                    Else
                                    {
                                        RTST = One
                                        RTDT = Zero
                                    }
                                }
                                Else
                                {
                                    RTST = Zero
                                    RTDT = Zero
                                }

                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x88))
                    {
                        While (One)
                        {
                            _T_A = ToInteger (Arg1)
                            If ((_T_A == One))
                            {
                                RTST = One
                                RTDT = "{73e0c63d-8fb9-41d1-9741-e1323e830b0c}"
                                Return (Local0)
                            }
                            ElseIf ((_T_A == 0x02))
                            {
                                RTST = One
                                RTDT = Zero
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x89))
                    {
                        While (One)
                        {
                            _T_B = ToInteger (Arg1)
                            If ((_T_B == One))
                            {
                                RTST = One
                                RTDT = "ELLACONFIG"
                                Return (Local0)
                            }
                            ElseIf ((_T_B == 0x02))
                            {
                                RTST = One
                                RTDT = Zero
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    ElseIf ((_T_0 == 0x8A))
                    {
                        While (One)
                        {
                            _T_C = ToInteger (Arg1)
                            If ((_T_C == One))
                            {
                                RTST = One
                                RTDT = 0x02
                                Return (Local0)
                            }
                            ElseIf ((_T_C == 0x02))
                            {
                                RTST = One
                                RTDT = Zero
                                Return (Local0)
                            }
                            ElseIf ((_T_C == 0x03))
                            {
                                RTST = One
                                RTDT = One
                                Return (Local0)
                            }
                            ElseIf ((_T_C == 0x04))
                            {
                                RTST = One
                                RTDT = 0x07
                                Return (Local0)
                            }
                            Else
                            {
                                RTST = Zero
                                RTDT = Zero
                                Return (Local0)
                            }

                            Break
                        }
                    }
                    Else
                    {
                        RTST = Zero
                        RTDT = Zero
                        Return (Local0)
                    }

                    Break
                }
            }
        }
    }

    Scope (_SB)
    {
        Device (ADP1)
        {
            Name (_HID, "ACPI0003" /* Power Source Device */)  // _HID: Hardware ID
            Method (_PSR, 0, NotSerialized)  // _PSR: Power Source
            {
                Local0 = ^^I2C1.BAT0.PSRC ()
                If ((Local0 && 0x80))
                {
                    Return (One)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_PCL, 0, NotSerialized)  // _PCL: Power Consumer List
            {
                Return (_SB) /* \_SB_ */
            }
        }
    }

    Scope (_SB.I2C1.BAT0)
    {
        Mutex (CFMX, 0x00)
        Name (ECRD, Buffer (0x0A)
        {
            /* 0000 */  0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
            /* 0008 */  0x00, 0x00                                       /* .. */
        })
        CreateByteField (ECRD, Zero, ERST)
        CreateByteField (ECRD, One, ERLN)
        CreateByteField (ECRD, 0x02, ECR0)
        CreateByteField (ECRD, 0x03, ECR1)
        CreateByteField (ECRD, 0x04, ECR2)
        CreateByteField (ECRD, 0x05, ECR3)
        CreateByteField (ECRD, 0x06, ECR4)
        CreateByteField (ECRD, 0x07, ECR5)
        Name (ECWR, Buffer (0x0A)
        {
            /* 0000 */  0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  /* ........ */
            /* 0008 */  0x00, 0x00                                       /* .. */
        })
        CreateByteField (ECWR, Zero, ECST)
        CreateByteField (ECWR, One, ECLN)
        CreateByteField (ECWR, 0x02, ECD0)
        CreateByteField (ECWR, 0x03, ECD1)
        CreateByteField (ECWR, 0x04, ECD2)
        CreateByteField (ECWR, 0x05, ECD3)
        CreateByteField (ECWR, 0x06, ECD4)
        Method (EC00, 0, NotSerialized)
        {
            ECD0 = Zero
            ECD1 = Zero
            ECD2 = Zero
            ECD3 = Zero
            ECD4 = Zero
            ECR0 = Zero
            ECR1 = Zero
            ECR2 = Zero
            ECR3 = Zero
            ECR4 = Zero
            ECR5 = Zero
        }

        Method (ECNR, 1, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0x80
            ECD1 = Arg0
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
            Sleep (0x02)
        }

        Method (ECNW, 2, NotSerialized)
        {
            AVB1 = One
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0x81
            ECD1 = Arg0
            ECD2 = Arg1
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            AVB1 = Zero
            Release (CFMX)
        }

        Method (ECBR, 2, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0xB3
            ECD1 = Arg0
            ECD2 = Arg1
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
            Sleep (0x02)
        }

        Method (ECBW, 3, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0xB2
            ECD1 = Arg0
            ECD2 = Arg1
            ECD3 = Arg2
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            Release (CFMX)
            Sleep (0x02)
        }

        Method (EVER, 0, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0x84
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
            Sleep (0x02)
        }

        Method (ECVR, 0, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = 0x51
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
            Sleep (0x02)
        }

        Method (MFCC, 2, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = Arg0
            ECD1 = Arg1
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            Release (CFMX)
            Sleep (0x02)
        }

        Method (MFCR, 2, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = Arg0
            ECD1 = Arg1
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
            Sleep (0x02)
        }

        Method (MFCT, 3, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = Arg0
            ECD1 = Arg1
            ECD2 = Arg2
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            Release (CFMX)
            Sleep (0x02)
        }

        Method (ECRW, 5, NotSerialized)
        {
            Acquire (CFMX, 0xFFFF)
            EC00 ()
            ECD0 = Arg0
            ECD1 = Arg1
            ECD2 = Arg2
            ECD3 = Arg3
            ECD4 = Arg4
            ECWR = I2CW = ECWR /* \_SB_.I2C1.BAT0.ECWR */
            If ((ECST == Zero))
            {
                ECRD = I2CR /* \_SB_.I2C1.I2CR */
            }

            Release (CFMX)
        }

        Name (LEDS, Zero)
        Name (LEDR, One)
        Method (LEDC, 0, NotSerialized)
        {
            If ((LEDR != LEDS))
            {
                LEDS = LEDR /* \_SB_.I2C1.BAT0.LEDR */
                If ((LEDS == Zero))
                {
                    ECNW (0x03, Zero)
                }
                Else
                {
                    ECNW (0x03, One)
                }
            }

            Return (LEDS) /* \_SB_.I2C1.BAT0.LEDS */
        }
    }

    Scope (_SB)
    {
        Device (LID0)
        {
            Name (_HID, EisaId ("PNP0C0D") /* Lid Device */)  // _HID: Hardware ID
            Method (_LID, 0, NotSerialized)  // _LID: Lid Status
            {
                If ((^^GPO2.AVBL == One))
                {
                    If ((^^GPO2.LIDI == One))
                    {
                        Return (One)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
                Else
                {
                    Return (Zero)
                }
            }

            Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
            {
            }
        }
    }

    Scope (_SB)
    {
        Device (LWMI)
        {
            Name (_HID, "PNP0C14" /* Windows Management Instrumentation Device */)  // _HID: Hardware ID
            Name (_UID, Zero)  // _UID: Unique ID
            Name (_DEP, Package (0x01)  // _DEP: Dependencies
            {
                GPO0
            })
            Name (_WDG, Buffer (0x50)
            {
                /* 0000 */  0x0F, 0x32, 0x64, 0x59, 0xD7, 0xA1, 0x4B, 0x40,  /* .2dY..K@ */
                /* 0008 */  0xA1, 0x31, 0x1E, 0x5C, 0xFE, 0x46, 0xFA, 0x47,  /* .1.\.F.G */
                /* 0010 */  0x41, 0x41, 0x01, 0x00, 0x7E, 0x04, 0xA1, 0xBE,  /* AA..~... */
                /* 0018 */  0x86, 0x7E, 0xEC, 0x49, 0xA6, 0x8B, 0x80, 0xB6,  /* .~.I.... */
                /* 0020 */  0xE7, 0x56, 0x78, 0x5E, 0x42, 0x42, 0x01, 0x02,  /* .Vx^BB.. */
                /* 0028 */  0x46, 0x71, 0x3C, 0xF1, 0xF3, 0xCC, 0x2D, 0x46,  /* Fq<...-F */
                /* 0030 */  0xAB, 0xB9, 0x15, 0x02, 0x38, 0xBE, 0x03, 0xB5,  /* ....8... */
                /* 0038 */  0xA0, 0x00, 0x01, 0x08, 0x21, 0x12, 0x90, 0x05,  /* ....!... */
                /* 0040 */  0x66, 0xD5, 0xD1, 0x11, 0xB2, 0xF0, 0x00, 0xA0,  /* f....... */
                /* 0048 */  0xC9, 0x06, 0x29, 0x10, 0x4D, 0x4F, 0x01, 0x00   /* ..).MO.. */
            })
            Method (WQAA, 1, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    Return (Package (0x01)
                    {
                        "ZIJI1"
                    })
                }
            }

            Method (WMBB, 3, NotSerialized)
            {
                If ((Arg0 == Zero))
                {
                    If ((Arg1 == One))
                    {
                        If ((^^GPO0.AVBL == One))
                        {
                            If ((^^GPO0.DPRS == Zero))
                            {
                                Return (0x11)
                            }
                            Else
                            {
                                Return (0x10)
                            }
                        }
                    }
                }

                Return (Zero)
            }

            Method (_WED, 1, NotSerialized)  // _Wxx: Wake Event
            {
                If ((^^GPO0.AVBL == One))
                {
                    If ((^^GPO0.DPRS == Zero))
                    {
                        Return (0x11)
                    }
                    Else
                    {
                        Return (0x10)
                    }
                }

                Return (Zero)
            }

            Name (WQMO, Buffer (0x0426)
            {
                /* 0000 */  0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00,  /* FOMB.... */
                /* 0008 */  0x16, 0x04, 0x00, 0x00, 0xDC, 0x0F, 0x00, 0x00,  /* ........ */
                /* 0010 */  0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54,  /* DS...}.T */
                /* 0018 */  0x28, 0xDE, 0x87, 0x00, 0x01, 0x06, 0x18, 0x42,  /* (......B */
                /* 0020 */  0x10, 0x09, 0x10, 0x22, 0x21, 0x04, 0x12, 0x01,  /* ..."!... */
                /* 0028 */  0xA1, 0xC8, 0x2C, 0x0C, 0x86, 0x10, 0x38, 0x2E,  /* ..,...8. */
                /* 0030 */  0x84, 0x1C, 0x40, 0x48, 0x1C, 0x14, 0x4A, 0x08,  /* ..@H..J. */
                /* 0038 */  0x84, 0xFA, 0x13, 0xC8, 0xAF, 0x00, 0x84, 0x0E,  /* ........ */
                /* 0040 */  0x05, 0xC8, 0x14, 0x60, 0x50, 0x80, 0x53, 0x04,  /* ...`P.S. */
                /* 0048 */  0x11, 0xF4, 0x2A, 0xC0, 0xA6, 0x00, 0x93, 0x02,  /* ..*..... */
                /* 0050 */  0x2C, 0x0A, 0xD0, 0x2E, 0xC0, 0xB2, 0x00, 0xDD,  /* ,....... */
                /* 0058 */  0x02, 0xA4, 0xC3, 0x12, 0x91, 0xE0, 0x28, 0x31,  /* ......(1 */
                /* 0060 */  0xE0, 0x28, 0x9D, 0xD8, 0xC2, 0x0D, 0x1B, 0xBC,  /* .(...... */
                /* 0068 */  0x50, 0x14, 0xCD, 0x20, 0x4A, 0x82, 0xCA, 0x05,  /* P.. J... */
                /* 0070 */  0xF8, 0x46, 0x10, 0x78, 0xB9, 0x02, 0x24, 0x4F,  /* .F.x..$O */
                /* 0078 */  0x40, 0x9A, 0x05, 0x18, 0x16, 0x60, 0x5D, 0x80,  /* @....`]. */
                /* 0080 */  0xEC, 0x21, 0x50, 0xA9, 0x43, 0x40, 0xC9, 0x19,  /* .!P.C@.. */
                /* 0088 */  0x02, 0x6A, 0x00, 0xAD, 0x4E, 0x40, 0xF8, 0x95,  /* .j..N@.. */
                /* 0090 */  0x4E, 0x09, 0x49, 0x10, 0xCE, 0x58, 0xC5, 0xE3,  /* N.I..X.. */
                /* 0098 */  0x6B, 0x16, 0x4D, 0xCF, 0x49, 0xCE, 0x31, 0xE4,  /* k.M.I.1. */
                /* 00A0 */  0x78, 0x5C, 0xE8, 0x41, 0x70, 0x69, 0x2B, 0x26,  /* x\.Api+& */
                /* 00A8 */  0x04, 0xA5, 0x0F, 0x59, 0x62, 0x60, 0x50, 0x1A,  /* ...Yb`P. */
                /* 00B0 */  0xC6, 0x42, 0x5D, 0x8C, 0x1A, 0x35, 0x52, 0x36,  /* .B]..5R6 */
                /* 00B8 */  0x20, 0x43, 0x94, 0x04, 0x87, 0x1A, 0xB5, 0x25,  /*  C.....% */
                /* 00C0 */  0x0A, 0x30, 0x3F, 0x0E, 0xCD, 0xAE, 0xED, 0xB1,  /* .0?..... */
                /* 00C8 */  0x10, 0x48, 0x26, 0x6D, 0x28, 0x28, 0x29, 0x10,  /* .H&m((). */
                /* 00D0 */  0x1A, 0xDB, 0x99, 0x7A, 0x46, 0x11, 0x8F, 0xD4,  /* ...zF... */
                /* 00D8 */  0x30, 0x09, 0x3C, 0x0A, 0x86, 0xC6, 0x09, 0x8A,  /* 0.<..... */
                /* 00E0 */  0x1D, 0x3D, 0x7A, 0x18, 0x51, 0x0F, 0xF0, 0x24,  /* .=z.Q..$ */
                /* 00E8 */  0x4E, 0xD1, 0xC2, 0xC7, 0x27, 0x8C, 0xA0, 0x87,  /* N...'... */
                /* 00F0 */  0x92, 0xE0, 0x64, 0xCF, 0xFB, 0x5C, 0xA2, 0x45,  /* ..d..\.E */
                /* 00F8 */  0x28, 0x08, 0x49, 0x83, 0x8F, 0x71, 0x04, 0x6D,  /* (.I..q.m */
                /* 0100 */  0x0D, 0x58, 0x13, 0x35, 0x54, 0xA4, 0xC0, 0x91,  /* .X.5T... */
                /* 0108 */  0xCE, 0x24, 0x62, 0xE4, 0x10, 0x09, 0x8C, 0x9B,  /* .$b..... */
                /* 0110 */  0xE0, 0xFF, 0x7F, 0x18, 0x5C, 0x06, 0x84, 0x3C,  /* ....\..< */
                /* 0118 */  0x8E, 0x5F, 0xC3, 0x39, 0x8F, 0x04, 0x76, 0x2F,  /* ._.9..v/ */
                /* 0120 */  0xC0, 0x9A, 0x00, 0x73, 0x02, 0xB4, 0x0D, 0x4E,  /* ...s...N */
                /* 0128 */  0xCE, 0x04, 0x28, 0x13, 0x20, 0x4C, 0x80, 0xC6,  /* ..(. L.. */
                /* 0130 */  0x29, 0xE8, 0x0E, 0xD0, 0x18, 0x9E, 0xBC, 0xA1,  /* )....... */
                /* 0138 */  0x08, 0x2B, 0x52, 0x88, 0x0A, 0xA1, 0x28, 0x62,  /* .+R...(b */
                /* 0140 */  0x88, 0x28, 0x21, 0xDE, 0x01, 0x42, 0x1F, 0x51,  /* .(!..B.Q */
                /* 0148 */  0xD4, 0x20, 0xE1, 0xA2, 0x07, 0x09, 0x17, 0x24,  /* . .....$ */
                /* 0150 */  0x6E, 0xFB, 0xA7, 0x00, 0x76, 0x78, 0x40, 0x8F,  /* n...vx@. */
                /* 0158 */  0xE7, 0xA0, 0x4E, 0xF0, 0x90, 0x82, 0x9C, 0x57,  /* ..N....W */
                /* 0160 */  0x02, 0x4F, 0xF6, 0xD0, 0x1E, 0x15, 0xCE, 0xE2,  /* .O...... */
                /* 0168 */  0xC5, 0xE0, 0x38, 0x3C, 0x9D, 0x04, 0x8E, 0xA4,  /* ..8<.... */
                /* 0170 */  0x00, 0xA2, 0x05, 0x10, 0xC3, 0xA3, 0x8E, 0x0A,  /* ........ */
                /* 0178 */  0x3E, 0x11, 0x78, 0x68, 0x47, 0xE9, 0x29, 0x1A,  /* >.xhG.). */
                /* 0180 */  0xE4, 0x10, 0x8E, 0xE0, 0x01, 0xE2, 0x51, 0xC0,  /* ......Q. */
                /* 0188 */  0x63, 0x60, 0x77, 0x04, 0x9F, 0x2C, 0x7C, 0x36,  /* c`w..,|6 */
                /* 0190 */  0xC0, 0xBB, 0x06, 0xD4, 0xA5, 0xE0, 0x91, 0x80,  /* ........ */
                /* 0198 */  0x4D, 0x39, 0x1C, 0x66, 0xBC, 0x3E, 0x3C, 0x84,  /* M9.f.><. */
                /* 01A0 */  0x3B, 0x81, 0xF3, 0x3E, 0x12, 0x06, 0x71, 0x44,  /* ;..>..qD */
                /* 01A8 */  0x07, 0x87, 0x1D, 0xE6, 0xC9, 0x1C, 0xD9, 0xDB,  /* ........ */
                /* 01B0 */  0x44, 0xB3, 0xF7, 0x08, 0x42, 0x70, 0x3C, 0xBE,  /* D...Bp<. */
                /* 01B8 */  0x42, 0x30, 0xCF, 0x90, 0x44, 0xFE, 0x20, 0x50,  /* B0..D. P */
                /* 01C0 */  0x23, 0x33, 0xB4, 0x07, 0x7C, 0x5A, 0xEF, 0x05,  /* #3..|Z.. */
                /* 01C8 */  0x3E, 0x49, 0x98, 0xC0, 0x47, 0x04, 0x6F, 0x52,  /* >I..G.oR */
                /* 01D0 */  0xE3, 0x01, 0x02, 0x8A, 0x8F, 0x1D, 0x64, 0xFA,  /* ......d. */
                /* 01D8 */  0x9E, 0xAF, 0x09, 0x86, 0x1F, 0x38, 0x1A, 0xDA,  /* .....8.. */
                /* 01E0 */  0xF7, 0x07, 0xA6, 0x1A, 0x52, 0x23, 0x32, 0xC1,  /* ....R#2. */
                /* 01E8 */  0xA8, 0xE7, 0x14, 0x2A, 0x6A, 0xDC, 0xF4, 0x40,  /* ...*j..@ */
                /* 01F0 */  0xC1, 0xFF, 0xFF, 0x67, 0x89, 0xF7, 0x0A, 0xDF,  /* ...g.... */
                /* 01F8 */  0x12, 0xDE, 0x1A, 0xD8, 0x50, 0xCE, 0xC8, 0xFF,  /* ....P... */
                /* 0200 */  0x15, 0x8F, 0x0C, 0xFE, 0x81, 0x04, 0x77, 0xAA,  /* ......w. */
                /* 0208 */  0x80, 0x0B, 0x6E, 0xB0, 0xD7, 0x0C, 0xCF, 0xD8,  /* ..n..... */
                /* 0210 */  0x03, 0x78, 0xAA, 0xF0, 0xB4, 0x70, 0x40, 0x2F,  /* .x...p@/ */
                /* 0218 */  0x1E, 0x6C, 0xE2, 0x3E, 0x0D, 0x80, 0x4F, 0xDE,  /* .l.>..O. */
                /* 0220 */  0x89, 0x06, 0x14, 0xE8, 0x0F, 0x1C, 0xB8, 0xA1,  /* ........ */
                /* 0228 */  0xF2, 0x23, 0x0D, 0x30, 0x19, 0x01, 0x8F, 0xF7,  /* .#.0.... */
                /* 0230 */  0xB4, 0x30, 0x81, 0xC4, 0xAF, 0x5F, 0xA2, 0x1E,  /* .0..._.. */
                /* 0238 */  0x02, 0x14, 0xC6, 0xA7, 0x17, 0xE0, 0x3D, 0xB6,  /* ......=. */
                /* 0240 */  0x07, 0x03, 0xB0, 0xFC, 0xFF, 0x4F, 0x2F, 0xE0,  /* .....O/. */
                /* 0248 */  0xB8, 0x17, 0x18, 0xB9, 0x68, 0x1C, 0x1D, 0x18,  /* ....h... */
                /* 0250 */  0xD8, 0xF1, 0x05, 0xF6, 0xAD, 0xE5, 0xE8, 0xDF,  /* ........ */
                /* 0258 */  0x5A, 0x7C, 0x71, 0xF1, 0x7D, 0x25, 0xCC, 0x39,  /* Z|q.}%.9 */
                /* 0260 */  0xC4, 0xF0, 0xE1, 0xE9, 0xA5, 0xE5, 0xF1, 0xC5,  /* ........ */
                /* 0268 */  0xD7, 0x94, 0x30, 0x47, 0xF3, 0xF8, 0x62, 0xA0,  /* ..0G..b. */
                /* 0270 */  0x50, 0x2F, 0x30, 0xC6, 0x88, 0x1A, 0x24, 0x4E,  /* P/0...$N */
                /* 0278 */  0xB0, 0xA0, 0x0F, 0x30, 0x41, 0x62, 0x44, 0x0A,  /* ...0AbD. */
                /* 0280 */  0x12, 0xE7, 0xF1, 0x05, 0xCC, 0xC1, 0x8E, 0x03,  /* ........ */
                /* 0288 */  0x3A, 0x6B, 0xF8, 0xF8, 0x02, 0xF0, 0x43, 0x20,  /* :k....C  */
                /* 0290 */  0x84, 0xFE, 0xFF, 0x07, 0x10, 0xB0, 0xCD, 0xE1,  /* ........ */
                /* 0298 */  0x95, 0x01, 0x77, 0x02, 0x01, 0x1E, 0x01, 0xD6,  /* ..w..... */
                /* 02A0 */  0xA9, 0xD3, 0x8C, 0xC5, 0x83, 0xC8, 0xC6, 0x4A,  /* .......J */
                /* 02A8 */  0x3D, 0x28, 0x2A, 0x96, 0x4A, 0xE7, 0x88, 0x93,  /* =(*.J... */
                /* 02B0 */  0xF1, 0xF1, 0x04, 0x05, 0xA5, 0xB3, 0x1D, 0x97,  /* ........ */
                /* 02B8 */  0x47, 0x21, 0x71, 0x10, 0x1A, 0x8E, 0x8F, 0x6C,  /* G!q....l */
                /* 02C0 */  0x04, 0x8E, 0x82, 0x78, 0xF0, 0x3E, 0xED, 0xD8,  /* ...x.>.. */
                /* 02C8 */  0xC9, 0x39, 0x00, 0x35, 0x7A, 0xCF, 0xE6, 0x18,  /* .9.5z... */
                /* 02D0 */  0x30, 0xD1, 0x4E, 0x3D, 0xF4, 0xB0, 0x80, 0x1F,  /* 0.N=.... */
                /* 02D8 */  0x5A, 0xCC, 0xD3, 0xF2, 0x2C, 0x7C, 0xCB, 0xF0,  /* Z...,|.. */
                /* 02E0 */  0x11, 0x04, 0x1C, 0x3E, 0xA1, 0x09, 0x52, 0x0C,  /* ...>..R. */
                /* 02E8 */  0x6F, 0x30, 0xC6, 0x8B, 0x82, 0x51, 0x9E, 0xBF,  /* o0...Q.. */
                /* 02F0 */  0x3C, 0x10, 0x76, 0x1A, 0xE2, 0x63, 0xF0, 0xD9,  /* <.v..c.. */
                /* 02F8 */  0x83, 0x13, 0xF8, 0x74, 0x00, 0x7F, 0x0A, 0xD8,  /* ...t.... */
                /* 0300 */  0xD3, 0x01, 0x58, 0x80, 0x7C, 0x1D, 0xF0, 0xC1,  /* ..X.|... */
                /* 0308 */  0xE1, 0x91, 0x80, 0xCD, 0xE1, 0xA1, 0xCF, 0x47,  /* .......G */
                /* 0310 */  0x3E, 0x76, 0x3C, 0x41, 0x8C, 0x5C, 0x9F, 0x1B,  /* >v<A.\.. */
                /* 0318 */  0xFF, 0xFF, 0x65, 0x8D, 0x0B, 0x35, 0x50, 0x1F,  /* ..e..5P. */
                /* 0320 */  0x9A, 0xD8, 0x51, 0x01, 0x77, 0x6A, 0xC2, 0xC0,  /* ..Q.wj.. */
                /* 0328 */  0x7A, 0xE8, 0x1C, 0xD6, 0x68, 0x61, 0x4F, 0xF6,  /* z...haO. */
                /* 0330 */  0x21, 0xC2, 0x17, 0x10, 0xCF, 0xCC, 0x17, 0x25,  /* !......% */
                /* 0338 */  0x1F, 0x3D, 0xC0, 0x02, 0x88, 0x1F, 0xCE, 0x4B,  /* .=.....K */
                /* 0340 */  0x80, 0x27, 0x60, 0x40, 0x76, 0x92, 0xC1, 0x1D,  /* .'`@v... */
                /* 0348 */  0xA4, 0xC0, 0x76, 0xB7, 0xC1, 0xE1, 0xBC, 0x4A,  /* ..v....J */
                /* 0350 */  0x3C, 0xE1, 0xB0, 0xBB, 0x48, 0x2C, 0x83, 0x3C,  /* <...H,.< */
                /* 0358 */  0x62, 0x18, 0x91, 0xDF, 0x48, 0xB8, 0xF4, 0x93,  /* b...H... */
                /* 0360 */  0x22, 0x4A, 0xEC, 0x61, 0x11, 0xD0, 0x09, 0xF3,  /* "J.a.... */
                /* 0368 */  0xA2, 0x89, 0x39, 0x1E, 0xC1, 0xF9, 0xFF, 0x1F,  /* ..9..... */
                /* 0370 */  0x8F, 0x30, 0x87, 0xC3, 0x57, 0x44, 0x8F, 0xE2,  /* .0..WD.. */
                /* 0378 */  0x81, 0x28, 0xC8, 0x03, 0xA2, 0xA7, 0x10, 0xE6,  /* .(...... */
                /* 0380 */  0x1D, 0xD1, 0x50, 0x8F, 0x47, 0x06, 0x7A, 0xA0,  /* ..P.G.z. */
                /* 0388 */  0x88, 0xFA, 0x78, 0xE4, 0xB3, 0x51, 0x84, 0x47,  /* ..x..Q.G */
                /* 0390 */  0xA1, 0x87, 0x45, 0xDF, 0x8C, 0xDE, 0x2F, 0x62,  /* ..E.../b */
                /* 0398 */  0x05, 0x7C, 0x44, 0xF2, 0x45, 0x22, 0x4C, 0x94,  /* .|D.E"L. */
                /* 03A0 */  0x20, 0xA1, 0x1E, 0x8F, 0xC0, 0x1C, 0xF9, 0x75,  /*  ......u */
                /* 03A8 */  0xA2, 0xD3, 0x80, 0x8F, 0x47, 0xC0, 0xC3, 0xE5,  /* ....G... */
                /* 03B0 */  0xF1, 0x08, 0xD0, 0x1A, 0xFC, 0x98, 0x03, 0x09,  /* ........ */
                /* 03B8 */  0xF8, 0x58, 0xDF, 0x1B, 0x4E, 0xC7, 0x41, 0xCF,  /* .X..N.A. */
                /* 03C0 */  0x8A, 0xA0, 0xFA, 0xFF, 0x9F, 0x15, 0xC1, 0x31,  /* .......1 */
                /* 03C8 */  0xA3, 0x87, 0x0A, 0xB0, 0xDC, 0x27, 0xE0, 0xC2,  /* .....'.. */
                /* 03D0 */  0x84, 0x38, 0x30, 0x7E, 0xDA, 0x01, 0x4E, 0x47,  /* .80~..NG */
                /* 03D8 */  0x2B, 0xEC, 0x69, 0x1A, 0x58, 0x9D, 0x99, 0x70,  /* +.i.X..p */
                /* 03E0 */  0xA7, 0x69, 0x70, 0x1C, 0xB8, 0xE1, 0x0C, 0x80,  /* .ip..... */
                /* 03E8 */  0x2B, 0xB4, 0xE9, 0x53, 0xA3, 0x51, 0xAB, 0x06,  /* +..S.Q.. */
                /* 03F0 */  0x65, 0x6A, 0x94, 0x69, 0x50, 0xAB, 0x4F, 0xA5,  /* ej.iP.O. */
                /* 03F8 */  0xC6, 0x8C, 0xA9, 0x18, 0x97, 0xDF, 0x06, 0x3A,  /* .......: */
                /* 0400 */  0x1C, 0x38, 0x0A, 0x08, 0x8D, 0xF1, 0x42, 0x10,  /* .8....B. */
                /* 0408 */  0x88, 0x85, 0x7A, 0x00, 0x61, 0x31, 0x41, 0xA8,  /* ..z.a1A. */
                /* 0410 */  0x64, 0x13, 0x10, 0x8D, 0x1C, 0xBF, 0x0C, 0x22,  /* d......" */
                /* 0418 */  0x20, 0x8B, 0xB0, 0x01, 0xC2, 0x22, 0x80, 0x50,  /*  ....".P */
                /* 0420 */  0xE9, 0x3A, 0x40, 0xD8, 0xFF, 0x1F               /* .:@... */
            })
        }
    }

    OperationRegion (MNVS, SystemMemory, 0xB99C1018, 0x1000)
    Field (MNVS, DWordAcc, NoLock, Preserve)
    {
        Offset (0xD00), 
        GAPA,   32, 
        GAPL,   32, 
        DCKI,   32, 
        DCKS,   32, 
        VCDL,   1, 
        VCDC,   1, 
        VCDT,   1, 
        VCDD,   1, 
            ,   1, 
        VCSS,   1, 
        VCDB,   1, 
        VCIN,   1, 
        VVPO,   8, 
        Offset (0xD13), 
        BRLV,   8, 
        CDFL,   8, 
        CDAH,   8, 
        PMOD,   2, 
        PDIR,   1, 
        PDMA,   1, 
        Offset (0xD17), 
        LFDC,   1, 
        Offset (0xD18), 
        C2NA,   1, 
        C3NA,   1, 
        C4NA,   1, 
        C6NA,   1, 
        C7NA,   1, 
        Offset (0xD19), 
        Offset (0xD1A), 
            ,   2, 
            ,   1, 
        NHPS,   1, 
        NPME,   1, 
        Offset (0xD1B), 
        UOPT,   8, 
        BTID,   32, 
        DPP0,   1, 
        DPP1,   1, 
        DPP2,   1, 
        DPP3,   1, 
        DPP4,   1, 
        DPP5,   1, 
        Offset (0xD21), 
        Offset (0xD22), 
        TCRT,   16, 
        TPSV,   16, 
        TTC1,   16, 
        TTC2,   16, 
        TTSP,   16, 
        SRAH,   8, 
        SRHE,   8, 
        SRE1,   8, 
        SRE2,   8, 
        SRE3,   8, 
        SRE4,   8, 
        SRE5,   8, 
        SRE6,   8, 
        SRU1,   8, 
        SRU2,   8, 
        SRU3,   8, 
        SRU7,   8, 
        SRU4,   8, 
        SRU5,   8, 
        SRU8,   8, 
        SRPB,   8, 
        SRLP,   8, 
        SRSA,   8, 
        SRSM,   8, 
        CWAC,   1, 
        CWAS,   1, 
        CWUE,   1, 
        CWUS,   1, 
        Offset (0xD40), 
        CWAP,   16, 
        CWAT,   16, 
        DBGC,   1, 
        Offset (0xD45), 
        FS1L,   16, 
        FS1M,   16, 
        FS1H,   16, 
        FS2L,   16, 
        FS2M,   16, 
        FS2H,   16, 
        FS3L,   16, 
        FS3M,   16, 
        FS3H,   16, 
        TATC,   1, 
            ,   6, 
        TATL,   1, 
        TATW,   8, 
        TNFT,   4, 
        TNTT,   4, 
        TDFA,   4, 
        TDTA,   4, 
        TDFD,   4, 
        TDTD,   4, 
        TCFA,   4, 
        TCTA,   4, 
        TCFD,   4, 
        TCTD,   4, 
        TSFT,   4, 
        TSTT,   4, 
        TIT0,   8, 
        TCR0,   16, 
        TPS0,   16, 
        TIT1,   8, 
        TCR1,   16, 
        TPS1,   16, 
        TIT2,   8, 
        TCR2,   16, 
        TPS2,   16, 
        TIF0,   8, 
        TIF1,   8, 
        TIF2,   8, 
        Offset (0xD78), 
        BTHI,   1, 
        Offset (0xD79), 
        HDIR,   1, 
        HDEH,   1, 
        HDSP,   1, 
        HDPP,   1, 
        HDUB,   1, 
        HDMC,   1, 
        NFCF,   1, 
        Offset (0xD7A), 
        Offset (0xD7B), 
        BIDE,   4, 
        IDET,   4, 
            ,   1, 
            ,   1, 
        Offset (0xD7D), 
        DTS0,   8, 
        Offset (0xD7F), 
        DT00,   1, 
        DT01,   1, 
        DT02,   1, 
        DT03,   1, 
        Offset (0xD80), 
        LIDB,   1, 
        C4WR,   1, 
        C4AC,   1, 
        ODDX,   1, 
        CMPR,   1, 
        ILNF,   1, 
        PLUX,   1, 
        Offset (0xD81), 
        Offset (0xD8C), 
            ,   4, 
            ,   1, 
            ,   1, 
        Offset (0xD8D), 
            ,   3, 
            ,   1, 
            ,   1, 
            ,   1, 
        Offset (0xD8E), 
        Offset (0xD8F), 
            ,   4, 
        Offset (0xD90), 
        Offset (0xD91), 
        SWGP,   8, 
        IPMS,   8, 
        IPMB,   120, 
        IPMR,   24, 
        IPMO,   24, 
        IPMA,   8, 
        VIGD,   1, 
        VDSC,   1, 
            ,   2, 
        VDSP,   1, 
        Offset (0xDAA), 
        Offset (0xDAD), 
        ASFT,   8, 
        PL1L,   8, 
        PL1M,   8, 
        CHKC,   32, 
        CHKE,   32, 
        ATRB,   32, 
        Offset (0xDBD), 
        PPCR,   8, 
        TPCR,   5, 
        Offset (0xDBF), 
        Offset (0xDCE), 
        CTDP,   8, 
        PPCA,   8, 
        TPCA,   5, 
        Offset (0xDD1), 
        BFWB,   296, 
        OSPX,   1, 
        OSC4,   1, 
        Offset (0xDF7), 
        SPEN,   1, 
        SCRM,   1, 
        GFPL,   1, 
        ETAU,   1, 
        IHBC,   1, 
        APMD,   1, 
        APMF,   1, 
        Offset (0xDF8), 
        FTPS,   8, 
        HIST,   8, 
        Offset (0xDFB), 
        LWST,   8, 
        Offset (0xDFF), 
        MTAU,   8, 
        Offset (0xE20), 
        HPET,   32, 
        PKLI,   16, 
        VLCX,   16, 
        VNIT,   8, 
        VBD0,   8, 
        VBDT,   128, 
        VBPL,   16, 
        VBPH,   16, 
        VBML,   8, 
        VBMH,   8, 
        VEDI,   1024, 
        PDCI,   16, 
        ISCG,   32, 
        ISSP,   1, 
        ISWK,   2, 
        Offset (0xEC7), 
        SHA1,   160, 
        FFDT,   1, 
        Offset (0xEDC), 
        LWCP,   1, 
        LWEN,   1, 
        IOCP,   1, 
        IOEN,   1, 
        IOST,   1, 
        Offset (0xEDD), 
        USBR,   1, 
        Offset (0xEDE), 
        Offset (0xEDF), 
        Offset (0xEE1), 
        BT2T,   1, 
        Offset (0xEE2), 
        TPPP,   8, 
        TPPC,   8, 
        WKRS,   8, 
        FNWK,   8, 
        USBC,   8, 
        CMST,   8, 
        WSTA,   8, 
        LDWK,   8
    }

    Field (MNVS, ByteAcc, NoLock, Preserve)
    {
        Offset (0xB00), 
        WITM,   8, 
        WSEL,   8, 
        WLS0,   8, 
        WLS1,   8, 
        WLS2,   8, 
        WLS3,   8, 
        WLS4,   8, 
        WLS5,   8, 
        WLS6,   8, 
        WLS7,   8, 
        WLS8,   8, 
        WLS9,   8, 
        WLSA,   8, 
        WLSB,   8, 
        WLSC,   8, 
        WLSD,   8, 
        WENC,   8, 
        WKBD,   8, 
        WPTY,   8, 
        WPAS,   1032, 
        WPNW,   1032, 
        WSPM,   8, 
        WSPS,   8, 
        WSMN,   8, 
        WSMX,   8, 
        WSEN,   8, 
        WSKB,   8, 
        WASB,   8, 
        WASI,   16, 
        WASD,   8, 
        WASS,   32
    }

    Field (MNVS, ByteAcc, NoLock, Preserve)
    {
        Offset (0xA00), 
        DBGL,   1024
    }

    OperationRegion (SMI0, SystemIO, 0xB2, One)
    Field (SMI0, ByteAcc, NoLock, Preserve)
    {
        APMC,   8
    }

    Field (MNVS, AnyAcc, NoLock, Preserve)
    {
        Offset (0xFC0), 
        CMD,    8, 
        ERR,    32, 
        PAR0,   32, 
        PAR1,   32, 
        PAR2,   32, 
        PAR3,   32
    }

    Mutex (MSMI, 0x07)
    Method (SMI, 5, NotSerialized)
    {
        Acquire (MSMI, 0xFFFF)
        CMD = Arg0
        ERR = One
        PAR0 = Arg1
        PAR1 = Arg2
        PAR2 = Arg3
        PAR3 = Arg4
        APMC = 0xF5
        While ((ERR == One))
        {
            Sleep (One)
            APMC = 0xF5
        }

        Local0 = PAR0 /* \PAR0 */
        Release (MSMI)
        Return (Local0)
    }

    Method (UCMS, 2, NotSerialized)
    {
        Return (SMI (0x02, Arg0, Arg1, Zero, Zero))
    }

    Method (WMIS, 2, NotSerialized)
    {
        Return (SMI (0x10, Arg0, Arg1, Zero, Zero))
    }

    Name (_S0, Package (0x04)  // _S0_: S0 System State
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S4, Package (0x04)  // _S4_: S4 System State
    {
        0x06, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S5, Package (0x04)  // _S5_: S5 System State
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
}


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
  2016-10-04  8:38   ` Marcel Holtmann
@ 2016-10-05 21:18     ` Jérôme de Bretagne
  0 siblings, 0 replies; 6+ messages in thread
From: Jérôme de Bretagne @ 2016-10-05 21:18 UTC (permalink / raw)
  To: Marcel Holtmann, Loic Poulain; +Cc: Frederic Danis, linux-bluetooth

[-- Attachment #1: Type: text/plain, Size: 1555 bytes --]

Hi Marcel,

> > Using out-of-band gpio/irq which are retrieved from the ACPI device.
> > wakeup can be initiated by host or controller depending which one wants
> > to transfer hci data.
> 
> I am actually curious if HCI remote wakeup might not work. So the HID
> mouse (I assume Classic here) will initiate a HCI Create Connection which
> will result in a HCI Connection Request. So that wakeup event needs to be
> allowed. I am curious if we might not set that correctly.

That's correct, my HID mouse is using standard Bluetooth BR/EDR, not LE. 


> I would need to see the btmon trace from the controller initialization
> (start btmon before calling btattach). I am no longer sure that this has
> been tested with UART based controllers. On USB the remote wakeup works.

Here you go, I'm attaching traces taken with btmon:

1/ btmon.thinkpad8-init: the one you've asked, showing the controller init


and 2 other ones, just in case:

2/ btmon.thinkpad8-connecting: showing the mouse connecting right after the init 1/ so still properly detected at that time and doing some cursor moves

3/ btmon.thinkpad8-not-connecting: traces taken if the mouse is not switched on during the controller initialization, but only a bit later (roughly 30s or 1min). Switching on the mouse then shows simply no trace at all.


> If the events for connection creation and remote wakeup set correctly,
> then it is some GPIO or Broadcom vendor specific thing.

>From the attached traces 1/, do the events seem to be set up correctly
according to you?

Regards,
Jérôme

[-- Attachment #2: btmon.thinkpad8-init.btsnoop --]
[-- Type: application/octet-stream, Size: 53920 bytes --]

[-- Attachment #3: btmon.thinkpad8-connecting.btsnoop --]
[-- Type: application/octet-stream, Size: 4858 bytes --]

[-- Attachment #4: btmon.thinkpad8-not-connecting.btsnoop --]
[-- Type: application/octet-stream, Size: 342 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions)
  2016-10-05 21:16   ` Jérôme de Bretagne
@ 2016-10-06  7:03     ` Jérôme de Bretagne
  0 siblings, 0 replies; 6+ messages in thread
From: Jérôme de Bretagne @ 2016-10-06  7:03 UTC (permalink / raw)
  To: Loic Poulain, Marcel Holtmann, linux-bluetooth; +Cc: Frederic Danis

Hi Loic,

> > I remember Frederic had some gpio/irq polarity issues:>
> > 5cebdfea32b89911d4540440c1c2854a1a3d591e
> > Bluetooth: hci_bcm: Fix IRQ polarity for T100
> > Maybe the ACPI table is not correct on some devices.
> 
> 
> I had seen that patch indeed. I'm attaching the ACPI table I had shared on
> the list a long time ago for the ThinkPad Tablet 8. Is there anything that
> looks suspicious in there and that you could link to a similar gpio/irq
> polarity issue maybe?
> 
> If you think there is a good chance that this could be the issue as well,
> I
> will try to build a similar patch for this ThinkPad product and share my
> results.

Just to let you know, after finding the right DMI values to simply adapt the
above patch for my ThinkPad tablet, I can confirm that a quick local kernel
modification indeed fixes the issue.

I will need a bit more time to propose a proper patch, adding this other
impacted tablet instead of replacing the above Asus one, and supporting
potentially even more products facing the same polarity issue.

Is hard-coding such exceptions / polarity issues manually the only way to go
or could there be a way to detect this programmatically instead?

Regards,
Jérôme

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-10-06  7:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-03 22:22 Bluetooth not working anymore due to too agressive PM in hci_bcm ? (was: [PATCH v5 5/5] Bluetooth: hci_bcm: Add suspend/resume runtime PM functions) Jérôme de Bretagne
2016-10-04  7:46 ` Loic Poulain
2016-10-04  8:38   ` Marcel Holtmann
2016-10-05 21:18     ` Jérôme de Bretagne
2016-10-05 21:16   ` Jérôme de Bretagne
2016-10-06  7:03     ` Jérôme de Bretagne

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).