public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
  2005-11-17  4:18     ` keith
@ 2005-11-17  6:08       ` KAMEZAWA Hiroyuki
       [not found]         ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: KAMEZAWA Hiroyuki @ 2005-11-17  6:08 UTC (permalink / raw)
  To: keith
  Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w,
	naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

keith wrote:
 >
 > My add event is called with my patch.  The notify event is triggering
 > and falling into the right path.
 >
 > I tried your patch but my device is not making and add event.  I really
 > looks to just be a notify with the memory range attached.  I really
 > think my patch is the right way to go for my hardware.
 >
 >
Could you show your AML tree around Memory ?
I'm interested in.

  	if (!(*mem_device)) {
-		printk(KERN_ERR "\n driver data not found");
-		return_VALUE(-ENODEV);
+		/* Try and get the memory_device from the current handle */
+		result = acpi_memory_get_current_resource(handle,mem_device);
+		if (result) {
+			printk(KERN_ERR "\nThere is no data for this memory device\n");
+			return_VALUE(-EINVAL);
+		}
  	}
I'm not sure why this is *right* way.

This is traditinal way to attach driver data to device.
==
acpi_bus_add() ->
	acpi_add_single_object() ->  ----------------(*) acpi_device is create here.
		acpi_bus_find_driver()->
			acpi_bus_driver_init()->
				driver->ops.add()
==

Maybe driver->ops.add is not called for some reason.
What happens in acpi_add_single_object() in your environment ?
acpi_bus_find_driver() is called ?

-- Kame




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

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

* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
       [not found]         ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
@ 2005-11-18  2:22           ` keith
  2005-11-18  2:56             ` KAMEZAWA Hiroyuki
  0 siblings, 1 reply; 9+ messages in thread
From: keith @ 2005-11-18  2:22 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki
  Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w,
	naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

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

On Thu, 2005-11-17 at 15:08 +0900, KAMEZAWA Hiroyuki wrote:
> keith wrote:
>  >
>  > My add event is called with my patch.  The notify event is triggering
>  > and falling into the right path.
>  >
>  > I tried your patch but my device is not making and add event.  I really
>  > looks to just be a notify with the memory range attached.  I really
>  > think my patch is the right way to go for my hardware.
>  >
>  >
> Could you show your AML tree around Memory ?

See attached SSDT. 

> I'm interested in.
> 
>   	if (!(*mem_device)) {
> -		printk(KERN_ERR "\n driver data not found");
> -		return_VALUE(-ENODEV);
> +		/* Try and get the memory_device from the current handle */
> +		result = acpi_memory_get_current_resource(handle,mem_device);
> +		if (result) {
> +			printk(KERN_ERR "\nThere is no data for this memory device\n");
> +			return_VALUE(-EINVAL);
> +		}
>   	}
> I'm not sure why this is *right* way.

I am not sure either but the current code just dosen't work for my
event.  
  
> This is traditinal way to attach driver data to device.
> ==
> acpi_bus_add() ->
> 	acpi_add_single_object() ->  ----------------(*) acpi_device is create here.
> 		acpi_bus_find_driver()->
> 			acpi_bus_driver_init()->
> 				driver->ops.add()
The above is not working for my event.  

The current code is 

>>detect if the mem_device is already attached. This call fails for me and I goto end.
       if (!acpi_bus_get_device(handle, &device) && device)
                goto end;

>>If I skip the above by commentting out and just run (isn't the logic backwards anyway?) 

        status = acpi_get_parent(handle, &phandle);
        if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_get_parent\n"));
                return_VALUE(-EINVAL);
        }

        /* Get the parent device */
        status = acpi_bus_get_device(phandle, &pdevice);
        if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
                                  "Error in acpi_bus_get_device\n"));
                return_VALUE(-EINVAL);
        }

        /*
         * Now add the notified device.  This creates the acpi_device
         * and invokes .add function
         */
        status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE);
        if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n"));
                return_VALUE(-EINVAL);
        }

>> acpi_get_parent acpi_bug_get_device and acpi_bus_add all pass and do
>> not report any failures. But when I check for the mem_device it is 
>> not there.   

	*mem_device = acpi_driver_data(device);
        if (!(*mem_device)) {
                printk(KERN_ERR "\n driver data not found");
                return_VALUE(-ENODEV);
        }

 


>>I sill fall into the error and the call fails 
>>and I see "  driver data not foundacpi_memory-0305 [02]
>>memory_device_notify  : Error in finding driver data""

acpi_bus_add while retuning success is not correctly attaching a formed
memory_device to my generic acpi_device as the api would seem to
indicate.  Perhaps the generic code is broken?


> Maybe driver->ops.add is not called for some reason.
> What happens in () in your environment ?
> acpi_bus_find_driver() is called ?

Well I can tell you I never see the 

printk(KERN_INFO "%s \n", acpi_device_name(device));

from acpi_memory_device_add when I call acpi_bus_add.  I am really
trying not to dig around in the acpi generic code.....  I might have
time to have a look at the generic acpi code tomorrow.... 

Is this driver know to work on any hardware?   

Thanks for your feedback.

-- 
keith <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>

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

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20050902
 *
 * Disassembly of SSDT.aml, Thu Nov 17 18:14:58 2005
 */
