tech-kern archive

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

Re: Thinkpad X200 volume hotkeys



On Mon, Jan 22, 2024 at 10:39:28PM +0000, Taylor R Campbell wrote:
> > Date: Mon, 22 Jan 2024 20:49:56 +0100
> > From: Andreas Hecht <a.e.hecht%t-online.de@localhost>
> > 
> > I am trying to get the volume hotkeys (VolumeUp, VolumeDown, VolumeMute) on my
> > Lenovo Thinkpad X200 to work. Unfortunately the respective hotkey events are
> > not seen by thinkpad_acpi driver's thinkpad_notify_handler. The comments (->
> > "Not seen on T61") in the driver indicate that these volume hotkeys are not
> > working for the Thinkpad T61 either. Could someone please point me in the right
> > direction how to fix this? The volume hotkeys work fine on the same X200 with
> > OpenBSD 7.4.
> 
> Some things to try:
> 
> 1. Post the output of `acpidump -dt' somewhere -- maybe it will have
>    clues.
> 
> 2. Run
> 
>       dtrace -n 'sdt:thinkpad:hotkey:MHKP { print(args[1]) }'
> 
>    and then try hitting the hotkeys, and post what comes out.  (Hit ^C
>    when done.)
> 
> 3. If that doesn't turn anything up, could try:
> 
>    (a) dtracing fbt::wskbd_input:entry (print args[0]->dv_xname,
>        args[1], and args[2]) and see if anything interesting comes
>        out,
>    (b) building a new kernel to printf what's happening inside
>        thinkpad_attach to see if that helps, and maybe comparing with
>        what OpenBSD does.
> 
> And, if this is NetBSD 9.x, try NetBSD 10.0_RC3 -- it has had some
> changes in the Thinkpad hotkey driver.

Tested the volume hotkeys with a netbsd-10-0-RC3 kernel with ACPI_DEBUG
option enabled but volume hotkey events did not show up. Will try the
suggestions you've made and post my findings. Thanks for your help. Here
is the acpidump:


/*
  RSD PTR: OEM=COREv4, ACPI_Rev=2.0x (2)
	XSDT=0x000000007d74a0e0, length=36, cksum=107
 */
/*
  XSDT: Length=84, Revision=1, Checksum=95,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331
	Entries={ 0x000000007d74dca0, 0x000000007d74ddc0, 0x000000007d74e6f0, 0x000000007d74e730, 0x000000007d74e7a0, 0x000000007d74e820 }
 */
/*
  FACP: Length=276, Revision=6, Checksum=191,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331
 	FACS=0x7d74a240, DSDT=0x7d74a280
	INT_MODEL=PIC
	Preferred_PM_Profile=Mobile (2)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xe1, ACPI_DISABLE=0x1e, S4BIOS_REQ=0x0
	PSTATE_CNT=0x0
	PM1a_EVT_BLK=0x500-0x503
	PM1a_CNT_BLK=0x504-0x505
	PM2_CNT_BLK=0x550-0x550
	PM_TMR_BLK=0x508-0x50b
	GPE0_BLK=0x520-0x52f
	P_LVL2_LAT=1 us, P_LVL3_LAT=57 us
	FLUSH_SIZE=0, FLUSH_STRIDE=0
	DUTY_OFFSET=1, DUTY_WIDTH=3
	DAY_ALRM=13, MON_ALRM=0, CENTURY=0
	IAPC_BOOT_ARCH={}
	Flags={WBINVD,C1_SUPPORTED,SLEEP_BUTTON,S4_RTC_WAKE,DOCKING_SUPPORTED,RESET_REGISTER,PLATFORM_CLOCK}
	RESET_REG=0xcf9:0[8] (IO), RESET_VALUE=0x6
	ArmBootFlags={}
	MinorRevision=0
	X_FACS=0x000000007d74a240, X_DSDT=0x000000007d74a280
	X_PM1a_EVT_BLK=0x500:0[32] (IO)
	X_PM1a_CNT_BLK=0x504:0[16] (IO)
	X_PM2_CNT_BLK=0x550:0[8] (IO)
	X_PM_TMR_BLK=0x508:0[32] (IO)
	X_GPE0_BLK=0x520:0[128] (IO)
	HypervisorId=0x0000000000000000
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock={}
	Flags={}
	Version=1
	OspmFlags={}
 */
/*
  DSDT: Length=14868, Revision=2, Checksum=52,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x20090419,
	Creator ID=INTL, Creator Revision=0x20210331
 */
/*
  SSDT: Length=2346, Revision=2, Checksum=114,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x2a,
	Creator ID=CORE, Creator Revision=0x20210331

	Data={
		 53 53 44 54 2a 09 00 00    02 72 43 4f 52 45 76 34
		 43 4f 52 45 42 4f 4f 54    2a 00 00 00 43 4f 52 45
		 31 03 21 20 5b 82 82 04    00 43 54 42 4c 08 5f 48
		 49 44 0d 42 4f 4f 54 30    30 30 30 00 08 5f 55 49
		 44 00 14 8b 00 00 5f 53    54 41 00 a4 0a 0b 08 5f
		 43 52 53 11 84 01 00 0b    0e 00 86 09 00 00 00 f0
		 76 7d 00 80 00 00 79 00    10 82 01 00 5c 2f 03 5f
		 53 42 5f 50 43 49 30 4c    50 43 42 5b 83 8a 18 00
		 5c 2e 5f 53 42 5f 43 50    30 30 00 10 05 00 00 06
		 08 5f 50 43 54 12 2c 02    11 14 0a 11 82 0c 00 7f
		 00 00 00 00 00 00 00 00    00 00 00 79 00 11 14 0a
		 11 82 0c 00 7f 00 00 00    00 00 00 00 00 00 00 00
		 79 00 08 5f 50 53 44 12    8c 01 00 01 12 87 01 00
		 05 0a 05 0a 00 0c 00 00    00 00 0c fe 00 00 00 0c
		 02 00 00 00 08 5f 50 53    53 12 80 09 00 04 12 82
		 02 00 06 0c e6 09 00 00    0c b8 88 00 00 0c 00 00
		 00 00 0c 00 00 00 00 0c    2b 0a 00 00 0c 2b 0a 00
		 00 12 82 02 00 06 0c e5    09 00 00 0c b8 88 00 00
		 0c 00 00 00 00 0c 00 00    00 00 0c 25 49 00 00 0c
		 25 49 00 00 12 82 02 00    06 0c 40 06 00 00 0c 98
		 3a 00 00 0c 00 00 00 00    0c 00 00 00 00 0c 17 06
		 00 00 0c 17 06 00 00 12    82 02 00 06 0c 20 03 00
		 00 0c e0 2e 00 00 0c 00    00 00 00 0c 00 00 00 00
		 0c 11 86 00 00 0c 11 86    00 00 14 8b 00 00 5f 50
		 50 43 00 a4 0a 00 08 5f    43 53 54 12 8b 07 00 04
		 0a 03 12 86 02 00 04 11    87 01 00 0b 11 00 82 0c
		 00 7f 01 02 01 00 00 00    00 00 00 00 00 79 00 0a
		 01 0b 01 00 0c e8 03 00    00 12 86 02 00 04 11 87
		 01 00 0b 11 00 82 0c 00    7f 01 02 01 10 00 00 00
		 00 00 00 00 79 00 0a 02    0b 01 00 0c f4 01 00 00
		 12 86 02 00 04 11 87 01    00 0b 11 00 82 0c 00 7f
		 01 02 01 20 00 00 00 00    00 00 00 79 00 0a 03 0b
		 37 00 0c fa 00 00 00 5b    83 8a 18 00 5c 2e 5f 53
		 42 5f 43 50 30 31 01 00    00 00 00 00 08 5f 50 43
		 54 12 2c 02 11 14 0a 11    82 0c 00 7f 00 00 00 00
		 00 00 00 00 00 00 00 79    00 11 14 0a 11 82 0c 00
		 7f 00 00 00 00 00 00 00    00 00 00 00 79 00 08 5f
		 50 53 44 12 8c 01 00 01    12 87 01 00 05 0a 05 0a
		 00 0c 00 00 00 00 0c fe    00 00 00 0c 02 00 00 00
		 08 5f 50 53 53 12 80 09    00 04 12 82 02 00 06 0c
		 e6 09 00 00 0c b8 88 00    00 0c 00 00 00 00 0c 00
		 00 00 00 0c 2b 0a 00 00    0c 2b 0a 00 00 12 82 02
		 00 06 0c e5 09 00 00 0c    b8 88 00 00 0c 00 00 00
		 00 0c 00 00 00 00 0c 25    49 00 00 0c 25 49 00 00
		 12 82 02 00 06 0c 40 06    00 00 0c 98 3a 00 00 0c
		 00 00 00 00 0c 00 00 00    00 0c 17 06 00 00 0c 17
		 06 00 00 12 82 02 00 06    0c 20 03 00 00 0c e0 2e
		 00 00 0c 00 00 00 00 0c    00 00 00 00 0c 11 86 00
		 00 0c 11 86 00 00 14 8b    00 00 5f 50 50 43 00 a4
		 0a 00 08 5f 43 53 54 12    8b 07 00 04 0a 03 12 86
		 02 00 04 11 87 01 00 0b    11 00 82 0c 00 7f 01 02
		 01 00 00 00 00 00 00 00    00 79 00 0a 01 0b 01 00
		 0c e8 03 00 00 12 86 02    00 04 11 87 01 00 0b 11
		 00 82 0c 00 7f 01 02 01    10 00 00 00 00 00 00 00
		 79 00 0a 02 0b 01 00 0c    f4 01 00 00 12 86 02 00
		 04 11 87 01 00 0b 11 00    82 0c 00 7f 01 02 01 20
		 00 00 00 00 00 00 00 79    00 0a 03 0b 37 00 0c fa
		 00 00 00 08 50 50 4b 47    12 88 01 00 02 5c 2e 5f
		 53 42 5f 43 50 30 30 5c    2e 5f 53 42 5f 43 50 30
		 31 14 86 02 00 5c 2e 5f    53 42 5f 43 4e 4f 54 01
		 86 5c 2e 5f 53 42 5f 43    50 30 30 68 86 5c 2e 5f
		 53 42 5f 43 50 30 31 68    10 8b 00 00 5c 00 08 4d
		 50 45 4e 00 10 89 0f 00    5c 2f 03 5f 53 42 5f 50
		 43 49 30 47 46 58 30 14    8d 01 00 5f 44 4f 44 00
		 a4 12 83 01 00 03 0c 00    01 01 80 0c 40 02 01 80
		 0c 10 04 01 80 5b 82 81    03 00 56 47 41 30 08 5f
		 41 44 52 0c 00 01 00 00    14 8b 00 00 5f 44 43 53
		 00 a4 0a 1d 14 8a 00 00    5f 44 47 53 00 a4 00 14
		 88 00 00 5f 44 53 53 01    5b 82 81 03 00 54 56 30
		 5f 08 5f 41 44 52 0c 40    02 00 00 14 8b 00 00 5f
		 44 43 53 00 a4 0a 1d 14    8a 00 00 5f 44 47 53 00
		 a4 00 14 88 00 00 5f 44    53 53 01 5b 82 81 06 00
		 4c 43 44 30 08 5f 41 44    52 0c 10 04 00 00 14 8f
		 00 00 5f 42 43 4c 00 a4    5e 5e 58 42 43 4c 14 8f
		 00 00 5f 42 43 4d 01 5e    5e 58 42 43 4d 68 14 8f
		 00 00 5f 42 51 43 00 a4    5e 5e 58 42 51 43 14 8b
		 00 00 5f 44 43 53 00 a4    0a 1d 14 8a 00 00 5f 44
		 47 53 00 a4 00 14 88 00    00 5f 44 53 53 01 10 8d
		 02 00 5c 2f 03 5f 53 42    5f 50 43 49 30 52 50 30
		 34 5b 82 89 01 00 53 4c    4f 54 08 5f 41 44 52 0a
		 00 14 8a 00 00 5f 52 4d    56 00 a4 01 10 8e 07 00
		 5c 5f 47 50 45 14 85 07    00 5f 4c 30 31 00 a0 8c
		 06 00 5c 2f 04 5f 53 42    5f 50 43 49 30 52 50 30
		 34 48 50 43 53 5b 22 0a    64 70 01 5c 2f 04 5f 53
		 42 5f 50 43 49 30 52 50    30 34 48 50 43 53 a0 8c
		 03 00 5c 2f 04 5f 53 42    5f 50 43 49 30 52 50 30
		 34 50 44 43 5f 70 01 5c    2f 04 5f 53 42 5f 50 43
		 49 30 52 50 30 34 50 44    43 5f 86 5c 2f 03 5f 53
		 42 5f 50 43 49 30 52 50    30 34 00 10 87 36 00 5c
		 2e 5f 53 42 5f 50 43 49    30 14 89 35 00 5f 50 52
		 54 00 a0 8a 12 00 50 49    43 4d a4 12 81 12 00 0f
		 12 82 01 00 04 0c ff ff    02 00 0a 00 0a 00 0c 10
		 00 00 00 12 82 01 00 04    0c ff ff 19 00 0a 00 0a
		 00 0c 10 00 00 00 12 82    01 00 04 0c ff ff 1a 00
		 0a 00 0a 00 0c 10 00 00    00 12 82 01 00 04 0c ff
		 ff 1a 00 0a 01 0a 00 0c    11 00 00 00 12 82 01 00
		 04 0c ff ff 1a 00 0a 02    0a 00 0c 12 00 00 00 12
		 82 01 00 04 0c ff ff 1b    00 0a 00 0a 00 0c 10 00
		 00 00 12 82 01 00 04 0c    ff ff 1c 00 0a 00 0a 00
		 0c 10 00 00 00 12 82 01    00 04 0c ff ff 1c 00 0a
		 01 0a 00 0c 11 00 00 00    12 82 01 00 04 0c ff ff
		 1c 00 0a 02 0a 00 0c 12    00 00 00 12 82 01 00 04
		 0c ff ff 1c 00 0a 03 0a    00 0c 13 00 00 00 12 82
		 01 00 04 0c ff ff 1d 00    0a 00 0a 00 0c 10 00 00
		 00 12 82 01 00 04 0c ff    ff 1d 00 0a 01 0a 00 0c
		 11 00 00 00 12 82 01 00    04 0c ff ff 1d 00 0a 02
		 0a 00 0c 12 00 00 00 12    82 01 00 04 0c ff ff 1f
		 00 0a 01 0a 00 0c 11 00    00 00 12 82 01 00 04 0c
		 ff ff 1f 00 0a 02 0a 00    0c 12 00 00 00 a1 85 22
		 00 a4 12 80 22 00 0f 12    83 02 00 04 0c ff ff 02
		 00 0a 00 5c 2f 04 5f 53    42 5f 50 43 49 30 4c 50
		 43 42 4c 4e 4b 41 0c 00    00 00 00 12 83 02 00 04
		 0c ff ff 19 00 0a 00 5c    2f 04 5f 53 42 5f 50 43
		 49 30 4c 50 43 42 4c 4e    4b 41 0c 00 00 00 00 12
		 83 02 00 04 0c ff ff 1a    00 0a 00 5c 2f 04 5f 53
		 42 5f 50 43 49 30 4c 50    43 42 4c 4e 4b 41 0c 00
		 00 00 00 12 83 02 00 04    0c ff ff 1a 00 0a 01 5c
		 2f 04 5f 53 42 5f 50 43    49 30 4c 50 43 42 4c 4e
		 4b 42 0c 00 00 00 00 12    83 02 00 04 0c ff ff 1a
		 00 0a 02 5c 2f 04 5f 53    42 5f 50 43 49 30 4c 50
		 43 42 4c 4e 4b 43 0c 00    00 00 00 12 83 02 00 04
		 0c ff ff 1b 00 0a 00 5c    2f 04 5f 53 42 5f 50 43
		 49 30 4c 50 43 42 4c 4e    4b 41 0c 00 00 00 00 12
		 83 02 00 04 0c ff ff 1c    00 0a 00 5c 2f 04 5f 53
		 42 5f 50 43 49 30 4c 50    43 42 4c 4e 4b 41 0c 00
		 00 00 00 12 83 02 00 04    0c ff ff 1c 00 0a 01 5c
		 2f 04 5f 53 42 5f 50 43    49 30 4c 50 43 42 4c 4e
		 4b 42 0c 00 00 00 00 12    83 02 00 04 0c ff ff 1c
		 00 0a 02 5c 2f 04 5f 53    42 5f 50 43 49 30 4c 50
		 43 42 4c 4e 4b 43 0c 00    00 00 00 12 83 02 00 04
		 0c ff ff 1c 00 0a 03 5c    2f 04 5f 53 42 5f 50 43
		 49 30 4c 50 43 42 4c 4e    4b 44 0c 00 00 00 00 12
		 83 02 00 04 0c ff ff 1d    00 0a 00 5c 2f 04 5f 53
		 42 5f 50 43 49 30 4c 50    43 42 4c 4e 4b 41 0c 00
		 00 00 00 12 83 02 00 04    0c ff ff 1d 00 0a 01 5c
		 2f 04 5f 53 42 5f 50 43    49 30 4c 50 43 42 4c 4e
		 4b 42 0c 00 00 00 00 12    83 02 00 04 0c ff ff 1d
		 00 0a 02 5c 2f 04 5f 53    42 5f 50 43 49 30 4c 50
		 43 42 4c 4e 4b 43 0c 00    00 00 00 12 83 02 00 04
		 0c ff ff 1f 00 0a 01 5c    2f 04 5f 53 42 5f 50 43
		 49 30 4c 50 43 42 4c 4e    4b 42 0c 00 00 00 00 12
		 83 02 00 04 0c ff ff 1f    00 0a 02 5c 2f 04 5f 53
		 42 5f 50 43 49 30 4c 50    43 42 4c 4e 4b 43 0c 00
		 00 00 00 10 86 03 00 5c    2f 05 5f 53 42 5f 50 43
		 49 30 4c 50 43 42 45 43    5f 5f 48 4b 45 59 08 48
		 42 44 43 0a 01 08 48 57    41 4e 0a 01 08 48 4b 42
		 4c 0a 00 08 48 55 57 42    0a 01
	}
 */
/*
  MCFG: Length=60, Revision=1, Checksum=169,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331

	Base Address=0x00000000f0000000
	Segment Group=0x0000
	Start Bus=0
	End Bus=63
 */
/*
  APIC: Length=104, Revision=3, Checksum=139,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331
	Local APIC ADDR=0xfee00000
	Flags={PC-AT}

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

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

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

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

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

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

	Type=INT Override
	BUS=0
	IRQ=9
	INTR=9
	Flags={Polarity=active-hi, Trigger=level}
 */
/*
  DMAR: Length=120, Revision=1, Checksum=41,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331
	Host Address Width=36
	Flags={}

	Type=DRHD
	Length=24
	Flags={}
	Segment=0
	Address=0x00000000fed90000
	Device Scope:
		Type=PCI Endpoint Device
		Length=8
		EnumerationId=0
		StartBusNumber=0
		Path={27:0}

	Type=DRHD
	Length=32
	Flags={}
	Segment=0
	Address=0x00000000fed91000
	Device Scope:
		Type=PCI Endpoint Device
		Length=8
		EnumerationId=0
		StartBusNumber=0
		Path={2:0}

		Type=PCI Endpoint Device
		Length=8
		EnumerationId=0
		StartBusNumber=0
		Path={2:1}

	Type=DRHD
	Length=16
	Flags={INCLUDE_ALL}
	Segment=0
	Address=0x00000000fed93000
 */
/*
  HPET: Length=56, Revision=1, Checksum=144,
	OEMID=COREv4, OEM Table ID=COREBOOT, OEM Revision=0x0,
	Creator ID=CORE, Creator Revision=0x20210331
	HPET Number=0
	ADDR=0x00000000fed00000:0[64] (Memory)
	HW Rev=0x1
	Comparators=3
	Counter Size=1
	Legacy IRQ routing capable={TRUE}
	PCI Vendor ID=0x8086
	Minimal Tick=128
	Flags=0x00
 */
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20221020 (64-bit version)
 * Copyright (c) 2000 - 2022 Intel Corporation
 * 
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of /tmp/acpidump.eqwbvr/acpdump.din, Wed Jan 24 06:26:25 2024
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x0000431A (17178)
 *     Revision         0x02
 *     Checksum         0x02
 *     OEM ID           "COREv4"
 *     OEM Table ID     "COREBOOT"
 *     OEM Revision     0x20090419 (537461785)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20210331 (539034417)
 */
DefinitionBlock ("", "DSDT", 2, "COREv4", "COREBOOT", 0x20090419)
{
    External (_SB_.CNOT, MethodObj)    // 1 Arguments
    External (_SB_.CP00, DeviceObj)
    External (_SB_.CP00._PPC, UnknownObj)
    External (_SB_.CP01._PPC, UnknownObj)
    External (_SB_.PCI0.GFX0.LCD0, DeviceObj)
    External (DNVS, OpRegionObj)
    External (GNVS, OpRegionObj)
    External (HBDC, IntObj)
    External (HKBL, IntObj)
    External (HUWB, IntObj)
    External (HWAN, IntObj)
    External (MPEN, IntObj)
    External (PPKG, MethodObj)    // 0 Arguments

    Scope (\)
    {
        OperationRegion (GNVS, SystemMemory, 0x7D7FEA20, 0xFE)
    }

    Name (OSYS, Zero)
    Name (PICM, Zero)
    Name (PWRS, One)
    Method (_PIC, 1, NotSerialized)  // _PIC: Interrupt Model
    {
        PICM = Arg0
    }

    Scope (_SB)
    {
        Name (PCBA, 0xF0000000)
        Name (PCLN, 0x04000000)
        OperationRegion (PCFG, SystemMemory, PCBA, PCLN)
    }

    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        \_SB.PCI0.LPCB.EC.MUTE (One)
        \_SB.PCI0.LPCB.EC.USBP (Zero)
        \_SB.PCI0.LPCB.EC.RADI (Zero)
    }

    Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        \_SB.PCI0.LPCB.EC.HKEY.WAKE (Arg0)
        If ((Arg0 == 0x03)){}
        If ((Arg0 == 0x04)){}
        Return (Package (0x02)
        {
            Zero, 
            Zero
        })
    }

    Scope (_SB)
    {
        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            GOS ()
        }
    }

    Field (GNVS, ByteAcc, NoLock, Preserve)
    {
        Offset (0x02), 
        SMIF,   8, 
        Offset (0x04), 
        Offset (0x05), 
        SCIF,   8, 
        Offset (0x07), 
        Offset (0x08), 
        Offset (0x09), 
        Offset (0x0A), 
        Offset (0x0B), 
        P80D,   32, 
        LIDS,   8, 
        Offset (0x11), 
        DBGS,   8, 
        LINX,   8, 
        DCKN,   8, 
        ACTT,   8, 
        TPSV,   8, 
        TC1V,   8, 
        TC2V,   8, 
        TSPV,   8, 
        TCRT,   8, 
        DTSE,   8, 
        DTS1,   8, 
        FLVL,   8, 
        Offset (0x1E), 
        BNUM,   8, 
        B0SC,   8, 
        B1SC,   8, 
        B2SC,   8, 
        B0SS,   8, 
        B1SS,   8, 
        B2SS,   8, 
        Offset (0x28), 
        Offset (0x29), 
        Offset (0x2A), 
        PCP0,   8, 
        PCP1,   8, 
        PPCM,   8, 
        Offset (0x32), 
        NATP,   8, 
        CMAP,   8, 
        CMBP,   8, 
        LPTP,   8, 
        FDCP,   8, 
        RFDV,   8, 
        HOTK,   8, 
        RTCF,   8, 
        UTIL,   8, 
        ACIN,   8, 
        IGDS,   8, 
        TLST,   8, 
        CADL,   8, 
        PADL,   8, 
        Offset (0x64), 
        BLCS,   8, 
        BRTL,   8, 
        ODDS,   8, 
        Offset (0x6E), 
        ALSE,   8, 
        ALAF,   8, 
        LLOW,   8, 
        LHIH,   8, 
        Offset (0x78), 
        EMAE,   8, 
        EMAP,   16, 
        EMAL,   16, 
        Offset (0x82), 
        MEFE,   8, 
        Offset (0x8C), 
        TPMP,   8, 
        TPME,   8, 
        Offset (0x96), 
        GTF0,   56, 
        GTF1,   56, 
        GTF2,   56, 
        IDEM,   8, 
        IDET,   8, 
        Offset (0xF0), 
        DOCK,   8, 
        BTEN,   8, 
        CBMC,   32, 
        PM1I,   32, 
        GPEI,   32
    }

    OperationRegion (APMP, SystemIO, 0xB2, 0x02)
    Field (APMP, ByteAcc, NoLock, Preserve)
    {
        APMC,   8, 
        APMS,   8
    }

    OperationRegion (POST, SystemIO, 0x80, One)
    Field (POST, ByteAcc, Lock, Preserve)
    {
        DBG0,   8
    }

    Method (TRAP, 1, Serialized)
    {
        SMIF = Arg0
        TRP0 = Zero
        Return (SMIF) /* \SMIF */
    }

    Method (GOS, 0, NotSerialized)
    {
        OSYS = 0x07D0
        If (CondRefOf (_OSI))
        {
            If (_OSI ("Windows 2001"))
            {
                OSYS = 0x07D1
            }

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

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

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

    Method (HPTS, 1, NotSerialized)
    {
        If (!Arg0)
        {
            Return (Zero)
        }

        If ((OSYS < 0x07D1))
        {
            Return (0x0B)
        }

        Return (0x0F)
    }

    Scope (_GPE)
    {
        Method (_L18, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
        {
            Local0 = \_SB.PCI0.LPCB.EC.WAKE
            Local0++
        }
    }

    Method (PNOT, 0, NotSerialized)
    {
        If (MPEN)
        {
            \_SB.CNOT (0x80)
            Sleep (0x64)
            \_SB.CNOT (0x81)
        }
        Else
        {
            Notify (\_SB.CP00, 0x80) // Performance Capability Change
            Sleep (0x64)
            Notify (\_SB.CP00, 0x81) // C-State Change
        }
    }

    Scope (_SB)
    {
        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */)  // _HID: Hardware ID
            Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID
            Name (_BBN, Zero)  // _BBN: BIOS Bus Number
            Device (MCHC)
            {
                Name (_ADR, Zero)  // _ADR: Address
                OperationRegion (MCHP, PCI_Config, Zero, 0x0100)
                Field (MCHP, DWordAcc, NoLock, Preserve)
                {
                    Offset (0x40), 
                    EPEN,   1, 
                        ,   11, 
                    EPBR,   24, 
                    Offset (0x48), 
                    MHEN,   1, 
                        ,   13, 
                    MHBR,   22, 
                    Offset (0x60), 
                    PXEN,   1, 
                    PXSZ,   2, 
                        ,   23, 
                    PXBR,   10, 
                    Offset (0x68), 
                    DMEN,   1, 
                        ,   11, 
                    DMBR,   24, 
                    Offset (0x90), 
                        ,   4, 
                    PM0H,   2, 
                    Offset (0x91), 
                    PM1L,   2, 
                        ,   2, 
                    PM1H,   2, 
                    Offset (0x92), 
                    PM2L,   2, 
                        ,   2, 
                    PM2H,   2, 
                    Offset (0x93), 
                    PM3L,   2, 
                        ,   2, 
                    PM3H,   2, 
                    Offset (0x94), 
                    PM4L,   2, 
                        ,   2, 
                    PM4H,   2, 
                    Offset (0x95), 
                    PM5L,   2, 
                        ,   2, 
                    PM5H,   2, 
                    Offset (0x96), 
                    PM6L,   2, 
                        ,   2, 
                    PM6H,   2, 
                    Offset (0x97), 
                    Offset (0xA0), 
                    TOM,    8, 
                    Offset (0xB0), 
                        ,   4, 
                    TLUD,   12
                }
            }

            Name (MCRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000CF7,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000CF8,         // Length
                    ,, , TypeStatic, DenseTranslation)
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x00000000,         // Granularity
                    0x00000D00,         // Range Minimum
                    0x0000FFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x0000F300,         // Length
                    ,, , TypeStatic, DenseTranslation)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000A0000,         // Range Minimum
                    0x000BFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C0000,         // Range Minimum
                    0x000C3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C4000,         // Range Minimum
                    0x000C7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000C8000,         // Range Minimum
                    0x000CBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000CC000,         // Range Minimum
                    0x000CFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D0000,         // Range Minimum
                    0x000D3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D4000,         // Range Minimum
                    0x000D7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000D8000,         // Range Minimum
                    0x000DBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000DC000,         // Range Minimum
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E0000,         // Range Minimum
                    0x000E3FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E4000,         // Range Minimum
                    0x000E7FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000E8000,         // Range Minimum
                    0x000EBFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000EC000,         // Range Minimum
                    0x000EFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00004000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x000F0000,         // Range Minimum
                    0x000FFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00010000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0xFEBFFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0xFEC00000,         // Length
                    ,, _Y00, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0xFED40000,         // Range Minimum
                    0xFED44FFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00005000,         // Length
                    ,, , AddressRangeMemory, TypeStatic)
            })
            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
            {
                CreateDWordField (MCRS, \_SB.PCI0._Y00._MIN, PMIN)  // _MIN: Minimum Base Address
                CreateDWordField (MCRS, \_SB.PCI0._Y00._MAX, PMAX)  // _MAX: Maximum Base Address
                CreateDWordField (MCRS, \_SB.PCI0._Y00._LEN, PLEN)  // _LEN: Length
                PMIN = (^MCHC.TLUD << 0x14)
                PLEN = ((PMAX - PMIN) + One)
                Return (MCRS) /* \_SB_.PCI0.MCRS */
            }

            Device (PDRC)
            {
                Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                Name (_UID, One)  // _UID: Unique ID
                Name (PDRS, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite,
                        0xFED1C000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00004000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED18000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED19000,         // Address Base
                        0x00001000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xF0000000,         // Address Base
                        0x04000000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED20000,         // Address Base
                        0x00020000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED40000,         // Address Base
                        0x00005000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED45000,         // Address Base
                        0x0004B000,         // Address Length
                        )
                })
                Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                {
                    Return (PDRS) /* \_SB_.PCI0.PDRC.PDRS */
                }
            }

            Device (PEGP)
            {
                Name (_ADR, 0x00010000)  // _ADR: Address
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x10
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                Zero, 
                                0x13
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x04)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPCB.LNKD, 
                                Zero
                            }
                        })
                    }
                }
            }

            Device (GFX0)
            {
                Name (_ADR, 0x00020000)  // _ADR: Address
            }

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

                OperationRegion (PMIO, SystemIO, 0x0500, 0x80)
                Field (PMIO, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x11), 
                    THRO,   1, 
                    Offset (0x42), 
                        ,   1, 
                    GPEC,   1, 
                    Offset (0x64), 
                        ,   9, 
                    SCIS,   1
                }

                OperationRegion (GPIO, SystemIO, 0x0580, 0x3C)
                Field (GPIO, ByteAcc, NoLock, Preserve)
                {
                    GU00,   8, 
                    GU01,   8, 
                    GU02,   8, 
                    GU03,   8, 
                    GIO0,   8, 
                    GIO1,   8, 
                    GIO2,   8, 
                    GIO3,   8, 
                    Offset (0x0C), 
                    GP00,   1, 
                    GP01,   1, 
                    GP02,   1, 
                    GP03,   1, 
                    GP04,   1, 
                    GP05,   1, 
                    GP06,   1, 
                    GP07,   1, 
                    GP08,   1, 
                    GP09,   1, 
                    GP10,   1, 
                    GP11,   1, 
                    GP12,   1, 
                    GP13,   1, 
                    GP14,   1, 
                    GP15,   1, 
                    GP16,   1, 
                    GP17,   1, 
                    GP18,   1, 
                    GP19,   1, 
                    GP20,   1, 
                    GP21,   1, 
                    GP22,   1, 
                    GP23,   1, 
                    GP24,   1, 
                    GP25,   1, 
                    GP26,   1, 
                    GP27,   1, 
                    GP28,   1, 
                    GP29,   1, 
                    GP30,   1, 
                    GP31,   1, 
                    Offset (0x18), 
                    GB00,   8, 
                    GB01,   8, 
                    GB02,   8, 
                    GB03,   8, 
                    Offset (0x2C), 
                    GIV0,   8, 
                    GIV1,   8, 
                    GIV2,   8, 
                    GIV3,   8, 
                    GU04,   8, 
                    GU05,   8, 
                    GU06,   8, 
                    GU07,   8, 
                    GIO4,   8, 
                    GIO5,   8, 
                    GIO6,   8, 
                    GIO7,   8, 
                    GP32,   1, 
                    GP33,   1, 
                    GP34,   1, 
                    GP35,   1, 
                    GP36,   1, 
                    GP37,   1, 
                    GP38,   1, 
                    GP39,   1, 
                    GL05,   8, 
                    GL06,   8, 
                    GL07,   8
                }

                OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
                Field (RCRB, DWordAcc, Lock, Preserve)
                {
                    Offset (0x1000), 
                    Offset (0x3000), 
                    Offset (0x3404), 
                    HPAS,   2, 
                        ,   5, 
                    HPTE,   1, 
                    Offset (0x3418), 
                        ,   2, 
                    SA1D,   1, 
                    SMBD,   1, 
                    HDAD,   1, 
                        ,   2, 
                    US6D,   1, 
                    US1D,   1, 
                    US2D,   1, 
                    US3D,   1, 
                    US4D,   1, 
                    US5D,   1, 
                    EH2D,   1, 
                    LPBD,   1, 
                    EH1D,   1, 
                    RP1D,   1, 
                    RP2D,   1, 
                    RP3D,   1, 
                    RP4D,   1, 
                    RP5D,   1, 
                    RP6D,   1, 
                    Offset (0x341B), 
                    THRD,   1, 
                    SA2D,   1
                }
            }

            Device (HDEF)
            {
                Name (_ADR, 0x001B0000)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x05, 
                    0x04
                })
            }

            Name (IQAA, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    Zero, 
                    0x10
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    Zero, 
                    0x13
                }
            })
            Name (IQAP, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    LPCB.LNKA, 
                    Zero
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    LPCB.LNKD, 
                    Zero
                }
            })
            Name (IQBA, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    Zero, 
                    0x11
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    Zero, 
                    0x10
                }
            })
            Name (IQBP, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    LPCB.LNKB, 
                    Zero
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    LPCB.LNKA, 
                    Zero
                }
            })
            Name (IQCA, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    Zero, 
                    0x12
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    Zero, 
                    0x11
                }
            })
            Name (IQCP, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    LPCB.LNKC, 
                    Zero
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    LPCB.LNKB, 
                    Zero
                }
            })
            Name (IQDA, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    Zero, 
                    0x13
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    Zero, 
                    0x12
                }
            })
            Name (IQDP, Package (0x04)
            {
                Package (0x04)
                {
                    0xFFFF, 
                    Zero, 
                    LPCB.LNKD, 
                    Zero
                }, 

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

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

                Package (0x04)
                {
                    0xFFFF, 
                    0x03, 
                    LPCB.LNKC, 
                    Zero
                }
            })
            Method (IRQM, 1, Serialized)
            {
                Switch (ToInteger (Arg0))
                {
                    Case (Package (0x02)
                        {
                            One, 
                            0x05
                        }

)
                    {
                        If (PICM)
                        {
                            Return (IQAA) /* \_SB_.PCI0.IQAA */
                        }
                        Else
                        {
                            Return (IQAP) /* \_SB_.PCI0.IQAP */
                        }
                    }
                    Case (Package (0x02)
                        {
                            0x02, 
                            0x06
                        }

)
                    {
                        If (PICM)
                        {
                            Return (IQBA) /* \_SB_.PCI0.IQBA */
                        }
                        Else
                        {
                            Return (IQBP) /* \_SB_.PCI0.IQBP */
                        }
                    }
                    Case (Package (0x02)
                        {
                            0x03, 
                            0x07
                        }

)
                    {
                        If (PICM)
                        {
                            Return (IQCA) /* \_SB_.PCI0.IQCA */
                        }
                        Else
                        {
                            Return (IQCP) /* \_SB_.PCI0.IQCP */
                        }
                    }
                    Case (Package (0x02)
                        {
                            0x04, 
                            0x08
                        }

)
                    {
                        If (PICM)
                        {
                            Return (IQDA) /* \_SB_.PCI0.IQDA */
                        }
                        Else
                        {
                            Return (IQDP) /* \_SB_.PCI0.IQDP */
                        }
                    }
                    Default
                    {
                        If (PICM)
                        {
                            Return (IQDA) /* \_SB_.PCI0.IQDA */
                        }
                        Else
                        {
                            Return (IQDP) /* \_SB_.PCI0.IQDP */
                        }
                    }

                }
            }

            Device (RP01)
            {
                Name (_ADR, 0x001C0000)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP02)
            {
                Name (_ADR, 0x001C0001)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP03)
            {
                Name (_ADR, 0x001C0002)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP04)
            {
                Name (_ADR, 0x001C0003)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP05)
            {
                Name (_ADR, 0x001C0004)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP06)
            {
                Name (_ADR, 0x001C0005)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP07)
            {
                Name (_ADR, 0x001C0006)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (RP08)
            {
                Name (_ADR, 0x001C0007)  // _ADR: Address
                OperationRegion (RPCS, PCI_Config, Zero, 0xFF)
                Field (RPCS, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x4C), 
                    Offset (0x4F), 
                    RPPN,   8, 
                    Offset (0x5A), 
                        ,   3, 
                    PDC,    1, 
                    Offset (0xDF), 
                        ,   6, 
                    HPCS,   1
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    Return (IRQM (RPPN))
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x001D0000)  // _ADR: Address
                OperationRegion (U01P, PCI_Config, Zero, 0x0100)
                Field (U01P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U1WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U1WE = 0x03
                    }
                    Else
                    {
                        U1WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0001)  // _ADR: Address
                OperationRegion (U02P, PCI_Config, Zero, 0x0100)
                Field (U02P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U2WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U2WE = 0x03
                    }
                    Else
                    {
                        U2WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001D0002)  // _ADR: Address
                OperationRegion (U03P, PCI_Config, Zero, 0x0100)
                Field (U03P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U3WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U3WE = 0x03
                    }
                    Else
                    {
                        U3WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (EHC1)
            {
                Name (_ADR, 0x001D0007)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x0D, 
                    0x04
                })
                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }

                Device (HUB7)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (PRT1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                    }

                    Device (PRT2)
                    {
                        Name (_ADR, 0x02)  // _ADR: Address
                    }

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                    }

                    Device (PRT4)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                    }

                    Device (PRT5)
                    {
                        Name (_ADR, 0x05)  // _ADR: Address
                    }

                    Device (PRT6)
                    {
                        Name (_ADR, 0x06)  // _ADR: Address
                    }
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0000)  // _ADR: Address
                OperationRegion (U01P, PCI_Config, Zero, 0x0100)
                Field (U01P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U1WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U1WE = 0x03
                    }
                    Else
                    {
                        U1WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001A0001)  // _ADR: Address
                OperationRegion (U02P, PCI_Config, Zero, 0x0100)
                Field (U02P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U2WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U2WE = 0x03
                    }
                    Else
                    {
                        U2WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (USB6)
            {
                Name (_ADR, 0x001A0002)  // _ADR: Address
                OperationRegion (U03P, PCI_Config, Zero, 0x0100)
                Field (U03P, DWordAcc, NoLock, Preserve)
                {
                    Offset (0xC4), 
                    U3WE,   2
                }

                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x03, 
                    0x04
                })
                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        U3WE = 0x03
                    }
                    Else
                    {
                        U3WE = Zero
                    }
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }
            }

            Device (EHC2)
            {
                Name (_ADR, 0x001A0007)  // _ADR: Address
                Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                {
                    0x0D, 
                    0x04
                })
                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    Return (0x02)
                }

                Method (_S4D, 0, NotSerialized)  // _S4D: S4 Device State
                {
                    Return (0x02)
                }

                Device (HUB7)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (PRT1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                    }

                    Device (PRT2)
                    {
                        Name (_ADR, 0x02)  // _ADR: Address
                    }

                    Device (PRT3)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                    }

                    Device (PRT4)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                    }

                    Device (PRT5)
                    {
                        Name (_ADR, 0x05)  // _ADR: Address
                    }

                    Device (PRT6)
                    {
                        Name (_ADR, 0x06)  // _ADR: Address
                    }
                }
            }

            Device (PCIB)
            {
                Name (_ADR, 0x001E0000)  // _ADR: Address
                Device (SLT1)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x04
                    })
                }

                Device (SLT2)
                {
                    Name (_ADR, 0x00010000)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x04
                    })
                }

                Device (SLT3)
                {
                    Name (_ADR, 0x00020000)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x04
                    })
                }

                Device (SLT6)
                {
                    Name (_ADR, 0x00050000)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x04
                    })
                }

                Device (LANC)
                {
                    Name (_ADR, 0x00080000)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x03
                    })
                }

                Device (LANR)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_PRW, Package (0x02)  // _PRW: Power Resources for Wake
                    {
                        0x0B, 
                        0x03
                    })
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (Package (0x18)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                Zero, 
                                0x10
                            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                Zero, 
                                Zero, 
                                0x10
                            }, 

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

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

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x03, 
                                Zero, 
                                0x13
                            }, 

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

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

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

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                0x03, 
                                Zero, 
                                0x10
                            }
                        })
                    }
                    Else
                    {
                        Return (Package (0x18)
                        {
                            Package (0x04)
                            {
                                0xFFFF, 
                                Zero, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

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

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

                            Package (0x04)
                            {
                                0xFFFF, 
                                0x03, 
                                ^^LPCB.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                Zero, 
                                ^^LPCB.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                One, 
                                ^^LPCB.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x02, 
                                ^^LPCB.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0001FFFF, 
                                0x03, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                Zero, 
                                ^^LPCB.LNKC, 
                                Zero
                            }, 

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

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x02, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0002FFFF, 
                                0x03, 
                                ^^LPCB.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                Zero, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                One, 
                                ^^LPCB.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x02, 
                                ^^LPCB.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0003FFFF, 
                                0x03, 
                                ^^LPCB.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                Zero, 
                                ^^LPCB.LNKA, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                One, 
                                ^^LPCB.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x02, 
                                ^^LPCB.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0004FFFF, 
                                0x03, 
                                ^^LPCB.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                Zero, 
                                ^^LPCB.LNKB, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                One, 
                                ^^LPCB.LNKC, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                0x02, 
                                ^^LPCB.LNKD, 
                                Zero
                            }, 

                            Package (0x04)
                            {
                                0x0005FFFF, 
                                0x03, 
                                ^^LPCB.LNKA, 
                                Zero
                            }
                        })
                    }
                }
            }

            Device (LPCB)
            {
                Name (_ADR, 0x001F0000)  // _ADR: Address
                OperationRegion (LPC0, PCI_Config, Zero, 0x0100)
                Field (LPC0, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x40), 
                    PMBS,   16, 
                    Offset (0x60), 
                    PRTA,   8, 
                    PRTB,   8, 
                    PRTC,   8, 
                    PRTD,   8, 
                    Offset (0x68), 
                    PRTE,   8, 
                    PRTF,   8, 
                    PRTG,   8, 
                    PRTH,   8, 
                    Offset (0x80), 
                    IOD0,   8, 
                    IOD1,   8
                }

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLA, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLA, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTA & 0x0F))
                        Return (RTLA) /* \_SB_.PCI0.LPCB.LNKA._CRS.RTLA */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLB, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLB, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTB & 0x0F))
                        Return (RTLB) /* \_SB_.PCI0.LPCB.LNKB._CRS.RTLB */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLC, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLC, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTC & 0x0F))
                        Return (RTLC) /* \_SB_.PCI0.LPCB.LNKC._CRS.RTLC */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLD, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLD, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTD & 0x0F))
                        Return (RTLD) /* \_SB_.PCI0.LPCB.LNKD._CRS.RTLD */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLE, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLE, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTE & 0x0F))
                        Return (RTLE) /* \_SB_.PCI0.LPCB.LNKE._CRS.RTLE */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLF, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLF, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTF & 0x0F))
                        Return (RTLF) /* \_SB_.PCI0.LPCB.LNKF._CRS.RTLF */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLG, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLG, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTG & 0x0F))
                        Return (RTLG) /* \_SB_.PCI0.LPCB.LNKG._CRS.RTLG */
                    }

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

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

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

                    Name (_PRS, ResourceTemplate ()  // _PRS: Possible Resource Settings
                    {
                        IRQ (Level, ActiveLow, Shared, )
                            {3,4,5,6,7,10,11,12,14,15}
                    })
                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (RTLH, ResourceTemplate ()
                        {
                            IRQ (Level, ActiveLow, Shared, )
                                {}
                        })
                        CreateWordField (RTLH, One, IRQ0)
                        IRQ0 = Zero
                        IRQ0 = (One << (PRTH & 0x0F))
                        Return (RTLH) /* \_SB_.PCI0.LPCB.LNKH._CRS.RTLH */
                    }

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

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

                Device (EC)
                {
                    Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
                    Name (_UID, Zero)  // _UID: Unique ID
                    Name (_GPE, 0x11)  // _GPE: General Purpose Events
                    Mutex (ECLK, 0x00)
                    OperationRegion (ERAM, EmbeddedControl, Zero, 0x0100)
                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x02), 
                        DKR1,   1, 
                        Offset (0x05), 
                        HSPA,   1, 
                        Offset (0x0C), 
                        LEDS,   8, 
                        Offset (0x0F), 
                            ,   7, 
                        TBSW,   1, 
                        Offset (0x1A), 
                        DKR2,   1, 
                        Offset (0x2A), 
                        EVNT,   8, 
                        Offset (0x2F), 
                            ,   6, 
                        FAND,   1, 
                        FANA,   1, 
                            ,   6, 
                        ALMT,   1, 
                        Offset (0x31), 
                            ,   2, 
                        UWBE,   1, 
                        Offset (0x3A), 
                        AMUT,   1, 
                            ,   3, 
                        BTEB,   1, 
                        WLEB,   1, 
                        WWEB,   1, 
                        Offset (0x3B), 
                            ,   1, 
                        KBLT,   1, 
                            ,   2, 
                        USPW,   1, 
                        Offset (0x48), 
                        HPPI,   1, 
                        GSTS,   1, 
                        Offset (0x4E), 
                        WAKE,   16, 
                        Offset (0x78), 
                        TMP0,   8, 
                        TMP1,   8, 
                        Offset (0x81), 
                        PAGE,   8, 
                        Offset (0xFE), 
                            ,   4, 
                        DKR3,   1
                    }

                    Method (_REG, 2, NotSerialized)  // _REG: Region Availability
                    {
                        If ((Arg1 == One))
                        {
                            If ((^HKEY.INIT == Zero))
                            {
                                ^HKEY.WBDC = BTEB /* \_SB_.PCI0.LPCB.EC__.BTEB */
                                ^HKEY.WWAN = WWEB /* \_SB_.PCI0.LPCB.EC__.WWEB */
                                ^HKEY.INIT = One
                            }
                        }
                    }

                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        Name (ECMD, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x0062,             // Range Minimum
                                0x0062,             // Range Maximum
                                0x01,               // Alignment
                                0x01,               // Length
                                )
                            IO (Decode16,
                                0x0066,             // Range Minimum
                                0x0066,             // Range Maximum
                                0x01,               // Alignment
                                0x01,               // Length
                                )
                        })
                        Return (ECMD) /* \_SB_.PCI0.LPCB.EC__._CRS.ECMD */
                    }

                    Method (TLED, 1, NotSerialized)
                    {
                        LEDS = Arg0
                    }

                    Method (LED, 2, NotSerialized)
                    {
                        TLED ((Arg0 | Arg1))
                    }

                    Method (_INI, 0, NotSerialized)  // _INI: Initialize
                    {
                    }

                    Method (MUTE, 1, NotSerialized)
                    {
                        AMUT = Arg0
                    }

                    Method (RADI, 1, NotSerialized)
                    {
                        WLEB = Arg0
                        WWEB = Arg0
                        BTEB = Arg0
                    }

                    Method (USBP, 1, NotSerialized)
                    {
                        USPW = Arg0
                    }

                    Method (LGHT, 1, NotSerialized)
                    {
                        KBLT = Arg0
                    }

                    Method (_Q13, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (SLPB, 0x80) // Status Change
                    }

                    Method (_Q14, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^^^GFX0.INCB ()
                    }

                    Method (_Q15, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^^^GFX0.DECB ()
                    }

                    Method (_Q16, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (GFX0, 0x82) // Device-Specific Change
                    }

                    Method (_Q26, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (AC, 0x80) // Status Change
                        PNOT ()
                    }

                    Method (_Q27, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (AC, 0x80) // Status Change
                        EVNT = 0x50
                        PNOT ()
                    }

                    Method (_Q2A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (LID, 0x80) // Status Change
                    }

                    Method (_Q2B, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (LID, 0x80) // Status Change
                    }

                    Method (_Q10, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (One)
                    }

                    Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x02)
                    }

                    Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x03)
                    }

                    Method (_Q64, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x05)
                    }

                    Method (_Q65, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x06)
                    }

                    Method (_Q17, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x08)
                    }

                    Method (_Q66, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0A)
                    }

                    Method (_Q6A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x1B)
                    }

                    Method (_Q1A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0B)
                    }

                    Method (_Q1B, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0C)
                    }

                    Method (_Q62, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0D)
                    }

                    Method (_Q60, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0E)
                    }

                    Method (_Q61, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x0F)
                    }

                    Method (_Q1F, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x12)
                    }

                    Method (_Q67, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x13)
                    }

                    Method (_Q63, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x14)
                    }

                    Method (_Q19, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x18)
                    }

                    Method (_Q1C, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x19)
                    }

                    Method (_Q1D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RHK (0x1A)
                    }

                    Method (_Q5C, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RTAB (0x0B)
                    }

                    Method (_Q5D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RTAB (0x0C)
                    }

                    Method (_Q5E, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RTAB (0x09)
                    }

                    Method (_Q5F, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        ^HKEY.RTAB (0x0A)
                    }

                    Method (FANE, 1, Serialized)
                    {
                        If (Arg0)
                        {
                            FAND = One
                            FANA = Zero
                        }
                        Else
                        {
                            FAND = Zero
                            FANA = One
                        }
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x46), 
                            ,   4, 
                        HPAC,   1
                    }

                    Device (AC)
                    {
                        Name (_HID, "ACPI0003" /* Power Source Device */)  // _HID: Hardware ID
                        Name (_UID, Zero)  // _UID: Unique ID
                        Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
                        {
                            _SB
                        })
                        Method (_PSR, 0, NotSerialized)  // _PSR: Power Source
                        {
                            Local0 = HPAC /* \_SB_.PCI0.LPCB.EC__.HPAC */
                            PWRS = Local0
                            PNOT ()
                            Return (Local0)
                        }

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

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x38), 
                        B0ST,   4, 
                            ,   1, 
                        B0CH,   1, 
                        B0DI,   1, 
                        B0PR,   1, 
                        B1ST,   4, 
                            ,   1, 
                        B1CH,   1, 
                        B1DI,   1, 
                        B1PR,   1
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                        BARC,   16, 
                        BAFC,   16, 
                        Offset (0xA8), 
                        BAPR,   16, 
                        BAVO,   16
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                            ,   15, 
                        BAMA,   1
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                        BADC,   16, 
                        BADV,   16, 
                        Offset (0xA6), 
                        Offset (0xA8), 
                        Offset (0xAA), 
                        BASN,   16
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                        BATY,   32
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                        BAOE,   128
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0xA0), 
                        BANA,   128
                    }

                    Method (BPAG, 1, NotSerialized)
                    {
                        PAGE = Arg0
                    }

                    Method (BSTA, 4, NotSerialized)
                    {
                        Acquire (ECLK, 0xFFFF)
                        Local0 = Zero
                        BPAG ((Arg0 | One))
                        Local1 = BAMA /* \_SB_.PCI0.LPCB.EC__.BAMA */
                        BPAG (Arg0)
                        Local2 = BAPR /* \_SB_.PCI0.LPCB.EC__.BAPR */
                        If (Arg2)
                        {
                            Local0 |= 0x02
                        }
                        ElseIf (Arg3)
                        {
                            Local0 |= One
                            Local2 = (0x00010000 - Local2)
                        }
                        Else
                        {
                            Local2 = Zero
                        }

                        If ((Local2 >= 0x8000))
                        {
                            Local2 = Zero
                        }

                        Arg1 [Zero] = Local0
                        If (Local1)
                        {
                            Arg1 [0x02] = (BARC * 0x0A)
                            Local2 *= BAVO /* \_SB_.PCI0.LPCB.EC__.BAVO */
                            Arg1 [One] = (Local2 / 0x03E8)
                        }
                        Else
                        {
                            Arg1 [0x02] = BARC /* \_SB_.PCI0.LPCB.EC__.BARC */
                            Arg1 [One] = Local2
                        }

                        Arg1 [0x03] = BAVO /* \_SB_.PCI0.LPCB.EC__.BAVO */
                        Release (ECLK)
                        Return (Arg1)
                    }

                    Method (BINF, 2, Serialized)
                    {
                        Acquire (ECLK, 0xFFFF)
                        BPAG ((One | Arg1))
                        Arg0 [Zero] = (BAMA ^ One)
                        Local0 = BAMA /* \_SB_.PCI0.LPCB.EC__.BAMA */
                        BPAG (Arg1)
                        Local2 = BAFC /* \_SB_.PCI0.LPCB.EC__.BAFC */
                        BPAG ((Arg1 | 0x02))
                        Local1 = BADC /* \_SB_.PCI0.LPCB.EC__.BADC */
                        If (Local0)
                        {
                            Local1 *= 0x0A
                            Local2 *= 0x0A
                        }

                        Arg0 [One] = Local1
                        Arg0 [0x02] = Local2
                        Arg0 [0x04] = BADV /* \_SB_.PCI0.LPCB.EC__.BADV */
                        Local0 = (Local2 % 0x14)
                        Arg0 [0x05] = (Local2 / 0x14)
                        Local0 = BASN /* \_SB_.PCI0.LPCB.EC__.BASN */
                        Name (SERN, Buffer (0x06)
                        {
                            "     "
                        })
                        Local1 = 0x04
                        While (Local0)
                        {
                            Local2 = (Local0 % 0x0A)
                            Local0 /= 0x0A
                            SERN [Local1] = (Local2 + 0x30)
                            Local1--
                        }

                        Arg0 [0x0A] = SERN /* \_SB_.PCI0.LPCB.EC__.BINF.SERN */
                        BPAG ((0x04 | Arg1))
                        Name (TYPE, Buffer (0x05)
                        {
                             0x00, 0x00, 0x00, 0x00, 0x00                     // .....
                        })
                        TYPE = BATY /* \_SB_.PCI0.LPCB.EC__.BATY */
                        Arg0 [0x0B] = TYPE /* \_SB_.PCI0.LPCB.EC__.BINF.TYPE */
                        BPAG ((Arg1 | 0x05))
                        Arg0 [0x0C] = BAOE /* \_SB_.PCI0.LPCB.EC__.BAOE */
                        BPAG ((Arg1 | 0x06))
                        Arg0 [0x09] = BANA /* \_SB_.PCI0.LPCB.EC__.BANA */
                        Release (ECLK)
                        Return (Arg0)
                    }

                    Device (BAT0)
                    {
                        Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
                        Name (_UID, Zero)  // _UID: Unique ID
                        Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
                        {
                            _SB
                        })
                        Name (BATS, Package (0x0D)
                        {
                            Zero, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            One, 
                            0x2A30, 
                            Zero, 
                            0xC8, 
                            One, 
                            One, 
                            "", 
                            "", 
                            "", 
                            ""
                        })
                        Method (_BIF, 0, NotSerialized)  // _BIF: Battery Information
                        {
                            Return (BINF (BATS, Zero))
                        }

                        Name (BATI, Package (0x04)
                        {
                            Zero, 
                            Zero, 
                            Zero, 
                            Zero
                        })
                        Method (_BST, 0, NotSerialized)  // _BST: Battery Status
                        {
                            If (B0PR)
                            {
                                Return (BSTA (Zero, BATI, B0CH, B0DI))
                            }
                            Else
                            {
                                Return (Package (0x04)
                                {
                                    Zero, 
                                    Zero, 
                                    Zero, 
                                    Zero
                                })
                            }
                        }

                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            If (B0PR)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }
                    }

                    Device (BAT1)
                    {
                        Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */)  // _HID: Hardware ID
                        Name (_UID, Zero)  // _UID: Unique ID
                        Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
                        {
                            _SB
                        })
                        Name (BATS, Package (0x0D)
                        {
                            Zero, 
                            0xFFFFFFFF, 
                            0xFFFFFFFF, 
                            One, 
                            0x2A30, 
                            Zero, 
                            0xC8, 
                            One, 
                            One, 
                            "", 
                            "", 
                            "", 
                            ""
                        })
                        Method (_BIF, 0, NotSerialized)  // _BIF: Battery Information
                        {
                            Return (BINF (BATS, 0x10))
                        }

                        Name (BATI, Package (0x04)
                        {
                            Zero, 
                            Zero, 
                            Zero, 
                            Zero
                        })
                        Method (_BST, 0, NotSerialized)  // _BST: Battery Status
                        {
                            If (B1PR)
                            {
                                Return (BSTA (0x10, BATI, B1CH, B1DI))
                            }
                            Else
                            {
                                Return (Package (0x04)
                                {
                                    Zero, 
                                    Zero, 
                                    Zero, 
                                    Zero
                                })
                            }
                        }

                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            If (B1PR)
                            {
                                Return (0x1F)
                            }
                            Else
                            {
                                Return (0x0F)
                            }
                        }
                    }

                    Method (_Q24, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT0, 0x80) // Status Change
                    }

                    Method (_Q25, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT1, 0x80) // Status Change
                    }

                    Method (_Q4A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT0, 0x81) // Information Change
                    }

                    Method (_Q4B, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT0, 0x80) // Status Change
                    }

                    Method (_Q4C, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT1, 0x81) // Information Change
                    }

                    Method (_Q4D, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
                    {
                        Notify (BAT1, 0x80) // Status Change
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x32), 
                            ,   4, 
                        WKFN,   1, 
                        Offset (0x83), 
                        FNKY,   8
                    }

                    Device (SLPB)
                    {
                        Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */)  // _HID: Hardware ID
                        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                        {
                            Return (Package (0x02)
                            {
                                0x18, 
                                0x03
                            })
                        }

                        Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                        {
                            If (Arg0)
                            {
                                FNKY = 0x06
                                WKFN = One
                            }
                            Else
                            {
                                FNKY = Zero
                                WKFN = Zero
                            }
                        }
                    }

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x32), 
                            ,   2, 
                        WKLD,   1, 
                        Offset (0x46), 
                            ,   2, 
                        LIDS,   1
                    }

                    Device (LID)
                    {
                        Name (_HID, "PNP0C0D" /* Lid Device */)  // _HID: Hardware ID
                        Method (_LID, 0, NotSerialized)  // _LID: Lid Status
                        {
                            Return (LIDS) /* \_SB_.PCI0.LPCB.EC__.LIDS */
                        }

                        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                        {
                            Return (Package (0x02)
                            {
                                0x18, 
                                0x03
                            })
                        }

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

                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x06), 
                        SNDS,   8
                    }

                    Method (BEEP, 1, NotSerialized)
                    {
                        SNDS = Arg0
                    }

                    Scope (\_TZ)
                    {
                        Method (C2K, 1, NotSerialized)
                        {
                            Local0 = (Arg0 * 0x0A)
                            Local0 += 0x0AAC
                            If ((Local0 <= 0x0AAC))
                            {
                                Return (0x0BB8)
                            }

                            If ((Local0 > 0x0FAC))
                            {
                                Return (0x0BB8)
                            }

                            Return (Local0)
                        }

                        ThermalZone (THM0)
                        {
                            Name (_TZP, 0x64)  // _TZP: Thermal Zone Polling
                            Name (_TSP, 0x64)  // _TSP: Thermal Sampling Period
                            Name (_TC1, 0x02)  // _TC1: Thermal Constant 1
                            Name (_TC2, 0x05)  // _TC2: Thermal Constant 2
                            Method (_PSL, 0, Serialized)  // _PSL: Passive List
                            {
                                Return (PPKG) /* \PPKG */
                            }

                            Method (GCRT, 0, NotSerialized)
                            {
                                Local0 = TCRT /* \TCRT */
                                If ((Local0 > Zero))
                                {
                                    Return (Local0)
                                }

                                Return (0x7F)
                            }

                            Method (GPSV, 0, NotSerialized)
                            {
                                Local0 = TPSV /* \TPSV */
                                If ((Local0 > Zero))
                                {
                                    Return (Local0)
                                }

                                Return (0x5F)
                            }

                            Method (_CRT, 0, NotSerialized)  // _CRT: Critical Temperature
                            {
                                Return (C2K (GCRT ()))
                            }

                            Method (_PSV, 0, NotSerialized)  // _PSV: Passive Temperature
                            {
                                Return (C2K (GPSV ()))
                            }

                            Method (_TMP, 0, NotSerialized)  // _TMP: Temperature
                            {
                                Return (C2K (\_SB.PCI0.LPCB.EC.TMP0))
                            }

                            Method (_AC0, 0, NotSerialized)  // _ACx: Active Cooling, x=0-9
                            {
                                Local0 = GPSV ()
                                Local0 -= 0x0A
                                If (FLVL)
                                {
                                    Local0 -= 0x05
                                }

                                Return (C2K (Local0))
                            }

                            Name (_AL0, Package (0x01)  // _ALx: Active List, x=0-9
                            {
                                FAN
                            })
                            PowerResource (FPWR, 0x00, 0x0000)
                            {
                                Method (_STA, 0, NotSerialized)  // _STA: Status
                                {
                                    Return (FLVL) /* \FLVL */
                                }

                                Method (_ON, 0, NotSerialized)  // _ON_: Power On
                                {
                                    \_SB.PCI0.LPCB.EC.FANE (One)
                                    FLVL = One
                                    Notify (THM0, 0x81) // Thermal Trip Point Change
                                }

                                Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
                                {
                                    \_SB.PCI0.LPCB.EC.FANE (Zero)
                                    FLVL = Zero
                                    Notify (THM0, 0x81) // Thermal Trip Point Change
                                }
                            }

                            Device (FAN)
                            {
                                Name (_HID, EisaId ("PNP0C0B") /* Fan (Thermal Solution) */)  // _HID: Hardware ID
                                Name (_PR0, Package (0x01)  // _PR0: Power Resources for D0
                                {
                                    FPWR
                                })
                            }
                        }

                        ThermalZone (THM1)
                        {
                            Name (_TZP, 0x64)  // _TZP: Thermal Zone Polling
                            Name (_TSP, 0x64)  // _TSP: Thermal Sampling Period
                            Name (_TC1, 0x02)  // _TC1: Thermal Constant 1
                            Name (_TC2, 0x05)  // _TC2: Thermal Constant 2
                            Method (_PSL, 0, Serialized)  // _PSL: Passive List
                            {
                                Return (PPKG) /* \PPKG */
                            }

                            Method (_CRT, 0, NotSerialized)  // _CRT: Critical Temperature
                            {
                                Return (C2K (0x63))
                            }

                            Method (_PSV, 0, NotSerialized)  // _PSV: Passive Temperature
                            {
                                Return (C2K (0x5E))
                            }

                            Method (_TMP, 0, NotSerialized)  // _TMP: Temperature
                            {
                                Return (C2K (\_SB.PCI0.LPCB.EC.TMP1))
                            }
                        }
                    }

                    Scope (\_SI)
                    {
                        Method (_SST, 1, NotSerialized)  // _SST: System Status
                        {
                            If ((Arg0 == Zero))
                            {
                                \_SB.PCI0.LPCB.EC.TLED (Zero)
                                \_SB.PCI0.LPCB.EC.TLED (0x07)
                            }

                            If ((Arg0 == One))
                            {
                                \_SB.PCI0.LPCB.EC.TLED (0x80)
                                \_SB.PCI0.LPCB.EC.TLED (0x07)
                            }

                            If ((Arg0 == 0x02))
                            {
                                \_SB.PCI0.LPCB.EC.TLED (0x80)
                                \_SB.PCI0.LPCB.EC.TLED (0xC7)
                            }

                            If ((Arg0 == 0x03))
                            {
                                \_SB.PCI0.LPCB.EC.TLED (0xA0)
                                \_SB.PCI0.LPCB.EC.TLED (0x87)
                            }
                        }
                    }

                    Device (HKEY)
                    {
                        Name (_HID, EisaId ("IBM0068"))  // _HID: Hardware ID
                        Name (BTN, Zero)
                        Name (BTAB, Zero)
                        Name (DHKN, 0x080C)
                        Name (EMSK, Zero)
                        Name (ETAB, Zero)
                        Name (EN, Zero)
                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            Return (0x0F)
                        }

                        Method (MHKP, 0, NotSerialized)
                        {
                            Local0 = BTN /* \_SB_.PCI0.LPCB.EC__.HKEY.BTN_ */
                            If ((Local0 != Zero))
                            {
                                BTN = Zero
                                Local0 += 0x1000
                                Return (Local0)
                            }

                            Local0 = BTAB /* \_SB_.PCI0.LPCB.EC__.HKEY.BTAB */
                            If ((Local0 != Zero))
                            {
                                BTAB = Zero
                                Local0 += 0x5000
                                Return (Local0)
                            }

                            Return (Zero)
                        }

                        Method (RHK, 1, NotSerialized)
                        {
                            Local0 = (One << (Arg0 - One))
                            If ((EMSK & Local0))
                            {
                                BTN = Arg0
                                Notify (HKEY, 0x80) // Status Change
                            }
                        }

                        Method (RTAB, 1, NotSerialized)
                        {
                            Local0 = (One << (Arg0 - One))
                            If ((ETAB & Local0))
                            {
                                BTAB = Arg0
                                Notify (HKEY, 0x80) // Status Change
                            }
                        }

                        Method (MHKC, 1, NotSerialized)
                        {
                            If (Arg0)
                            {
                                EMSK = DHKN /* \_SB_.PCI0.LPCB.EC__.HKEY.DHKN */
                                ETAB = Ones
                            }
                            Else
                            {
                                EMSK = Zero
                                ETAB = Zero
                            }

                            EN = Arg0
                        }

                        Method (MHKM, 2, NotSerialized)
                        {
                            If ((Arg0 <= 0x20))
                            {
                                Local0 = (One << (Arg0 - One))
                                If (Arg1)
                                {
                                    DHKN |= Local0
                                }
                                Else
                                {
                                    DHKN &= ~Local0
                                }

                                If (EN)
                                {
                                    EMSK = DHKN /* \_SB_.PCI0.LPCB.EC__.HKEY.DHKN */
                                }
                            }
                        }

                        Method (MHKA, 0, NotSerialized)
                        {
                            Return (0x07FFFFFF)
                        }

                        Method (MHKG, 0, NotSerialized)
                        {
                            Return ((TBSW << 0x03))
                        }

                        Method (SSMS, 1, NotSerialized)
                        {
                            ALMT = Arg0
                        }

                        Method (MMTS, 1, NotSerialized)
                        {
                            If (Arg0)
                            {
                                TLED (0x8E)
                            }
                            Else
                            {
                                TLED (0x0E)
                            }
                        }

                        Method (MHKV, 0, NotSerialized)
                        {
                            Return (0x0100)
                        }

                        Method (WLSW, 0, NotSerialized)
                        {
                            Return (GSTS) /* \_SB_.PCI0.LPCB.EC__.GSTS */
                        }

                        Name (INIT, Zero)
                        Name (HAST, Zero)
                        Name (WBDC, Zero)
                        Method (GBDC, 0, NotSerialized)
                        {
                            HAST = One
                            If (HBDC)
                            {
                                Local0 = One
                                If (BTEB)
                                {
                                    Local0 |= 0x02
                                }

                                Local0 |= (WBDC << 0x02)
                                Return (Local0)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (SBDC, 1, NotSerialized)
                        {
                            HAST = One
                            If (HBDC)
                            {
                                Local0 = ((Arg0 & 0x02) >> One)
                                BTEB = Local0
                                Local0 = ((Arg0 & 0x04) >> 0x02)
                                WBDC = Local0
                            }
                        }

                        Name (WWAN, Zero)
                        Method (GWAN, 0, NotSerialized)
                        {
                            HAST = One
                            If (HWAN)
                            {
                                Local0 = One
                                If (WWEB)
                                {
                                    Local0 |= 0x02
                                }

                                Local0 |= (WWAN << 0x02)
                                Return (Local0)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (SWAN, 1, NotSerialized)
                        {
                            HAST = One
                            If (HWAN)
                            {
                                Local0 = ((Arg0 & 0x02) >> One)
                                WWEB = Local0
                                WWAN = ((Arg0 & 0x04) >> 0x02)
                            }
                        }

                        Method (MLCG, 1, NotSerialized)
                        {
                            If (HKBL)
                            {
                                Local0 = 0x0200
                                Local0 |= KBLT /* \_SB_.PCI0.LPCB.EC__.KBLT */
                                Return (Local0)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (MLCS, 1, NotSerialized)
                        {
                            If (HKBL)
                            {
                                WWEB = (Arg0 & One)
                            }
                        }

                        Method (GUWB, 0, NotSerialized)
                        {
                            If (HUWB)
                            {
                                Local0 = One
                                If (UWBE)
                                {
                                    Local0 |= 0x02
                                }

                                Return (Local0)
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }

                        Method (SUWB, 1, NotSerialized)
                        {
                            If (HUWB)
                            {
                                Local0 = ((Arg0 & 0x02) >> One)
                                UWBE = Local0
                            }
                        }

                        Method (WAKE, 1, NotSerialized)
                        {
                            If (HAST)
                            {
                                BTEB = WBDC /* \_SB_.PCI0.LPCB.EC__.HKEY.WBDC */
                                WWEB = WWAN /* \_SB_.PCI0.LPCB.EC__.HKEY.WWAN */
                            }
                        }

                        Method (BCSS, 1, NotSerialized)
                        {
                            Local0 = (Arg0 & 0xFF)
                            Local1 = ((Arg0 >> 0x08) & 0x03)
                            If ((Local1 == Zero))
                            {
                                ^^BAT0.SETT (One, Local0)
                                ^^BAT1.SETT (One, Local0)
                                Local2 = (Local0 != ^^BAT0.GETT (One))
                                Local3 = (Local0 != ^^BAT1.GETT (One))
                                Return (((Local2 && Local3) << 0x1F))
                            }

                            If ((Local1 == One))
                            {
                                ^^BAT0.SETT (One, Local0)
                                Return (((Local0 != ^^BAT0.GETT (One)) << 0x1F))
                            }

                            If ((Local1 == 0x02))
                            {
                                ^^BAT1.SETT (One, Local0)
                                Return (((Local0 != ^^BAT1.GETT (One)) << 0x1F))
                            }

                            Return (0x80000000)
                        }

                        Method (BCCS, 1, NotSerialized)
                        {
                            Local0 = (Arg0 & 0xFF)
                            Local1 = ((Arg0 >> 0x08) & 0x03)
                            If ((Local1 == Zero))
                            {
                                ^^BAT0.SETT (Zero, Local0)
                                ^^BAT1.SETT (Zero, Local0)
                                Local2 = (Local0 != ^^BAT0.GETT (Zero))
                                Local3 = (Local0 != ^^BAT1.GETT (Zero))
                                Return (((Local2 && Local3) << 0x1F))
                            }

                            If ((Local1 == One))
                            {
                                ^^BAT0.SETT (Zero, Local0)
                                Return (((Local0 != ^^BAT0.GETT (Zero)) << 0x1F))
                            }

                            If ((Local1 == 0x02))
                            {
                                ^^BAT1.SETT (Zero, Local0)
                                Return (((Local0 != ^^BAT1.GETT (Zero)) << 0x1F))
                            }

                            Return (0x80000000)
                        }

                        Method (BCSG, 1, NotSerialized)
                        {
                            If ((Arg0 == One))
                            {
                                Return ((0x0300 | ^^BAT0.GETT (One)))
                            }

                            If ((Arg0 == 0x02))
                            {
                                Return ((0x0300 | ^^BAT1.GETT (One)))
                            }

                            Return (0x80000000)
                        }

                        Method (BCTG, 1, NotSerialized)
                        {
                            If ((Arg0 == One))
                            {
                                Return ((0x0300 | ^^BAT0.GETT (Zero)))
                            }

                            If ((Arg0 == 0x02))
                            {
                                Return ((0x0300 | ^^BAT1.GETT (Zero)))
                            }

                            Return (0x80000000)
                        }
                    }
                }

                Scope (EC)
                {
                    Field (ERAM, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x03), 
                            ,   2, 
                        BSTP,   1, 
                        Offset (0x24), 
                        TSH0,   8, 
                        TSH1,   8
                    }
                }

                Scope (EC.BAT0)
                {
                    Method (SETT, 2, NotSerialized)
                    {
                        If (((Arg0 <= One) && (Arg1 <= 0x64)))
                        {
                            BSTP = Arg0
                            TSH0 = (Arg1 | 0x80)
                        }
                    }

                    Method (GETT, 1, NotSerialized)
                    {
                        If ((Arg0 <= One))
                        {
                            BSTP = Arg0
                            Return ((TSH0 & 0xFFFFFFFFFFFFFF7F))
                        }

                        Return (Zero)
                    }
                }

                Scope (EC.BAT1)
                {
                    Method (SETT, 2, NotSerialized)
                    {
                        If (((Arg0 <= One) && (Arg1 <= 0x64)))
                        {
                            BSTP = Arg0
                            TSH1 = (Arg1 | 0x80)
                        }
                    }

                    Method (GETT, 1, NotSerialized)
                    {
                        If ((Arg0 <= One))
                        {
                            BSTP = Arg0
                            Return ((TSH1 & 0xFFFFFFFFFFFFFF7F))
                        }

                        Return (Zero)
                    }
                }

                Device (DMAC)
                {
                    Name (_HID, EisaId ("PNP0200") /* PC-class DMA Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x01,               // Alignment
                            0x11,               // Length
                            )
                        IO (Decode16,
                            0x0093,             // Range Minimum
                            0x0093,             // Range Maximum
                            0x01,               // Alignment
                            0x0D,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x01,               // Alignment
                            0x20,               // Length
                            )
                        DMA (Compatibility, NotBusMaster, Transfer8_16, )
                            {4}
                    })
                }

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

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103") /* HPET System Timer */)  // _HID: Hardware ID
                    Name (_CID, EisaId ("PNP0C01") /* System Board */)  // _CID: Compatible ID
                    Name (BUF0, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            _Y01)
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (HPTS (HPTE))
                    }

                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
                    {
                        If (HPTE)
                        {
                            CreateDWordField (BUF0, \_SB.PCI0.LPCB.HPET._Y01._BAS, HPT0)  // _BAS: Base Address
                            If ((HPAS == One))
                            {
                                HPT0 = 0xFED01000
                            }

                            If ((HPAS == 0x02))
                            {
                                HPT0 = 0xFED02000
                            }

                            If ((HPAS == 0x03))
                            {
                                HPT0 = 0xFED03000
                            }
                        }

                        Return (BUF0) /* \_SB_.PCI0.LPCB.HPET.BUF0 */
                    }
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000") /* 8259-compatible Programmable Interrupt Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0020,             // Range Minimum
                            0x0020,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0024,             // Range Minimum
                            0x0024,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0028,             // Range Minimum
                            0x0028,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x002C,             // Range Minimum
                            0x002C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0030,             // Range Minimum
                            0x0030,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0034,             // Range Minimum
                            0x0034,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0038,             // Range Minimum
                            0x0038,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x003C,             // Range Minimum
                            0x003C,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A4,             // Range Minimum
                            0x00A4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A8,             // Range Minimum
                            0x00A8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00AC,             // Range Minimum
                            0x00AC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B0,             // Range Minimum
                            0x00B0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B4,             // Range Minimum
                            0x00B4,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00B8,             // Range Minimum
                            0x00B8,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00BC,             // Range Minimum
                            0x00BC,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (MATH)
                {
                    Name (_HID, EisaId ("PNP0C04") /* x87-compatible Floating Point Processing Unit */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x00F0,             // Range Minimum
                            0x00F0,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (LDRC)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, 0x02)  // _UID: Unique ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x002E,             // Range Minimum
                            0x002E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x004E,             // Range Minimum
                            0x004E,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0092,             // Range Minimum
                            0x0092,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00B2,             // Range Minimum
                            0x00B2,             // Range Maximum
                            0x01,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0800,             // Range Minimum
                            0x0800,             // Range Maximum
                            0x01,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0500,             // Range Minimum
                            0x0500,             // Range Maximum
                            0x01,               // Alignment
                            0x80,               // Length
                            )
                        IO (Decode16,
                            0x0580,             // Range Minimum
                            0x0580,             // Range Maximum
                            0x01,               // Alignment
                            0x40,               // Length
                            )
                    })
                }

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

                Device (TIMR)
                {
                    Name (_HID, EisaId ("PNP0100") /* PC-class System Timer */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0040,             // Range Minimum
                            0x0040,             // Range Maximum
                            0x01,               // Alignment
                            0x04,               // Length
                            )
                        IO (Decode16,
                            0x0050,             // Range Minimum
                            0x0050,             // Range Maximum
                            0x10,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */)  // _HID: Hardware ID
                    Name (_CID, EisaId ("PNP030B"))  // _CID: Compatible ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x01,               // Alignment
                            0x01,               // Length
                            )
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {1}
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (0x0F)
                    }
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F13") /* PS/2 Mouse */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IRQ (Edge, ActiveHigh, Exclusive, )
                            {12}
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (0x0F)
                    }
                }
            }

            Device (AHC1)
            {
                Name (_ADR, 0x001F0002)  // _ADR: Address
                Device (PRID)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, Serialized)  // _GTM: Get Timing Mode
                    {
                        Name (PBUF, Buffer (0x14)
                        {
                            /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                            /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                            /* 0010 */  0x00, 0x00, 0x00, 0x00                           // ....
                        })
                        CreateDWordField (PBUF, Zero, PIO0)
                        CreateDWordField (PBUF, 0x04, DMA0)
                        CreateDWordField (PBUF, 0x08, PIO1)
                        CreateDWordField (PBUF, 0x0C, DMA1)
                        CreateDWordField (PBUF, 0x10, FLAG)
                        Return (PBUF) /* \_SB_.PCI0.AHC1.PRID._GTM.PBUF */
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        CreateDWordField (Arg0, Zero, PIO0)
                        CreateDWordField (Arg0, 0x04, DMA0)
                        CreateDWordField (Arg0, 0x08, PIO1)
                        CreateDWordField (Arg0, 0x0C, DMA1)
                        CreateDWordField (Arg0, 0x10, FLAG)
                    }

                    Device (DSK0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                    }

                    Device (DSK1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                    }
                }
            }

            Device (AHC2)
            {
                Name (_ADR, 0x001F0005)  // _ADR: Address
                Device (PRID)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, Serialized)  // _GTM: Get Timing Mode
                    {
                        Name (PBUF, Buffer (0x14)
                        {
                            /* 0000 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                            /* 0008 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                            /* 0010 */  0x00, 0x00, 0x00, 0x00                           // ....
                        })
                        CreateDWordField (PBUF, Zero, PIO0)
                        CreateDWordField (PBUF, 0x04, DMA0)
                        CreateDWordField (PBUF, 0x08, PIO1)
                        CreateDWordField (PBUF, 0x0C, DMA1)
                        CreateDWordField (PBUF, 0x10, FLAG)
                        Return (PBUF) /* \_SB_.PCI0.AHC2.PRID._GTM.PBUF */
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        CreateDWordField (Arg0, Zero, PIO0)
                        CreateDWordField (Arg0, 0x04, DMA0)
                        CreateDWordField (Arg0, 0x08, PIO1)
                        CreateDWordField (Arg0, 0x0C, DMA1)
                        CreateDWordField (Arg0, 0x10, FLAG)
                    }

                    Device (DSK0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                    }

                    Device (DSK1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                    }
                }
            }

            Device (SBUS)
            {
                Name (_ADR, 0x001F0003)  // _ADR: Address
            }

            Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
            {
                If ((Arg0 == ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
                {
                    Return (Arg3)
                }
                Else
                {
                    CreateDWordField (Arg3, Zero, CDW1)
                    CDW1 |= 0x04
                    Return (Arg3)
                }
            }

            Scope (GFX0)
            {
                OperationRegion (GFXC, PCI_Config, Zero, 0x0100)
                Field (GFXC, DWordAcc, NoLock, Preserve)
                {
                    Offset (0x10), 
                    BAR0,   64, 
                    Offset (0xE4), 
                    ASLE,   32, 
                    Offset (0xFC), 
                    ASLS,   32
                }

                OperationRegion (GFRG, SystemMemory, (BAR0 & 0xFFFFFFFFFFFFFFF0), 0x00400000)
                Field (GFRG, DWordAcc, NoLock, Preserve)
                {
                    Offset (0x61254), 
                    BCLV,   16
                }

                Field (GFRG, DWordAcc, NoLock, Preserve)
                {
                    Offset (0x61256), 
                    BCLM,   16
                }

                Device (BOX3)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    OperationRegion (OPRG, SystemMemory, ASLS, 0x2000)
                    Field (OPRG, DWordAcc, NoLock, Preserve)
                    {
                        Offset (0x58), 
                        MBOX,   32, 
                        Offset (0x300), 
                        ARDY,   1, 
                        Offset (0x304), 
                        ASLC,   32, 
                        TCHE,   32, 
                        ALSI,   32, 
                        BCLP,   32, 
                        PFIT,   32, 
                        CBLV,   32
                    }

                    Method (XBCM, 1, Serialized)
                    {
                        If ((ASLS == Zero))
                        {
                            Return (Ones)
                        }

                        If (((MBOX & 0x04) == Zero))
                        {
                            Return (Ones)
                        }

                        Local1 = ((Arg0 * 0xFF) / 0x64)
                        If ((Local1 > 0xFF))
                        {
                            Local1 = 0xFF
                        }

                        BCLP = (Local1 | 0x80000000)
                        If ((ARDY == Zero))
                        {
                            Return (Ones)
                        }

                        ASLC = 0x02
                        ASLE = One
                        Local0 = 0x20
                        While ((Local0 > Zero))
                        {
                            Sleep (One)
                            If (((ASLC & 0x02) == Zero))
                            {
                                Local1 = ((ASLC >> 0x0C) & 0x03)
                                If ((Local1 == Zero))
                                {
                                    Return (Zero)
                                }
                                Else
                                {
                                    Return (Ones)
                                }
                            }

                            Local0--
                        }

                        Return (Ones)
                    }
                }

                Device (LEGA)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (DRCL, 2, NotSerialized)
                    {
                        Return (((Arg0 + (Arg1 / 0x02)) / Arg1))
                    }

                    Method (XBCM, 1, NotSerialized)
                    {
                        BCLV = DRCL ((Arg0 * BCLM), 0x64)
                    }

                    Method (XBQC, 0, NotSerialized)
                    {
                        If ((BCLM == Zero))
                        {
                            Return (Zero)
                        }

                        Local0 = DRCL ((BCLV * 0x64), BCLM)
                        Local1 = 0x02
                        While ((Local1 < (SizeOf (BRIG) - One)))
                        {
                            Local2 = DerefOf (BRIG [Local1])
                            Local3 = DerefOf (BRIG [(Local1 + One)])
                            If ((Local0 < Local3))
                            {
                                If (((Local0 < Local2) || ((Local0 - Local2) < (Local3 - 
                                    Local0))))
                                {
                                    Return (Local2)
                                }
                                Else
                                {
                                    Return (Local3)
                                }
                            }

                            Local1++
                        }

                        Return (Local3)
                    }
                }

                Method (XBCM, 1, NotSerialized)
                {
                    If ((^BOX3.XBCM (Arg0) == Ones))
                    {
                        ^LEGA.XBCM (Arg0)
                    }
                }

                Method (XBQC, 0, NotSerialized)
                {
                    Return (^LEGA.XBQC ())
                }

                Name (BRCT, Zero)
                Method (BRID, 1, NotSerialized)
                {
                    Local0 = Match (BRIG, MEQ, Arg0, MTR, Zero, 0x02)
                    If ((Local0 == Ones))
                    {
                        Return ((SizeOf (BRIG) - One))
                    }

                    Return (Local0)
                }

                Method (XBCL, 0, NotSerialized)
                {
                    BRCT = One
                    Return (BRIG) /* \_SB_.PCI0.GFX0.BRIG */
                }

                Method (_DOS, 1, NotSerialized)  // _DOS: Disable Output Switching
                {
                }

                Method (DECB, 0, NotSerialized)
                {
                    If (BRCT)
                    {
                        Notify (LCD0, 0x87) // Device-Specific
                    }
                    Else
                    {
                        Local0 = BRID (XBQC ())
                        If ((Local0 != 0x02))
                        {
                            Local0--
                        }

                        XBCM (DerefOf (BRIG [Local0]))
                    }
                }

                Method (INCB, 0, NotSerialized)
                {
                    If (BRCT)
                    {
                        Notify (LCD0, 0x86) // Device-Specific
                    }
                    Else
                    {
                        Local0 = BRID (XBQC ())
                        If ((Local0 != (SizeOf (BRIG) - One)))
                        {
                            Local0++
                        }

                        XBCM (DerefOf (BRIG [Local0]))
                    }
                }
            }

            Scope (GFX0)
            {
                Name (BRIG, Package (0x12)
                {
                    0x64, 
                    0x64, 
                    0x02, 
                    0x04, 
                    0x05, 
                    0x07, 
                    0x09, 
                    0x0B, 
                    0x0D, 
                    0x12, 
                    0x14, 
                    0x18, 
                    0x1D, 
                    0x21, 
                    0x28, 
                    0x32, 
                    0x43, 
                    0x64
                })
            }
        }
    }

    Name (_S0, Package (0x04)  // _S0_: S0 System State
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S3, Package (0x04)  // _S3_: S3 System State
    {
        0x05, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S4, Package (0x04)  // _S4_: S4 System State
    {
        0x06, 
        Zero, 
        Zero, 
        Zero
    })
    Name (_S5, Package (0x04)  // _S5_: S5 System State
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Scope (_SB)
    {
        Device (DOCK)
        {
            Name (_HID, "ACPI0003" /* Power Source Device */)  // _HID: Hardware ID
            Name (_UID, Zero)  // _UID: Unique ID
            Name (_PCL, Package (0x01)  // _PCL: Power Consumer List
            {
                _SB
            })
            Method (_DCK, 1, NotSerialized)  // _DCK: Dock Present
            {
                If (Arg0)
                {
                    GP28 = One
                    ^^PCI0.LPCB.EC.DKR1 = One
                }
                Else
                {
                    GP28 = Zero
                    ^^PCI0.LPCB.EC.DKR1 = Zero
                }

                Local0 = (Arg0 ^ ^^PCI0.LPCB.EC.DKR1) /* \_SB_.PCI0.LPCB.EC__.DKR1 */
                Return (Local0)
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (^^PCI0.LPCB.EC.DKR1) /* \_SB_.PCI0.LPCB.EC__.DKR1 */
            }

            Name (G_ID, 0xFFFFFFFF)
            Method (GGID, 0, NotSerialized)
            {
                Local0 = G_ID /* \_SB_.DOCK.G_ID */
                If ((Local0 == 0xFFFFFFFF))
                {
                    Local0 = ((GP02 | (GP03 << One)) | (GP04 << 0x02
                        ))
                    If ((Local0 == Zero))
                    {
                        Local0 = 0x03
                    }

                    G_ID = Local0
                }

                Return (Local0)
            }
        }
    }

    Scope (_SB.PCI0.LPCB.EC)
    {
        Method (_Q18, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Notify (DOCK, 0x03) // Eject Request
        }

        Method (_Q37, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Notify (DOCK, Zero) // Bus Check
        }

        Method (_Q45, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Notify (DOCK, 0x03) // Eject Request
        }

        Method (_Q50, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Local0 = ^^^^DOCK.GGID ()
            If ((Local0 != 0x07))
            {
                Notify (DOCK, 0x03) // Eject Request
            }
        }

        Method (_Q58, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Notify (DOCK, Zero) // Bus Check
        }

        Method (_Q5A, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
        {
            Local0 = ^^^^DOCK.GGID ()
            If ((Local0 == 0x07))
            {
                Notify (DOCK, 0x03) // Eject Request
            }

            If ((Local0 == 0x03))
            {
                Sleep (0x64)
                Local1 = DKR1 /* \_SB_.PCI0.LPCB.EC__.DKR1 */
                If ((Local1 == One))
                {
                    Notify (DOCK, Zero) // Bus Check
                }
            }
        }
    }

    Method (UCMS, 1, Serialized)
    {
        Switch (ToInteger (Arg0))
        {
            Case (0x0C)
            {
                \_SB.PCI0.LPCB.EC.LGHT (One)
            }
            Case (0x0D)
            {
                \_SB.PCI0.LPCB.EC.LGHT (Zero)
            }

        }
    }

    Device (CTBL)
    {
        Name (_HID, "BOOT0000")  // _HID: Hardware ID
        Name (_UID, Zero)  // _UID: Unique ID
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            Return (0x0B)
        }

        Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
        {
            Memory32Fixed (ReadOnly,
                0x7D76F000,         // Address Base
                0x00008000,         // Address Length
                )
        })
    }

    Scope (\_SB.PCI0.LPCB)
    {
    }

    Processor (\_SB.CP00, 0x00, 0x00000510, 0x06)
    {
        Name (_PCT, Package (0x02)  // _PCT: Performance Control
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Bit Width
                    0x00,               // Bit Offset
                    0x0000000000000000, // Address
                    ,)
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Bit Width
                    0x00,               // Bit Offset
                    0x0000000000000000, // Address
                    ,)
            }
        })
        Name (_PSD, Package (0x01)  // _PSD: Power State Dependencies
        {
            Package (0x05)
            {
                0x05, 
                0x00, 
                0x00000000, 
                0x000000FE, 
                0x00000002
            }
        })
        Name (_PSS, Package (0x04)  // _PSS: Performance Supported States
        {
            Package (0x06)
            {
                0x000009E6, 
                0x000088B8, 
                0x00000000, 
                0x00000000, 
                0x00000A2B, 
                0x00000A2B
            }, 

            Package (0x06)
            {
                0x000009E5, 
                0x000088B8, 
                0x00000000, 
                0x00000000, 
                0x00004925, 
                0x00004925
            }, 

            Package (0x06)
            {
                0x00000640, 
                0x00003A98, 
                0x00000000, 
                0x00000000, 
                0x00000617, 
                0x00000617
            }, 

            Package (0x06)
            {
                0x00000320, 
                0x00002EE0, 
                0x00000000, 
                0x00000000, 
                0x00008611, 
                0x00008611
            }
        })
        Method (_PPC, 0, NotSerialized)  // _PPC: Performance Present Capabilities
        {
            Return (0x00)
        }

        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x03, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000000, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x01, 
                0x0001, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x02, 
                0x0001, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000020, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x03, 
                0x0037, 
                0x000000FA
            }
        })
    }

    Processor (\_SB.CP01, 0x01, 0x00000000, 0x00)
    {
        Name (_PCT, Package (0x02)  // _PCT: Performance Control
        {
            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Bit Width
                    0x00,               // Bit Offset
                    0x0000000000000000, // Address
                    ,)
            }, 

            ResourceTemplate ()
            {
                Register (FFixedHW, 
                    0x00,               // Bit Width
                    0x00,               // Bit Offset
                    0x0000000000000000, // Address
                    ,)
            }
        })
        Name (_PSD, Package (0x01)  // _PSD: Power State Dependencies
        {
            Package (0x05)
            {
                0x05, 
                0x00, 
                0x00000000, 
                0x000000FE, 
                0x00000002
            }
        })
        Name (_PSS, Package (0x04)  // _PSS: Performance Supported States
        {
            Package (0x06)
            {
                0x000009E6, 
                0x000088B8, 
                0x00000000, 
                0x00000000, 
                0x00000A2B, 
                0x00000A2B
            }, 

            Package (0x06)
            {
                0x000009E5, 
                0x000088B8, 
                0x00000000, 
                0x00000000, 
                0x00004925, 
                0x00004925
            }, 

            Package (0x06)
            {
                0x00000640, 
                0x00003A98, 
                0x00000000, 
                0x00000000, 
                0x00000617, 
                0x00000617
            }, 

            Package (0x06)
            {
                0x00000320, 
                0x00002EE0, 
                0x00000000, 
                0x00000000, 
                0x00008611, 
                0x00008611
            }
        })
        Method (_PPC, 0, NotSerialized)  // _PPC: Performance Present Capabilities
        {
            Return (0x00)
        }

        Name (_CST, Package (0x04)  // _CST: C-States
        {
            0x03, 
            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000000, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x01, 
                0x0001, 
                0x000003E8
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000010, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x02, 
                0x0001, 
                0x000001F4
            }, 

            Package (0x04)
            {
                ResourceTemplate ()
                {
                    Register (FFixedHW, 
                        0x01,               // Bit Width
                        0x02,               // Bit Offset
                        0x0000000000000020, // Address
                        0x01,               // Access Size
                        )
                }, 

                0x03, 
                0x0037, 
                0x000000FA
            }
        })
    }

    Name (PPKG, Package (0x02)
    {
        \_SB.CP00, 
        \_SB.CP01
    })
    Method (\_SB.CNOT, 1, NotSerialized)
    {
        Notify (\_SB.CP00, Arg0)
        Notify (\_SB.CP01, Arg0)
    }

    Scope (\)
    {
        Name (MPEN, Zero)
    }

    Scope (\_SB.PCI0.GFX0)
    {
        Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
        {
            Return (Package (0x03)
            {
                0x80010100, 
                0x80010240, 
                0x80010410
            })
        }

        Device (VGA0)
        {
            Name (_ADR, 0x00000100)  // _ADR: Address
            Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
            {
                Return (0x1D)
            }

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

            Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
            {
            }
        }

        Device (TV0)
        {
            Name (_ADR, 0x00000240)  // _ADR: Address
            Method (_DCS, 0, NotSerialized)  // _DCS: Display Current Status
            {
                Return (0x1D)
            }

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

            Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
            {
            }
        }

        Device (LCD0)
        {
            Name (_ADR, 0x00000410)  // _ADR: Address
            Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
            {
                Return (^^XBCL ())
            }

            Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
            {
                ^^XBCM (Arg0)
            }

            Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
            {
                Return (^^XBQC ())
            }

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

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

            Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
            {
            }
        }
    }

    Scope (\_SB.PCI0.RP04)
    {
        Device (SLOT)
        {
            Name (_ADR, 0x00)  // _ADR: Address
            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
            {
                Return (One)
            }
        }
    }

    Scope (\_GPE)
    {
        Method (_L01, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
        {
            If (\_SB.PCI0.RP04.HPCS)
            {
                Sleep (0x64)
                \_SB.PCI0.RP04.HPCS = One
                If (\_SB.PCI0.RP04.PDC)
                {
                    \_SB.PCI0.RP04.PDC = One
                    Notify (\_SB.PCI0.RP04, Zero) // Bus Check
                }
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
        {
            If (PICM)
            {
                Return (Package (0x0F)
                {
                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x00, 
                        0x00, 
                        0x00000010
                    }, 

                    Package (0x04)
                    {
                        0x0019FFFF, 
                        0x00, 
                        0x00, 
                        0x00000010
                    }, 

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

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

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

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

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

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

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

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

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

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

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

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

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        0x02, 
                        0x00, 
                        0x00000012
                    }
                })
            }
            Else
            {
                Return (Package (0x0F)
                {
                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x00, 
                        \_SB.PCI0.LPCB.LNKA, 
                        0x00000000
                    }, 

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

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

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        0x01, 
                        \_SB.PCI0.LPCB.LNKB, 
                        0x00000000
                    }, 

                    Package (0x04)
                    {
                        0x001AFFFF, 
                        0x02, 
                        \_SB.PCI0.LPCB.LNKC, 
                        0x00000000
                    }, 

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

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

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

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

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

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

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        0x01, 
                        \_SB.PCI0.LPCB.LNKB, 
                        0x00000000
                    }, 

                    Package (0x04)
                    {
                        0x001DFFFF, 
                        0x02, 
                        \_SB.PCI0.LPCB.LNKC, 
                        0x00000000
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        0x01, 
                        \_SB.PCI0.LPCB.LNKB, 
                        0x00000000
                    }, 

                    Package (0x04)
                    {
                        0x001FFFFF, 
                        0x02, 
                        \_SB.PCI0.LPCB.LNKC, 
                        0x00000000
                    }
                })
            }
        }
    }

    Scope (\_SB.PCI0.LPCB.EC.HKEY)
    {
        Name (HBDC, 0x01)
        Name (HWAN, 0x01)
        Name (HKBL, 0x00)
        Name (HUWB, 0x01)
    }
}





Home | Main Index | Thread Index | Old Index