DefinitionBlock ("SSDT.aml", "SSDT", 1, "IBM   ", "VIGSSDT0", 4096)
{
    /*
     * These objects were referenced but not defined in this table
     */
    External (VP00, DeviceObj)

    Scope (\)
    {
    }

    Scope (\_PR)
    {
        Processor (CP00, 0x00, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP01, 0x01, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP02, 0x02, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP03, 0x03, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP04, 0x04, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP05, 0x05, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP06, 0x06, 0x00000000, 0x00) {}
    }

    Scope (\_PR)
    {
        Processor (CP07, 0x07, 0x00000000, 0x00) {}
    }

    Scope (\)
    {
    }

    Scope (\_SB)
    {
        Device (ME00)
        {
            Name (_HID, EisaId ("PNP0C80"))
            Name (_CID, 0x010CD041)
            Name (_UID, 0x00)
            Name (BADH, 0x00000000)
            Name (BADL, 0x00100000)
            Name (EADH, 0x00000004)
            Name (EADL, 0x80000000)
            Name (MEID, 0x00000001)
            Name (VC00, 0xFDE86000)
            OperationRegion (CY00, SystemMemory, VC00, 0x8000)
            Field (CY00, DWordAcc, NoLock, Preserve)
            {
                Offset (0x150), 
                    ,   26, 
                PMIO,   6, 
                Offset (0x3600), 
                XTP0,   32, 
                XTP1,   32, 
                XTP2,   32, 
                XTP3,   32, 
                XTP4,   32, 
                XTP5,   32, 
                XTP6,   32, 
                XTP7,   32, 
                XTP8,   32, 
                XTP9,   32, 
                XTPA,   32, 
                XTPB,   32, 
                Offset (0x5040), 
                MSZ0,   9, 
                Offset (0x5050), 
                    ,   28, 
                BCRD,   1, 
                CSTE,   1, 
                Offset (0x5098), 
                Offset (0x509C), 
                MMP0,   1, 
                MMP1,   1, 
                MMP2,   1, 
                MMP3,   1, 
                Offset (0x5140), 
                MSZ1,   9, 
                Offset (0x5240), 
                MSZ2,   9, 
                Offset (0x5340), 
                MSZ3,   9
            }

            Name (INIC, 0x00)
            Method (_INI, 0, NotSerialized)
            {
                If (LNot (INIC))
                {
                    Increment (INIC)
                    If (LNot (LEqual (And (XTP0, 0xFF), 0x81)))
                    {
                        And (XTP0, 0xFFFFFFF0, XTP0)
                        And (XTP1, 0xFFFFFFF0, XTP1)
                        And (XTP2, 0xFFFFFFF0, XTP2)
                        And (XTP3, 0xFFFFFFF0, XTP3)
                        And (XTP4, 0xFFFFFFF0, XTP4)
                        And (XTP5, 0xFFFFFFF0, XTP5)
                        And (XTP6, 0xFFFFFFF0, XTP6)
                        And (XTP7, 0xFFFFFFF0, XTP7)
                        And (XTP8, 0xFFFFFFF0, XTP8)
                        And (XTP9, 0xFFFFFFF0, XTP9)
                        And (XTPA, 0xFFFFFFF0, XTPA)
                        And (XTPB, 0xFFFFFFF0, XTPB)
                    }
                }
            }

            Name (ME1S, 0x00)
            Method (_CRS, 0, NotSerialized)
            {
                Store (\_SB.ECRS, BADH)
                BADL
                EADH
                EADL
                PMIO
                Local0
                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (CondRefOf (_OSI, Local0))
                {
                    If (\_OSI ("Windows 2001"))
                    {
                        If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL)))
                        {
                            Or (MEID, \_SB.MEMI, \_SB.MEMI)
                            Return (0x00)
                        }
                        Else
                        {
                            And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
                            Return (0x0F)
                        }
                    }
                }

                Return (0x00)
            }

            Method (UPDT, 2, NotSerialized)
            {
                If (\_SB.N2GC)
                {
                    EADH
                    EADL
                    Arg0
                    Arg1
                    Store (Arg0, EADH)
                    Store (Arg1, EADL)
                    Store (0x0F, ME1S)
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (MINT, 0, NotSerialized)
            {
                Store (EADH, Local0)
                Store (EADL, Local1)
                Store (0x00, Local2)
                If (CSTE)
                {
                    If (BCRD)
                    {
                        If (LNot (LAnd (MMP0, MMP2)))
                        {
                            Add (MSZ0, MSZ2, Local2)
                        }
                    }
                    Else
                    {
                        If (LNot (LAnd (MMP1, MMP3)))
                        {
                            Add (MSZ1, MSZ3, Local2)
                        }
                    }

                    If (Local2)
                    {
                        Add (Local0, ShiftRight (Local2, 0x03), Local0)
                        Add (Local1, ShiftLeft (Local2, 0x1D, Local2), Local1)
                        If (LGreater (EADL, Local1))
                        {
                            Increment (Local0)
                        }

                        If (UPDT (Local0, Local1))
                        {
                            ^^ME01.RSET (Local0, Local1)
                            Notify (ME00, 0x01)
                        }
                    }
                }
            }
        }

        Device (ME01)
        {
            Name (_HID, EisaId ("PNP0C80"))
            Name (_CID, 0x010CD041)
            Name (_UID, 0x01)
            Name (BADH, 0x00000004)
            Name (BADL, 0x80000000)
            Name (EADH, 0x00000004)
            Name (EADL, 0x80000000)
            Name (MEID, 0x00000002)
            Name (ME1S, 0x00)
            Method (_CRS, 0, NotSerialized)
            {
                Store (\_SB.ECRS, BADH)
                BADL
                EADH
                EADL
                ^^ME00.PMIO
                Local0
                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)
            {
                If (CondRefOf (_OSI, Local0))
                {
                    If (\_OSI ("Windows 2001"))
                    {
                        If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL)))
                        {
                            Or (MEID, \_SB.MEMI, \_SB.MEMI)
                            Return (0x00)
                        }
                        Else
                        {
                            And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
                            Return (0x0F)
                        }
                    }
                }

                Return (0x00)
            }

            Method (RSET, 2, NotSerialized)
            {
                Store (Arg0, BADH)
                Store (Arg1, BADL)
                Store (Arg0, EADH)
                Store (Arg1, EADL)
            }

            Method (UPDT, 2, NotSerialized)
            {
                If (\_SB.N2GC)
                {
                    EADH
                    EADL
                    Arg0
                    Arg1
                    Store (Arg0, EADH)
                    Store (Arg1, EADL)
                    Store (0x0F, ME1S)
                    Return (0x01)
                }

                Return (0x00)
            }

            Method (MINT, 0, NotSerialized)
            {
                Store (EADH, Local0)
                Store (EADL, Local1)
                Store (0x00, Local2)
                If (^^ME00.CSTE)
                {
                    If (^^ME00.BCRD)
                    {
                        If (LNot (LAnd (^^ME00.MMP0, ^^ME00.MMP2)))
                        {
                            Add (^^ME00.MSZ0, ^^ME00.MSZ2, Local2)
                        }
                    }
                    Else
                    {
                        If (LNot (LAnd (^^ME00.MMP1, ^^ME00.MMP3)))
                        {
                            Add (^^ME00.MSZ1, ^^ME00.MSZ3, Local2)
                        }
                    }

                    If (Local2)
                    {
                        Add (Local0, ShiftRight (Local2, 0x03), Local0)
                        Add (Local1, ShiftLeft (Local2, 0x1D, Local2), Local1)
                        If (LGreater (EADL, Local1))
                        {
                            Increment (Local0)
                        }

                        If (UPDT (Local0, Local1))
                        {
                            Notify (ME01, 0x01)
                        }
                    }
                }
            }
        }
    }

    Scope (\_SB)
    {
        Name (VW00, 0xFDA00000)
        Name (VW01, 0xFDB00000)
        Name (VND0, 0x00)
        Name (PAD0, 0xDCFE)
        Scope (VP00)
        {
            Name (XHID, 0x030AD041)
            Name (UIDC, 0xFF)
            Method (XUID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x00, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (XBBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (XADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW00, 0x4000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW00, 0x8000), 0x1000)
            OperationRegion (CALR, SystemMemory, VW00, 0x1000)
            Field (CALR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x778), 
                CNMR,   32
            }

            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW00, 0x8000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    If (VND0)
                    {
                        Or (CNMR, 0x80000000, CNMR)
                    }

                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP01)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x01, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW00, 0x5000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW00, 0x9000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW00, 0x9000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP02)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x02, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW00, 0x6000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW00, 0xA000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW00, 0xA000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP03)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x03, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW00, 0x7000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW00, 0xB000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW00, 0xB000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP04)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x04, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW01, 0x4000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW01, 0x8000), 0x1000)
            OperationRegion (CALR, SystemMemory, VW01, 0x1000)
            Field (CALR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x778), 
                CNMR,   32
            }

            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW01, 0x8000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    If (VND0)
                    {
                        Or (CNMR, 0x80000000, CNMR)
                    }

                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP05)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x05, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW01, 0x5000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW01, 0x9000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW01, 0x9000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP06)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x06, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW01, 0x6000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW01, 0xA000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW01, 0xA000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }

        Device (VP07)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (UIDC, 0xFF)
            Method (_UID, 0, NotSerialized)
            {
                If (LEqual (UIDC, 0xFF))
                {
                    ShiftLeft (VND0, 0x04, UIDC)
                    Add (UIDC, 0x07, UIDC)
                }

                Return (UIDC)
            }

            Name (BBNC, 0xFF)
            Method (_BBN, 0, NotSerialized)
            {
                If (LEqual (BBNC, 0xFF))
                {
                    Store (BBN0, BBNC)
                }

                Return (BBNC)
            }

            Name (_ADR, 0x00)
            OperationRegion (DBGR, SystemMemory, Add (VW01, 0x7000), 0x1000)
            OperationRegion (PHBR, SystemMemory, Add (VW01, 0xB000), 0x1000)
            Field (DBGR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x10), 
                P0DS,   32, 
                Offset (0x20), 
                MLT0,   8, 
                BBN0,   8, 
                SBN0,   8, 
                Offset (0xF8), 
                P0SR,   32, 
                Offset (0x160), 
                P0MR,   32, 
                Offset (0x298), 
                C0MR,   32
            }

            Field (PHBR, DWordAcc, NoLock, Preserve)
            {
                Offset (0x110), 
                C0SR,   32, 
                Offset (0x160), 
                P0CF,   32, 
                Offset (0x170), 
                I0BA,   32, 
                Offset (0x190), 
                M0L1,   32, 
                Offset (0x1A0), 
                M0H1,   32, 
                Offset (0x1B0), 
                I0SZ,   32, 
                Offset (0x1C0), 
                M0S1,   32, 
                Offset (0x2B0), 
                M0L2,   32, 
                Offset (0x2C0), 
                M0H2,   32, 
                Offset (0x2E0), 
                M0S2,   32, 
                Offset (0x880), 
                M0MD,   32
            }

            Name (CRSR, Buffer (SizeOf (CRST)) {})
            Name (PCKG, Package (0x0B)
            {
                0xFF, 
                0xFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF, 
                0xFFFFFFFF
            })
            Name (INIC, 0x00)
            Method (_INI, 0, Serialized)
            {
                If (INIC) {}
                Else
                {
                    Increment (INIC)
                    Store (0x00, Local0)
                    Store (BBN0, Index (PCKG, 0x00))
                    Store (SBN0, Index (PCKG, 0x01))
                    Store (I0BA, Index (PCKG, 0x02))
                    Store (I0SZ, Index (PCKG, 0x03))
                    Store (M0L1, Index (PCKG, 0x04))
                    Store (M0S1, Index (PCKG, 0x05))
                    Store (P0CF, Index (PCKG, 0x06))
                    Store (M0L2, Index (PCKG, 0x07))
                    Store (M0S2, Index (PCKG, 0x08))
                    Store (Add (VW01, 0xB000), Index (PCKG, 0x09))
                    Store (Local0, Index (PCKG, 0x0A))
                    Store (ICRS, PCKG)
                    CRSR
                    INIH ()
                    Store (C0MR, ENGC)
                    Store (P0MR, ENGP)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                Return (CRSR)
            }

            Name (_HPP, Package (0x04)
            {
                0x10, 
                0x64, 
                0x01, 
                0x01
            })
            Name (ENGC, 0x00)
            Name (ENGP, 0x00)
            Name (DBGC, 0x00)
            Name (DBGP, 0x00)
            Name (DBGD, 0x00)
            Method (WRK0, 0, NotSerialized)
            {
            }

            Method (WRK1, 0, NotSerialized)
            {
            }
        }
    }

    Scope (\_SB.VP00)
    {
        Name (API0, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000010
            }, 

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

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

            Package (0x04)
            {
                0x0003FFFF, 
                0x02, 
                0x00, 
                0x00000014
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x60, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP01)
    {
        Name (API1, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000018
            }, 

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

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

            Package (0x04)
            {
                0x0002FFFF, 
                0x01, 
                0x00, 
                0x0000001D
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x61, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP02)
    {
        Name (API2, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000012
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x0000001E
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP03)
    {
        Name (API3, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000013
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x0000001F
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP04)
    {
        Name (API4, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000033
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x0000003F
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP05)
    {
        Name (API5, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000034
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x00000040
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP06)
    {
        Name (API6, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000035
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x00000041
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP07)
    {
        Name (API7, 0x00)
        Name (PICM, Package (0x01)
        {
            Package (0x04)
            {
                0xFFFF, 
                0x00, 
                0x00, 
                0x00
            }
        })
        Name (APIC, Package (0x04)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                0x00, 
                0x00, 
                0x00000036
            }, 

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

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

            Package (0x04)
            {
                0x0001FFFF, 
                0x03, 
                0x00, 
                0x00000042
            }
        })
        Method (_PRT, 0, NotSerialized)
        {
            Store (0x62, IOPT)
            If (LNot (PICF))
            {
                Return (PICM)
            }
            Else
            {
                Return (APIC)
            }
        }
    }

    Scope (\_SB.VP00)
    {
        Method (SUNC, 1, NotSerialized)
        {
            Multiply (VND0, 0x06, Local0)
            Add (Local0, Arg0, Local0)
            Return (Local0)
        }

        Method (ROWB, 1, NotSerialized)
        {
            Multiply (VND0, 0x08, Local0)
            Add (Arg0, 0x02, Local0)
            Return (Local0)
        }

        Method (ROWS, 1, NotSerialized)
        {
            Add (SUNC (Arg0), 0x40, Local0)
            Return (Local0)
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.ROWB (0x01), Local1)
            Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x00))
            Store (^_BBN, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x05))
            Store (\_SB.VP00.ROWS (0x01), Local2)
            Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Local2)), 0x00))
            Add (VND0, 0x71, Local3)
            Store (0x86, Index (DerefOf (Index (\_SB.APCI.APCI, Local3)), 0x00))
        }
    }

    Scope (\_SB.VP01)
    {
        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.ROWB (0x02), Local1)
            Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x00))
            Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x05))
            Store (\_SB.VP00.ROWS (0x02), Local2)
            Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Local2)), 0x00))
        }
    }

    Scope (\_SB.VP02)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S1F0.SHPX
            0xE0
            Store (0x03, ^S1F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S1F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S1F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S1F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S1F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S1F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S1F0.SHPP)
                            Store (^SHRL, ^S1F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S1F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S1F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S1F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S1F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S1F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S1F0.SHPP)
                            Store (^SHBL, ^S1F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S1F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S1F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S1F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S1F0.SHPS)
                    Store (Arg1, ^S1F0._SUN)
                    Store (^SHRI, ^S1F0.SHPP)
                    Store (^SHRL, ^S1F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S1F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S1F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S1F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S1F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S1F0.SHPS)
                    Store (Arg1, ^S1F0._SUN)
                    Store (^SHBI, ^S1F0.SHPP)
                    Store (^SHBL, ^S1F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S1F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S1F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S1F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S1F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Device (S1F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S1F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x01), Local0)
            Store (\_SB.VP00.ROWB (0x01), Local1)
            Store (\_SB.VP00.ROWS (0x01), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }

    Scope (\_SB.VP03)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S2F0.SHPX
            0xE0
            Store (0x03, ^S2F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S2F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S2F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S2F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S2F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S2F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S2F0.SHPP)
                            Store (^SHRL, ^S2F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S2F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S2F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S2F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S2F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S2F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S2F0.SHPP)
                            Store (^SHBL, ^S2F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S2F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S2F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S2F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S2F0.SHPS)
                    Store (Arg1, ^S2F0._SUN)
                    Store (^SHRI, ^S2F0.SHPP)
                    Store (^SHRL, ^S2F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S2F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S2F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S2F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S2F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S2F0.SHPS)
                    Store (Arg1, ^S2F0._SUN)
                    Store (^SHBI, ^S2F0.SHPP)
                    Store (^SHBL, ^S2F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S2F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S2F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S2F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S2F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Device (S2F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S2F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x02), Local0)
            Store (\_SB.VP00.ROWB (0x02), Local1)
            Store (\_SB.VP00.ROWS (0x02), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }

    Scope (\_SB.VP04)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S3F0.SHPX
            0xE0
            Store (0x03, ^S3F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S3F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S3F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S3F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S3F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S3F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S3F0.SHPP)
                            Store (^SHRL, ^S3F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S3F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S3F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S3F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S3F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S3F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S3F0.SHPP)
                            Store (^SHBL, ^S3F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S3F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S3F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S3F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S3F0.SHPS)
                    Store (Arg1, ^S3F0._SUN)
                    Store (^SHRI, ^S3F0.SHPP)
                    Store (^SHRL, ^S3F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S3F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S3F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S3F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S3F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S3F0.SHPS)
                    Store (Arg1, ^S3F0._SUN)
                    Store (^SHBI, ^S3F0.SHPP)
                    Store (^SHBL, ^S3F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S3F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S3F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S3F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S3F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Device (S3F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S3F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x03), Local0)
            Store (\_SB.VP00.ROWB (0x03), Local1)
            Store (\_SB.VP00.ROWS (0x03), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }

    Scope (\_SB.VP05)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S4F0.SHPX
            0xE0
            Store (0x03, ^S4F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S4F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S4F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S4F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S4F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S4F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S4F0.SHPP)
                            Store (^SHRL, ^S4F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S4F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S4F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S4F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S4F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S4F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S4F0.SHPP)
                            Store (^SHBL, ^S4F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S4F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S4F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S4F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S4F0.SHPS)
                    Store (Arg1, ^S4F0._SUN)
                    Store (^SHRI, ^S4F0.SHPP)
                    Store (^SHRL, ^S4F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S4F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S4F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S4F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S4F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S4F0.SHPS)
                    Store (Arg1, ^S4F0._SUN)
                    Store (^SHBI, ^S4F0.SHPP)
                    Store (^SHBL, ^S4F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S4F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S4F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S4F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S4F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Device (S4F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S4F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x04), Local0)
            Store (\_SB.VP00.ROWB (0x04), Local1)
            Store (\_SB.VP00.ROWS (0x04), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }

    Scope (\_SB.VP06)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S5F0.SHPX
            0xE0
            Store (0x03, ^S5F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S5F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S5F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S5F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S5F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S5F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S5F0.SHPP)
                            Store (^SHRL, ^S5F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S5F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S5F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S5F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S5F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S5F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S5F0.SHPP)
                            Store (^SHBL, ^S5F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S5F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S5F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S5F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S5F0.SHPS)
                    Store (Arg1, ^S5F0._SUN)
                    Store (^SHRI, ^S5F0.SHPP)
                    Store (^SHRL, ^S5F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S5F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S5F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S5F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S5F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S5F0.SHPS)
                    Store (Arg1, ^S5F0._SUN)
                    Store (^SHBI, ^S5F0.SHPP)
                    Store (^SHBL, ^S5F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S5F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S5F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S5F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S5F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Device (S5F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S5F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x05), Local0)
            Store (\_SB.VP00.ROWB (0x05), Local1)
            Store (\_SB.VP00.ROWS (0x05), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }

    Scope (\_SB.VP07)
    {
        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB00), 
            SHBZ,   16, 
            Offset (0xB2F), 
            SHBD,   3, 
            Offset (0xB31), 
            SHBF,   1, 
            SHBG,   3, 
            Offset (0xB32), 
            SHBY,   5, 
            Offset (0xB33), 
            SHBE,   8, 
            Offset (0xB37), 
            SHBH,   8, 
            Offset (0xB3F), 
            SHBS,   8, 
            SHBT,   8, 
            SHBN,   1, 
            SHBO,   1, 
            SHBP,   1, 
            SHBQ,   1, 
            SHBR,   1, 
            Offset (0xB42), 
            SHBJ,   1, 
            SHBK,   1, 
            SHBL,   2, 
            SHBM,   2, 
            Offset (0xB43), 
            SHBI,   2
        }

        Field (PHBR, ByteAcc, NoLock, WriteAsZeros)
        {
            Offset (0xB2C), 
            SHRD,   3, 
            Offset (0xB30), 
            SHRE,   8, 
            SHRY,   5, 
            Offset (0xB32), 
            SHRF,   1, 
            SHRG,   3, 
            Offset (0xB34), 
            SHRH,   32, 
            Offset (0xB3C), 
            SHRS,   8, 
            Offset (0xB40), 
            SHRI,   2, 
            Offset (0xB41), 
            SHRJ,   1, 
            SHRK,   1, 
            SHRL,   2, 
            SHRM,   2, 
            Offset (0xB42), 
            SHRN,   1, 
            SHRO,   1, 
            SHRP,   1, 
            SHRQ,   1, 
            SHRR,   1, 
            Offset (0xB43), 
            SHRT,   8
        }

        Method (SHPC, 1, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                Store (Local1, ^SHRY)
                Store (Arg0, ^SHRE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHRF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHRF)
                {
                    BreakPoint
                }

                If (^SHRG)
                {
                    BreakPoint
                }
            }
            Else
            {
                Store (0x05DC, Local0)
                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                ShiftRight (Arg0, 0x08, Local1)
                If (LEqual (Local1, 0x00))
                {
                    Increment (Local1)
                }

                Store (Local1, ^SHBY)
                Store (Arg0, ^SHBE)
                If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49)))
                {
                    Store (0x05DC, Local0)
                }
                Else
                {
                    Store (0x64, Local0)
                }

                While (LAnd (^SHBF, Local0))
                {
                    Sleep (0x0A)
                    Decrement (Local0)
                }

                If (^SHBF)
                {
                    BreakPoint
                }

                If (^SHBG)
                {
                    BreakPoint
                }
            }
        }

        Method (SHPF, 0, Serialized)
        {
            ^WRK0 ()
            ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C)))
            \_SB.APCI.ZZZN
            ^S6F0.SHPX
            0xE0
            Store (0x03, ^S6F0.SHPP)
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRL, ^S6F0.SHPQ)
            }
            Else
            {
                Store (^SHBL, ^S6F0.SHPQ)
            }
        }

        Method (SHPE, 0, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                Store (^SHRH, Local0)
                While (Store (^SHRH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHRN)
                        {
                            Store (One, ^SHRN)
                            Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0A))
                        }

                        If (^SHRO)
                        {
                            Store (One, ^SHRO)
                            BreakPoint
                        }

                        If (^SHRP)
                        {
                            Store (One, ^SHRP)
                        }

                        If (^SHRQ)
                        {
                            Store (One, ^SHRQ)
                            If (LNot (LEqual (^SHRI, 0x03)))
                            {
                                BreakPoint
                            }

                            ^WRK0 ()
                            If (LEqual (^S6F0.SHPP, 0x02))
                            {
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S6F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHRJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHRL, 0x03))
                                    {
                                        If (LNot (LEqual (^S6F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHRM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHRM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHRK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHRO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHRO)
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHRD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHRI, ^S6F0.SHPP)
                            Store (^SHRL, ^S6F0.SHPQ)
                        }

                        If (^SHRR)
                        {
                            Store (One, ^SHRR)
                            ^WRK0 ()
                            Store (One, ^SHRR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHRR)
                            \_SB.APCI.ZZZN
                            ^S6F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
            Else
            {
                Store (^SHBH, Local0)
                While (Store (^SHBH, Local1))
                {
                    If (And (Local1, 0x02))
                    {
                        If (^SHBN)
                        {
                            Store (One, ^SHBN)
                            Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0A))
                        }

                        If (^SHBO)
                        {
                            Store (One, ^SHBO)
                            BreakPoint
                        }

                        If (^SHBP)
                        {
                            Store (One, ^SHBP)
                        }

                        If (^SHBQ)
                        {
                            Store (One, ^SHBQ)
                            If (LNot (LEqual (^SHBI, 0x03)))
                            {
                                BreakPoint
                            }

                            If (LEqual (^S6F0.SHPP, 0x02))
                            {
                                ^WRK0 ()
                                ^SHPC (Or (0x0100, Or (0x0C, 0x10)))
                                Notify (^, 0x00)
                                \_SB.APCI.ZZZN
                                ^S6F0.SHPX
                                0xEA
                            }
                            Else
                            {
                                If (LNot (^SHBJ))
                                {
                                    ^SHPC (Or (0x0100, 0x30))
                                    If (LEqual (^SHBL, 0x03))
                                    {
                                        If (LNot (LEqual (^S6F0.SHPQ, 0x03)))
                                        {
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xF1
                                        }
                                    }
                                    Else
                                    {
                                        ^SHPC (Or (0x0100, Or (0x04, 0x01)))
                                        If (LEqual (^SHBM, 0x03))
                                        {
                                            Store (0x44, Local0)
                                        }
                                        Else
                                        {
                                            If (LEqual (^SHBM, 0x01))
                                            {
                                                Store (0x42, Local0)
                                            }
                                            Else
                                            {
                                                If (^SHBK)
                                                {
                                                    Store (0x41, Local0)
                                                }
                                                Else
                                                {
                                                    Store (0x40, Local0)
                                                }
                                            }
                                        }

                                        ^SHPC (Local0)
                                        Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPY)), 0x08))
                                        Sleep (0x1388)
                                        If (^SHBO)
                                        {
                                            ^WRK0 ()
                                            Store (One, SHRO)
                                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                                            Store (One, ^SHBO)
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xE9
                                        }
                                        Else
                                        {
                                            ^SHPC (Or (0x0100, 0x02))
                                            Sleep (0x0BB8)
                                            ^WRK1 ()
                                            \_SB.APCI.ZZZN
                                            ^S6F0.SHPX
                                            0xF0
                                            Notify (^, 0x00)
                                            Store (^SHBD, IOPT)
                                        }
                                    }
                                }
                            }

                            Store (^SHBI, ^S6F0.SHPP)
                            Store (^SHBL, ^S6F0.SHPQ)
                        }

                        If (^SHBR)
                        {
                            ^WRK0 ()
                            Store (One, ^SHBR)
                            ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03)))
                            Store (One, ^SHBR)
                            \_SB.APCI.ZZZN
                            ^S6F0.SHPX
                            0xE9
                        }
                    }
                    Else
                    {
                        BreakPoint
                    }
                }

                Return (Local0)
            }
        }

        Name (SHPB, Buffer (0x08)
        {
            0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF
        })
        Method (SHPI, 4, Serialized)
        {
            If (LEqual (^SHBZ, 0x1014))
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHRS)
                    Store (0x65, ^SHRT)
                    If (LNot (LEqual (^SHRI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S6F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S6F0.SHPX)
                    Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S6F0.SHPS)
                    Store (Arg1, ^S6F0._SUN)
                    Store (^SHRI, ^S6F0.SHPP)
                    Store (^SHRL, ^S6F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S6F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S6F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
            Else
            {
                If (LEqual (Arg0, Zero))
                {
                    Store (0x7E, ^SHBS)
                    Store (0x65, ^SHBT)
                    If (LNot (LEqual (^SHBI, 0x02)))
                    {
                        ^WRK0 ()
                    }

                    Store (Arg2, ^S6F0.SHPY)
                    Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05))
                    Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08))
                    Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00))
                    Store (Arg3, ^S6F0.SHPX)
                    Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A))
                    Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C))
                    Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00))
                    Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S6F0.SHPS)
                    Store (Arg1, ^S6F0._SUN)
                    Store (^SHBI, ^S6F0.SHPP)
                    Store (^SHBL, ^S6F0.SHPQ)
                    Return (Increment (Arg1))
                }

                If (LEqual (Arg0, One))
                {
                    If (LEqual (^S6F0.SHPS, Arg1))
                    {
                        If (Arg2)
                        {
                            Store (0x20, Local0)
                            Store (0x08, Local1)
                        }
                        Else
                        {
                            If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x09)))
                            {
                                Store (0x10, Local0)
                            }
                            Else
                            {
                                Store (0x30, Local0)
                            }

                            Store (Zero, Local1)
                        }

                        ^SHPC (Or (0x0100, Local0))
                        Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0B))
                        \_SB.APCI.ZZZN
                        ^S6F0.SHPX
                        0xF3
                    }
                }

                Return (Zero)
            }
        }

        Device (S6F0)
        {
            Name (_ADR, 0x00010000)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Name (_SUN, Ones)
            Name (SHPP, Ones)
            Name (SHPQ, Ones)
            Name (SHPS, Ones)
            Name (SHPX, Ones)
            Name (SHPY, Ones)
        }

        Device (S6F1)
        {
            Name (_ADR, 0x00010001)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F2)
        {
            Name (_ADR, 0x00010002)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F3)
        {
            Name (_ADR, 0x00010003)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F4)
        {
            Name (_ADR, 0x00010004)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F5)
        {
            Name (_ADR, 0x00010005)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F6)
        {
            Name (_ADR, 0x00010006)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Device (S6F7)
        {
            Name (_ADR, 0x00010007)
            Method (_EJ0, 1, NotSerialized)
            {
                ^^SHPF ()
            }

            Method (_SUN, 0, NotSerialized)
            {
                Return (^^S6F0._SUN)
            }
        }

        Method (INIH, 0, NotSerialized)
        {
            Store (\_SB.VP00.SUNC (0x06), Local0)
            Store (\_SB.VP00.ROWB (0x06), Local1)
            Store (\_SB.VP00.ROWS (0x06), Local2)
            SHPI (Zero, Local0, Local1, Local2)
        }
    }
}


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

* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
  2005-11-18  2:22           ` keith
@ 2005-11-18  2:56             ` KAMEZAWA Hiroyuki
       [not found]               ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: KAMEZAWA Hiroyuki @ 2005-11-18  2:56 UTC (permalink / raw)
  To: keith
  Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w,
	naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

keith wrote:
>> >
>>Could you show your AML tree around Memory ?
> 
> 
> See attached SSDT. 
> 
Thanks, at the first look.....

>         Device (ME00)
>         {
<snip>
>             Method (_STA, 0, NotSerialized)
>             {
>                 If (CondRefOf (_OSI, Local0))
>                 {
>                     If (\_OSI ("Windows 2001"))
>                     {
>                         If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL)))
>                         {
>                             Or (MEID, \_SB.MEMI, \_SB.MEMI)
>                             Return (0x00)
>                         }
>                         Else
>                         {
>                             And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
>                             Return (0x0F)
>                         }
>                     }
>                 }
> 
>                 Return (0x00)
>             }
It seems memory device's  _STA never returns 0xF always returns 0x0.
(Device is online and enabled) when OS is not Windows2001.
All PNP0C80 decvices in this SSDT has same _STA function.

So, I think why your hot add failes is _STA has no present bit.
==
drivers/acpi/scan.c

acpi_add_single_object()
<snip>
         case ACPI_BUS_TYPE_DEVICE:
                 result = acpi_bus_get_status(device);  in drivers/acpi/bus.c
                 if (ACPI_FAILURE(result) || !device->status.present) { <----(*)
                         result = -ENOENT;
                         goto end;
                 }
                 break;
==

rewriting your DSDT would be sane approach.

-- Kame





-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

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

* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
       [not found]               ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
@ 2005-11-18 18:54                 ` keith
  0 siblings, 0 replies; 9+ messages in thread
From: keith @ 2005-11-18 18:54 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki
  Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w,
	naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

On Fri, 2005-11-18 at 11:56 +0900, KAMEZAWA Hiroyuki wrote:
> keith wrote:
> >> >
> >>Could you show your AML tree around Memory ?
> > 
> > 
> > See attached SSDT. 
> > 
> Thanks, at the first look.....
> 
> >         Device (ME00)
> >         {
> <snip>
> >             Method (_STA, 0, NotSerialized)
> >             {
> >                 If (CondRefOf (_OSI, Local0))
> >                 {
> >                     If (\_OSI ("Windows 2001"))
> >                     {
> >                         If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL)))
> >                         {
> >                             Or (MEID, \_SB.MEMI, \_SB.MEMI)
> >                             Return (0x00)
> >                         }
> >                         Else
> >                         {
> >                             And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
> >                             Return (0x0F)
> >                         }
> >                     }
> >                 }
> > 
> >                 Return (0x00)
> >             }
> It seems memory device's  _STA never returns 0xF always returns 0x0.
> (Device is online and enabled) when OS is not Windows2001.
> All PNP0C80 decvices in this SSDT has same _STA function.

I see.  I have no experience reading these ASL files... 

> So, I think why your hot add failes is _STA has no present bit.
> ==
> drivers/acpi/scan.c
> 
> acpi_add_single_object()
> <snip>
>          case ACPI_BUS_TYPE_DEVICE:
>                  result = acpi_bus_get_status(device);  in drivers/acpi/bus.c
>                  if (ACPI_FAILURE(result) || !device->status.present) { <----(*)
>                          result = -ENOENT;
>                          goto end;
>                  }
>                  break;
> ==
> 
> rewriting your DSDT would be sane approach.

I shall go to the bios writers. 

Thank you very much for you help in determining the root cause of my
troubles with the hot-add event.    

Keith Mannthey 
LTC xSeries 



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

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

* RE: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
@ 2005-11-18 19:47 Moore, Robert
       [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Moore, Robert @ 2005-11-18 19:47 UTC (permalink / raw)
  To: KAMEZAWA Hiroyuki, keith
  Cc: Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

The ACPICA code supports _OSI and will respond TRUE when shown the
"Windows 2001" string.
Bob


> -----Original Message-----
> From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of KAMEZAWA Hiroyuki
> Sent: Thursday, November 17, 2005 6:57 PM
> To: keith
> Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
hotplug
> mem list; Tolentino, Matthew E
> Subject: Re: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> acpi_memhotplug.c
> 
> keith wrote:
> >> >
> >>Could you show your AML tree around Memory ?
> >
> >
> > See attached SSDT.
> >
> Thanks, at the first look.....
> 
> >         Device (ME00)
> >         {
> <snip>
> >             Method (_STA, 0, NotSerialized)
> >             {
> >                 If (CondRefOf (_OSI, Local0))
> >                 {
> >                     If (\_OSI ("Windows 2001"))
> >                     {
> >                         If (LAnd (LEqual (BADH, EADH), LEqual (BADL,
> EADL)))
> >                         {
> >                             Or (MEID, \_SB.MEMI, \_SB.MEMI)
> >                             Return (0x00)
> >                         }
> >                         Else
> >                         {
> >                             And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
> >                             Return (0x0F)
> >                         }
> >                     }
> >                 }
> >
> >                 Return (0x00)
> >             }
> It seems memory device's  _STA never returns 0xF always returns 0x0.
> (Device is online and enabled) when OS is not Windows2001.
> All PNP0C80 decvices in this SSDT has same _STA function.
> 
> So, I think why your hot add failes is _STA has no present bit.
> ==
> drivers/acpi/scan.c
> 
> acpi_add_single_object()
> <snip>
>          case ACPI_BUS_TYPE_DEVICE:
>                  result = acpi_bus_get_status(device);  in
> drivers/acpi/bus.c
>                  if (ACPI_FAILURE(result) || !device->status.present)
{ <-
> ---(*)
>                          result = -ENOENT;
>                          goto end;
>                  }
>                  break;
> ==
> 
> rewriting your DSDT would be sane approach.
> 
> -- Kame
> 
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
> Register for a JBoss Training Course.  Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> _______________________________________________
> Acpi-devel mailing list
> Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/acpi-devel


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=click

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

* RE: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
@ 2005-11-18 20:51 Moore, Robert
       [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Moore, Robert @ 2005-11-18 20:51 UTC (permalink / raw)
  To: Moore, Robert, KAMEZAWA Hiroyuki, keith
  Cc: Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

FYI, here are the strings supported:

/*
 * Strings supported by the _OSI predefined (internal) method.
 * When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.
 */
const char
*AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] =
{
    /* Operating System Vendor Strings */

    "Linux",
    "Windows 2000",
    "Windows 2001",
    "Windows 2001.1",
    "Windows 2001 SP0",
    "Windows 2001 SP1",
    "Windows 2001 SP2",
    "Windows 2001 SP3",
    "Windows 2001 SP4",

    /* Feature Group Strings */

    "Extended Address Space Descriptor"
};

> -----Original Message-----
> From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Moore, Robert
> Sent: Friday, November 18, 2005 11:47 AM
> To: KAMEZAWA Hiroyuki; keith
> Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
hotplug
> mem list; Tolentino, Matthew E
> Subject: RE: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> acpi_memhotplug.c
> 
> The ACPICA code supports _OSI and will respond TRUE when shown the
> "Windows 2001" string.
> Bob
> 
> 
> > -----Original Message-----
> > From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> > admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of KAMEZAWA Hiroyuki
> > Sent: Thursday, November 17, 2005 6:57 PM
> > To: keith
> > Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
> hotplug
> > mem list; Tolentino, Matthew E
> > Subject: Re: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> > acpi_memhotplug.c
> >
> > keith wrote:
> > >> >
> > >>Could you show your AML tree around Memory ?
> > >
> > >
> > > See attached SSDT.
> > >
> > Thanks, at the first look.....
> >
> > >         Device (ME00)
> > >         {
> > <snip>
> > >             Method (_STA, 0, NotSerialized)
> > >             {
> > >                 If (CondRefOf (_OSI, Local0))
> > >                 {
> > >                     If (\_OSI ("Windows 2001"))
> > >                     {
> > >                         If (LAnd (LEqual (BADH, EADH), LEqual
(BADL,
> > EADL)))
> > >                         {
> > >                             Or (MEID, \_SB.MEMI, \_SB.MEMI)
> > >                             Return (0x00)
> > >                         }
> > >                         Else
> > >                         {
> > >                             And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
> > >                             Return (0x0F)
> > >                         }
> > >                     }
> > >                 }
> > >
> > >                 Return (0x00)
> > >             }
> > It seems memory device's  _STA never returns 0xF always returns 0x0.
> > (Device is online and enabled) when OS is not Windows2001.
> > All PNP0C80 decvices in this SSDT has same _STA function.
> >
> > So, I think why your hot add failes is _STA has no present bit.
> > ==
> > drivers/acpi/scan.c
> >
> > acpi_add_single_object()
> > <snip>
> >          case ACPI_BUS_TYPE_DEVICE:
> >                  result = acpi_bus_get_status(device);  in
> > drivers/acpi/bus.c
> >                  if (ACPI_FAILURE(result) ||
!device->status.present)
> { <-
> > ---(*)
> >                          result = -ENOENT;
> >                          goto end;
> >                  }
> >                  break;
> > ==
> >
> > rewriting your DSDT would be sane approach.
> >
> > -- Kame
> >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by the JBoss Inc.  Get Certified
Today
> > Register for a JBoss Training Course.  Free Certification Exam
> > for All Training Attendees Through End of 2005. For more info visit:
> > http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> > _______________________________________________
> > Acpi-devel mailing list
> > Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> > https://lists.sourceforge.net/lists/listinfo/acpi-devel
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
> Register for a JBoss Training Course.  Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=ick
> _______________________________________________
> Acpi-devel mailing list
> Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/acpi-devel


-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=click

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

* RE: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
       [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2005-11-19 10:44   ` Erik Slagter
  2005-11-19 12:15   ` Kamezawa Hiroyuki
  1 sibling, 0 replies; 9+ messages in thread
From: Erik Slagter @ 2005-11-19 10:44 UTC (permalink / raw)
  To: Moore, Robert; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f

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

On Fri, 2005-11-18 at 12:51 -0800, Moore, Robert wrote:

[ ... ]
	
> {
>     /* Operating System Vendor Strings */
> 
>     "Linux",
>     "Windows 2000",
>     "Windows 2001",
>     "Windows 2001.1",
>     "Windows 2001 SP0",
>     "Windows 2001 SP1",
>     "Windows 2001 SP2",
>     "Windows 2001 SP3",
>     "Windows 2001 SP4",
> 
>     /* Feature Group Strings */
> 
>     "Extended Address Space Descriptor"
> };

Can you please explain to me what is the relation between ACPI and a
certain OS implementation, seen from the BIOS code? I always failed to
see that, I thought ACPI was to be OS-independent?

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 2115 bytes --]

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

* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
       [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
@ 2005-11-19 12:03   ` Kamezawa Hiroyuki
  0 siblings, 0 replies; 9+ messages in thread
From: Kamezawa Hiroyuki @ 2005-11-19 12:03 UTC (permalink / raw)
  To: Moore, Robert
  Cc: keith, Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

Moore, Robert wrote:
> The ACPICA code supports _OSI and will respond TRUE when shown the
> "Windows 2001" string.

I'm not familiar with this area....

When I set acpi_osi=Windows 2001 in boot option,
  (\_OSI ("Windows 2001")) returns true ?


-- Kame



-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

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

* Re: Re: [Lhms-devel] [PATCH 1/1]  patch to fix acpi_memhotplug.c
       [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
  2005-11-19 10:44   ` Erik Slagter
@ 2005-11-19 12:15   ` Kamezawa Hiroyuki
  1 sibling, 0 replies; 9+ messages in thread
From: Kamezawa Hiroyuki @ 2005-11-19 12:15 UTC (permalink / raw)
  To: Moore, Robert
  Cc: keith, Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
	external hotplug mem list, Tolentino, Matthew E

Moore, Robert wrote:
> FYI, here are the strings supported:
> 
> /*
>  * Strings supported by the _OSI predefined (internal) method.
>  * When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.
>  */
> const char
> *AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] =
> {
>     /* Operating System Vendor Strings */
> 
>     "Linux",
>     "Windows 2000",
>     "Windows 2001",
>     "Windows 2001.1",
>     "Windows 2001 SP0",
>     "Windows 2001 SP1",
>     "Windows 2001 SP2",
>     "Windows 2001 SP3",
>     "Windows 2001 SP4",
> 
>     /* Feature Group Strings */
> 
>     "Extended Address Space Descriptor"
> };
Ah..Okay.. This means _OSI("Windows2001") returns true.

- kame




-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.  Get Certified Today
Register for a JBoss Training Course.  Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click

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

end of thread, other threads:[~2005-11-19 12:15 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-18 19:47 Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c Moore, Robert
     [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2005-11-19 12:03   ` Kamezawa Hiroyuki
  -- strict thread matches above, loose matches on Subject: below --
2005-11-18 20:51 Moore, Robert
     [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2005-11-19 10:44   ` Erik Slagter
2005-11-19 12:15   ` Kamezawa Hiroyuki
2005-11-12  5:03 [RFC][PATCH] patch to fix acpi_memhotplug.c for my hardware keith
2005-11-15  5:36 ` [PATCH 1/1] patch to fix acpi_memhotplug.c keith
2005-11-15 10:20   ` [Lhms-devel] " Yasunori Goto
2005-11-17  4:18     ` keith
2005-11-17  6:08       ` KAMEZAWA Hiroyuki
     [not found]         ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18  2:22           ` keith
2005-11-18  2:56             ` KAMEZAWA Hiroyuki
     [not found]               ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18 18:54                 ` keith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox