Jump to content

Cannot boot due to ACPI issues, there's definitely something wrong about the CPU in the DSDT or SSDTs.


3 posts in this topic

Recommended Posts

TL;DR: My PC has a badly written BIOS, which prevents me to boot 100% of the time. There's some ACPI issues that probably are inside the DSDT and/or SSDT, since putting a quad-core CPU instead of a dual-core "shifted" some ACPI properties (part 3.). Please look at the decompiled DSDT and its log down there (part .4).
 
 
 
0. Hi there

I've fiddled a bit with Clover in VirtualBox, and am now confident enough with it so this time I'm trying to use it on a real PC instead of a virtual machine, it's my last step before attempting a hackintosh.
 
This HP PC has:
- an Intel G45 motherboard
- an ICH10 Southbridge
- an Intel GMA X4500HD iGPU
- had an Intel Core 2 Duo E8300 that is now replaced with a Core 2 Quad Q9300
- 2GB of RAM
- and the latest official BIOS
 
I no longer have the Core 2 Duo E8300.
 
1. The issues.
 
As a some early tests, I've tried to boot a Linux Mint USB drive when I still had the Core 2 Duo E8300, and things worked fine with a stock Clover. But with the Core 2 Quad Q9300, the boot sequence hung, and showed these errors:

ACPI: Using IOAPIC for interrupt routing
lpc_ich: Resource conflict(s) found affecting gpio_ich
ACPI Warning: SystemIO range 0x0000000000000828-0x000000000000082F conflicts with OpRegion 0x000000000000800-0x00000000000084F (\PMRG) (20200925/utaddress-204)
? intel_irq_postinstall+0x4f4/0x670 [i915]
 
io scheduler mq-deadline registered
pcieport 0000:00:1c.0: PME: Signaling with IRQ 24
pcieport 0000:00:1c.0: pciehp: Slot #0 AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Interlock- NoCompl- lbPresDis- LLActRep+ (with Cmd Compl erratum)
 
pcieport 0000:00:1c.1: enabling device (0106 -> 0107)
pcieport 0000:00:1c.1: PME: Signaling with IRQ 25
pcieport 0000:00:1c.1: pciehp: Slot #0 AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Interlock- NoCompl- lbPresDis- LLActRep+ (with Cmd Compl erratum)
 
pcieport 0000:00:1c.2: enabling device (0106 -> 0107)
pcieport 0000:00:1c.2: PME: Signaling with IRQ 26
pcieport 0000:00:1c.2: pciehp: Slot #0 AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Interlock- NoCompl- lbPresDis- LLActRep+ (with Cmd Compl erratum)
 
pcieport 0000:00:1c.3: enabling device (0106 -> 0107)
pcieport 0000:00:1c.3: PME: Signaling with IRQ 27
pcieport 0000:00:1c.3: pciehp: Slot #0 AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ Interlock- NoCompl- lbPresDis- LLActRep+ (with Cmd Compl erratum)
 
ACPI: \_PR_.P001: Found 3 idle states

 
This generally indicates that the BIOS/Firmware is badly written.
 
2. Some working fixes after investigating for a while (days).
 
Fortunately, I've almost fixed these issues with the "pci_ports=compat" Linux's kernel paramter in Grub, and only these errors remains:

ACPI Warning: SystemIO range 0x0000000000000828-0x000000000000082F conflicts with OpRegion 0x000000000000800-0x00000000000084F (\PMRG) (20200925/utaddress-204)
? intel_irq_postinstall+0x4f4/0x670 [i915]
 
ACPI: \_PR_.P001: Found 3 idle states

But alas, nothing has changed and the PC still hangs at boot as before.
 
 
 
3. More investigations, the plot thickens.
 
However, the issue seems to be related to the CPUs / Firmware C-states. It's worth noting that the Core 2 Quad Q9400 do supports up to C4, but because of the buggy BIOS, it won't go anywhere after C3.
 
 
By using "intel_idle.max_cstate=", it gave different results:

  • "0" Always boots like if I used "acpi=off" (which obviously always made Linux Mint boot sucessfully), I had to force shut-down the PC after Linux halted, not good. This also disables the "intel_idle" ACPI driver.
  • "1" Often boots, but can still fail that. When I starts the PC again, it somtimes also go crazy during the BIOS' Boot Device Menu, where everything hangs, the fans all going up to 100% and that I need to force shutdown the PC by holding the power button. The most interesting thing is that more errors showed up:
ACPI: \_PR_.P001: Found 3 idle states
ACPI: \_PR_.P002: Found 3 idle states
ACPI: \_PR_.P003: Found 3 idle states
ACPI: \_PR_.P004: Found 3 idle states
  • "2" The PC doesn't go crazy during the BIOS' Boot Device Menu anymore, "pcie_ports=compat" is still set. But when the PC fails to boot, errors are only showing "ACPI: \_PR_.P001: Found 3 idle states" error and nothing else again.
  • "3" Same as "2".


 
"Found 3 idle cstates" very likely means the C0, C1 and C2 states, which is wrong since C3 does work, sometimes though, just like when no kernel parameters are set except "pcie_ports=compat". It's also interesting that until "intel_idle.max_cstate" was set to "1", only the first core had its C-States detected.
 
 
 
 Again, if we consider:

  • That the CPU is a quad-core instead of a dual-core
  • That HP is very known to have badly written Firmware (as them going as far harcoding which CPU the motherboard should support)
  • The PCIE's ACPI errors that I got, and solved.
  • That there was exactly 4 of these PCIE's ACPI errors. 4, like the number of cores the Core 2 Quad Q9300 has.
  • The
ACPI Warning: SystemIO range 0x0000000000000828-0x000000000000082F conflicts with OpRegion 0x000000000000800-0x00000000000084F (\PMRG) (20200925/utaddress-204)

          error, which "PMRG" definitely has something to do with the CPU.
 
, I now really do suspect that some ACPI rules have somewhat "shifted", which CPUs rules may have overlapped with the PCIE ports' ones.
 
 
4. DSDT and SSDT, who would have thought?

Now, all of these ACPI errors like "PMRG", "SystemIO" and "OpRegion" are related to something in the ACPI tables, and most likely the DSDT or SSDT.

I first tried Clover's "FixAPIC" setting, but it didn't worked.

Then I got both DSDT an SSDT disassembled, then tried to get them recompiled immediately.
The SSDTs seems to get compiled, but the DSDT always fails since "iasl" dit spit some re-occuring errors:

Intel ACPI Component Architecture
ASL+ Optimizing Compiler/Disassembler version 20200925
Copyright (c) 2000 - 2020 Intel Corporation

DSDT.dsl     41:         Processor (P001, 0x01, 0x00000810, 0x06) {}
Warning  3168 -                       ^ Legacy Processor() keyword detected. Use Device() keyword instead.

DSDT.dsl     43:         Processor (P002, 0x02, 0x00000000, 0x00) {}
Warning  3168 -                       ^ Legacy Processor() keyword detected. Use Device() keyword instead.

DSDT.dsl     45:         Processor (P003, 0x03, 0x00000000, 0x00) {}
Warning  3168 -                       ^ Legacy Processor() keyword detected. Use Device() keyword instead.

DSDT.dsl     47:         Processor (P004, 0x04, 0x00000000, 0x00) {}
Warning  3168 -                       ^ Legacy Processor() keyword detected. Use Device() keyword instead.

DSDT.dsl    121:     Method (RRIO, 4, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg0)

DSDT.dsl    121:     Method (RRIO, 4, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg1)

DSDT.dsl    121:     Method (RRIO, 4, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg2)

DSDT.dsl    121:     Method (RRIO, 4, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg3)

DSDT.dsl    126:     Method (RDMA, 3, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg0)

DSDT.dsl    126:     Method (RDMA, 3, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg1)

DSDT.dsl    126:     Method (RDMA, 3, NotSerialized)
Remark   2146 -                ^ Method Argument is never used (Arg2)

DSDT.dsl    147:     Method (OSFL, 0, NotSerialized)
Remark   2120 -                ^ Control Method should be made Serialized due to creation of named objects within (\OSFL)

DSDT.dsl    188:     Method (MCTH, 2, NotSerialized)
Remark   2120 -                ^ Control Method should be made Serialized due to creation of named objects within (\MCTH)

DSDT.dsl    196:         Name (BUF0, Buffer (Local0) {})
Remark   2173 -                  ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\MCTH)

DSDT.dsl    197:         Name (BUF1, Buffer (Local0) {})
Remark   2173 -                  ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\MCTH)

DSDT.dsl    265:         If (CondRefOf (_OSI, Local1))
Warning  3144 -                                   ^ Method Local is set but never used (Local1)

DSDT.dsl   1228:         Device (PCI0)
Warning  3073 -     Multiple types ^  (Device object requires either a _HID or _ADR, but not both)

DSDT.dsl   1283:             Method (NPTS, 1, NotSerialized)
Remark   2146 -                        ^ Method Argument is never used (Arg0)

DSDT.dsl   1287:             Method (NWAK, 1, NotSerialized)
Remark   2146 -                        ^ Method Argument is never used (Arg0)

DSDT.dsl   1324:                     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
Remark   2120 -                                ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.P0P2.VGA._DSM)

DSDT.dsl   1324:                     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
Warning  3115 -                                ^ Not all control paths return a value (\_SB.PCI0.P0P2.VGA._DSM)

DSDT.dsl   1324:                     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
Warning  3107 -                                ^ Reserved method must return a value (Integer/String/Buffer/Package/Reference required for _DSM)

DSDT.dsl   1469:                     Method (SMOD, 1, NotSerialized)
Remark   2146 -  Method Argument is never used ^  (Arg0)

DSDT.dsl   1479:                 Method (SPTS, 1, NotSerialized)
Remark   2146 -                            ^ Method Argument is never used (Arg0)

DSDT.dsl   1692:                         ShiftLeft (One, 0x0A, Local0)
Warning  3134 -             Statement is unreachable ^ 

DSDT.dsl   1727:                         ShiftLeft (One, 0x0C, Local0)
Warning  3134 -             Statement is unreachable ^ 

DSDT.dsl   2091:                 Method (RRIO, 4, NotSerialized)
Remark   2146 -                            ^ Method Argument is never used (Arg3)

DSDT.dsl   2140:                 Method (RDMA, 3, NotSerialized)
Remark   2146 -                            ^ Method Argument is never used (Arg0)

DSDT.dsl   2140:                 Method (RDMA, 3, NotSerialized)
Remark   2146 -                            ^ Method Argument is never used (Arg1)

DSDT.dsl   2140:                 Method (RDMA, 3, NotSerialized)
Remark   2146 -                            ^ Method Argument is never used (Arg2)

DSDT.dsl   2865:                 Method (GTM, 7, Serialized)
Remark   2146 -                           ^ Method Argument is never used (Arg6)

DSDT.dsl   3076:                     Name (ID49, 0x0C00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3077:                     Name (ID59, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3078:                     Name (ID53, 0x04)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3079:                     Name (ID63, 0x0F00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3080:                     Name (ID88, 0x0F00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3081:                     Name (IRDY, One)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3082:                     Name (PIOT, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3083:                     Name (DMAT, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SATA.GTF)

DSDT.dsl   3587:                 Method (GTM, 7, Serialized)
Remark   2146 -                           ^ Method Argument is never used (Arg6)

DSDT.dsl   3798:                     Name (ID49, 0x0C00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3799:                     Name (ID59, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3800:                     Name (ID53, 0x04)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3801:                     Name (ID63, 0x0F00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3802:                     Name (ID88, 0x0F00)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3803:                     Name (IRDY, One)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3804:                     Name (PIOT, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3805:                     Name (DMAT, Zero)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.SAT1.GTF)

DSDT.dsl   3954:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   3993:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4076:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4115:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4198:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4237:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4320:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4359:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4411:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4450:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4489:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4528:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4567:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4606:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4689:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4728:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4811:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4850:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4933:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   4972:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5024:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5063:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5102:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5141:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5180:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5219:                             PLD_Revision           = 0x1,
Error    6105 -  Invalid object type for reserved name ^  (_PLD: found Buffer, Package required)

DSDT.dsl   5836:         Method (RBPE, 1, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.RBPE)

DSDT.dsl   5838:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5840:             OperationRegion (PCFG, SystemMemory, Local0, One)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.RBPE)

DSDT.dsl   5850:         Method (RWPE, 1, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.RWPE)

DSDT.dsl   5852:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5855:             OperationRegion (PCFG, SystemMemory, Local0, 0x02)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.RWPE)

DSDT.dsl   5865:         Method (RDPE, 1, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.RDPE)

DSDT.dsl   5867:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5870:             OperationRegion (PCFG, SystemMemory, Local0, 0x04)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.RDPE)

DSDT.dsl   5880:         Method (WBPE, 2, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.WBPE)

DSDT.dsl   5882:             Acquire (MUTE, 0x0FFF)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5884:             OperationRegion (PCFG, SystemMemory, Local0, One)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.WBPE)

DSDT.dsl   5894:         Method (WWPE, 2, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.WWPE)

DSDT.dsl   5896:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5899:             OperationRegion (PCFG, SystemMemory, Local0, 0x02)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.WWPE)

DSDT.dsl   5909:         Method (WDPE, 2, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.WDPE)

DSDT.dsl   5911:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5914:             OperationRegion (PCFG, SystemMemory, Local0, 0x04)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.WDPE)

DSDT.dsl   5924:         Method (RWDP, 3, NotSerialized)
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.RWDP)

DSDT.dsl   5926:             Acquire (MUTE, 0x03E8)
Warning  3130 -                                 ^ Result is not used, possible operator timeout will be missed

DSDT.dsl   5929:             OperationRegion (PCFG, SystemMemory, Local0, 0x04)
Remark   2173 -                                 ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.RWDP)

DSDT.dsl   5963:         Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
Remark   2120 -                    ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0._OSC)

DSDT.dsl   5965:             Name (SUPP, Zero)
Remark   2173 -                      ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0._OSC)

DSDT.dsl   6186:             Method (GBDA, 0, NotSerialized)
Remark   2120 -                        ^ Control Method should be made Serialized due to creation of named objects within (\_SB.PCI0.GFX0.GBDA)

DSDT.dsl   6233:                     Name (MEMS, 0x0D)
Remark   2173 -                              ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\_SB.PCI0.GFX0.GBDA)

DSDT.dsl   6830:     Method (DC2S, 1, NotSerialized)
Remark   2120 -                ^ Control Method should be made Serialized due to creation of named objects within (\DC2S)

DSDT.dsl   7075:             Sleep (0x0BB8)
Remark   2159 -                         ^ Very long Sleep, greater than 1 second

ASL Input:     DSDT.dsl -  262878 bytes   3391 keywords   7178 source lines
Hex Dump:      DSDT.hex -  222089 bytes
C Include:     DSDT.h -   46051 bytes

Compilation failed. 26 Errors, 17 Warnings, 58 Remarks
No AML files were generated due to compiler error(s)

The offending DSDT, disassembled with a "refs.txt" file:

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20200925 (64-bit version)
 * Copyright (c) 2000 - 2020 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of DSDT, Wed Mar 29 17:27:13 2023
 *
 * Original Table Header:
 *     Signature        "DSDT"
 *     Length           0x00005BF2 (23538)
 *     Revision         0x01 **** 32-bit table (V1), no 64-bit math support
 *     Checksum         0x17
 *     OEM ID           "HPQOEM"
 *     OEM Table ID     "SLIC-CPC"
 *     OEM Revision     0x00000011 (17)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20051117 (537202967)
 */
DefinitionBlock ("", "DSDT", 1, "HPQOEM", "SLIC-CPC", 0x00000011)
{
    /*
     * External declarations were imported from
     * a reference file -- refs.txt
     */

    External (_GPE.MMTB, MethodObj)    // 0 Arguments    // From external reference file
    External (_GPE.VHOV, MethodObj)    // 3 Arguments    // From external reference file
    External (_SB_.PCI0.GFX0.DD02._BCM, MethodObj)    // 1 Arguments    // From external reference file
    External (_SB_.PCI0.LPCB.H_EC.ECMD, MethodObj)    // 1 Arguments    // From external reference file
    External (_SB_.PCI0.LPCB.H_EC.ECRD, MethodObj)    // 1 Arguments    // From external reference file
    External (_SB_.PCI0.LPCB.H_EC.ECWT, MethodObj)    // 2 Arguments    // From external reference file
    External (_SB_.PCI0.PEG0.PEGP.SGPO, MethodObj)    // 2 Arguments    // From external reference file
    External (_SB_.PCI0.SAT0.SDSM, MethodObj)    // 4 Arguments    // From external reference file
    External (_SB_.PCI0.XHC_.RHUB.TPLD, MethodObj)    // 2 Arguments    // From external reference file
    External (MDBG, MethodObj)    // 1 Arguments    // From external reference file

    Scope (_PR)
    {
        Processor (P001, 0x01, 0x00000810, 0x06) {}
        Alias (P001, CPU1)
        Processor (P002, 0x02, 0x00000000, 0x00) {}
        Alias (P002, CPU2)
        Processor (P003, 0x03, 0x00000000, 0x00) {}
        Alias (P003, CPU3)
        Processor (P004, 0x04, 0x00000000, 0x00) {}
        Alias (P004, CPU4)
    }

    Name (DP80, 0x80)
    Name (DP90, 0x90)
    Name (APIC, One)
    Name (SMIP, 0xB2)
    Name (PMBS, 0x0800)
    Name (PMLN, 0x80)
    Name (GPBS, 0x0500)
    Name (GPLN, 0x80)
    Name (SMBS, Zero)
    Name (SMBL, Zero)
    Name (PM30, 0x0830)
    Name (SUSW, 0xFF)
    Name (TPBA, 0xFED40000)
    Name (TPBL, Zero)
    Name (MIEC, Zero)
    Name (BWRN, 0x07)
    Name (BLOW, 0x05)
    Name (BCRT, 0x03)
    Name (TOBS, 0x0860)
    Name (SUCC, One)
    Name (NVLD, 0x02)
    Name (CRIT, 0x04)
    Name (NCRT, 0x06)
    Name (LIDS, One)
    Name (ECIO, 0x2E)
    Name (PCIB, 0xF0000000)
    Name (PCIL, 0x08000000)
    Name (PEHP, One)
    Name (SHPC, Zero)
    Name (PEPM, One)
    Name (PEER, One)
    Name (PECS, One)
    OperationRegion (BIOS, SystemMemory, 0xDDD9E064, 0xFF)
    Field (BIOS, ByteAcc, NoLock, Preserve)
    {
        SS1,    1, 
        SS2,    1, 
        SS3,    1, 
        SS4,    1, 
        Offset (0x01), 
        IOST,   16, 
        TOPM,   32, 
        ROMS,   32, 
        MG1B,   32, 
        MG1L,   32, 
        MG2B,   32, 
        MG2L,   32, 
        Offset (0x1C), 
        DMAX,   8, 
        HPTA,   32, 
        CPB0,   32, 
        CPB1,   32, 
        CPB2,   32, 
        CPB3,   32, 
        ASSB,   8, 
        AOTB,   8, 
        AAXB,   32, 
        SMIF,   8, 
        DTSE,   8, 
        DTS1,   8, 
        DTS2,   8, 
        MPEN,   8, 
        TPMF,   8, 
        MG3B,   32, 
        MG3L,   32, 
        MH1B,   32, 
        MH1L,   32, 
        OSTP,   8
    }

    Method (RRIO, 4, NotSerialized)
    {
        Store ("RRIO", Debug)
    }

    Method (RDMA, 3, NotSerialized)
    {
        Store ("rDMA", Debug)
    }

    Name (PICM, Zero)
    Method (_PIC, 1, NotSerialized)  // _PIC: Interrupt Model
    {
        If (Arg0)
        {
            Store (0xAA, DBG8) /* \DBG8 */
        }
        Else
        {
            Store (0xAC, DBG8) /* \DBG8 */
        }

        Store (Arg0, PICM) /* \PICM */
    }

    Name (OSVR, Ones)
    Method (OSFL, 0, NotSerialized)
    {
        If (LNotEqual (OSVR, Ones))
        {
            Return (OSVR) /* \OSVR */
        }

        Name (TTT0, Zero)
        Store (OSYS (), TTT0) /* \OSFL.TTT0 */
        If (LEqual (TTT0, One))
        {
            Store (0x03, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x10))
        {
            Store (One, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x11))
        {
            Store (0x02, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x12))
        {
            Store (0x04, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x13))
        {
            Store (Zero, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x14))
        {
            Store (Zero, OSVR) /* \OSVR */
        }
        ElseIf (LEqual (TTT0, 0x15))
        {
            Store (Zero, OSVR) /* \OSVR */
        }

        Return (OSVR) /* \OSVR */
    }

    Method (MCTH, 2, NotSerialized)
    {
        If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (Zero)
        }

        Add (SizeOf (Arg0), One, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0) /* \MCTH.BUF0 */
        Store (Arg1, BUF1) /* \MCTH.BUF1 */
        While (Local0)
        {
            Decrement (Local0)
            If (LNotEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0
                ))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Name (PRWP, Package (0x02)
    {
        Zero, 
        Zero
    })
    Method (GPRW, 2, NotSerialized)
    {
        Store (Arg0, Index (PRWP, Zero))
        Store (ShiftLeft (SS1, One), Local0)
        Or (Local0, ShiftLeft (SS2, 0x02), Local0)
        Or (Local0, ShiftLeft (SS3, 0x03), Local0)
        Or (Local0, ShiftLeft (SS4, 0x04), Local0)
        If (And (ShiftLeft (One, Arg1), Local0))
        {
            Store (Arg1, Index (PRWP, One))
        }
        Else
        {
            ShiftRight (Local0, One, Local0)
            If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
            {
                FindSetLeftBit (Local0, Index (PRWP, One))
            }
            Else
            {
                FindSetRightBit (Local0, Index (PRWP, One))
            }
        }

        Return (PRWP) /* \PRWP */
    }

    Name (WAKP, Package (0x02)
    {
        Zero, 
        Zero
    })
    OperationRegion (DEB0, SystemIO, DP80, One)
    Field (DEB0, ByteAcc, NoLock, Preserve)
    {
        DBG8,   8
    }

    OperationRegion (DEB1, SystemIO, DP90, 0x02)
    Field (DEB1, WordAcc, NoLock, Preserve)
    {
        DBG9,   16
    }

    Method (OSYS, 0, NotSerialized)
    {
        Store (0x10, Local0)
        If (CondRefOf (_OSI, Local1))
        {
            If (_OSI ("Windows 2000"))
            {
                Store (0x12, Local0)
            }

            If (_OSI ("Windows 2001"))
            {
                Store (0x13, Local0)
            }

            If (_OSI ("Windows 2001 SP1"))
            {
                Store (0x13, Local0)
            }

            If (_OSI ("Windows 2001 SP2"))
            {
                Store (0x13, Local0)
            }

            If (_OSI ("Windows 2001.1"))
            {
                Store (0x14, Local0)
            }

            If (_OSI ("Windows 2001.1 SP1"))
            {
                Store (0x14, Local0)
            }

            If (_OSI ("Windows 2006"))
            {
                Store (0x15, Local0)
            }
        }
        ElseIf (MCTH (_OS, "Microsoft Windows NT"))
        {
            Store (0x12, Local0)
        }
        ElseIf (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
        {
            Store (0x11, Local0)
        }

        Return (Local0)
    }

    Scope (_SB)
    {
        Name (PR00, Package (0x1A)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

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

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

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

            Package (0x04)
            {
                0x0006FFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0x0006FFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0x001AFFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

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

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

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

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

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

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

            Package (0x04)
            {
                0x001CFFFF, 
                0x03, 
                LNKD, 
                Zero
            }, 

            Package (0x04)
            {
                0x0002FFFF, 
                Zero, 
                LNKA, 
                Zero
            }
        })
        Name (AR00, Package (0x1A)
        {
            Package (0x04)
            {
                0x0001FFFF, 
                Zero, 
                Zero, 
                0x10
            }, 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                Zero, 
                0x12
            }
        })
        Name (PR08, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKA, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKD, 
                Zero
            }
        })
        Name (AR08, 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 (PR09, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKB, 
                Zero
            }, 

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

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

            Package (0x04)
            {
                0xFFFF, 
                0x03, 
                LNKA, 
                Zero
            }
        })
        Name (AR09, 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 (PR01, Package (0x04)
        {
            Package (0x04)
            {
                0xFFFF, 
                Zero, 
                LNKF, 
                Zero
            }, 

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

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

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

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

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

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

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

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

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

            Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
            {
                If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (0x03)
                }
            }

            Name (_CID, EisaId ("PNP0A03") /* PCI Bus */)  // _CID: Compatible ID
            Device (MCH)
            {
                Name (_HID, EisaId ("PNP0C01") /* System Board */)  // _HID: Hardware ID
                Name (_UID, 0x0A)  // _UID: Unique ID
                Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                {
                    Memory32Fixed (ReadWrite,
                        0xFED14000,         // Address Base
                        0x00006000,         // Address Length
                        )
                    Memory32Fixed (ReadWrite,
                        0xFED90000,         // Address Base
                        0x00004000,         // Address Length
                        )
                })
            }

            Method (NPTS, 1, NotSerialized)
            {
            }

            Method (NWAK, 1, NotSerialized)
            {
            }

            Device (P0P2)
            {
                Name (_ADR, 0x00010000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Device (VGA)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (DSMD, One)
                    Method (_DOS, 1, NotSerialized)  // _DOS: Disable Output Switching
                    {
                    }

                    Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
                    {
                        Return (Package (0x01)
                        {
                            0x0110
                        })
                    }

                    Name (M30S, Buffer (0x2D)
                    {
                        /* 0000 */  0x4D, 0x58, 0x4D, 0x5F, 0x03, 0x00, 0x21, 0x00,  // MXM_..!.
                        /* 0008 */  0x30, 0x11, 0xB8, 0xF7, 0xF9, 0x3E, 0x20, 0x00,  // 0....> .
                        /* 0010 */  0x01, 0xF4, 0x01, 0x00, 0x13, 0x02, 0xF4, 0x01,  // ........
                        /* 0018 */  0x03, 0x02, 0xF4, 0x01, 0x06, 0x14, 0x00, 0x00,  // ........
                        /* 0020 */  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // ........
                        /* 0028 */  0x30                                             // 0
                    })
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (LEqual (Arg0, ToUUID ("4004a400-917d-4cf2-b89c-79b62fd55665") /* Unknown UUID */))
                        {
                            Name (TTT0, Zero)
                            Store (Arg2, TTT0) /* \_SB_.PCI0.P0P2.VGA_._DSM.TTT0 */
                            If (LEqual (TTT0, Zero))
                            {
                                Return (Buffer (0x04)
                                {
                                     0x01, 0x00, 0x01, 0x01                           // ....
                                })
                            }
                            ElseIf (LEqual (TTT0, 0x18))
                            {
                                Return (0x30)
                            }
                            ElseIf (LEqual (TTT0, 0x10))
                            {
                                Return (M30S) /* \_SB_.PCI0.P0P2.VGA_.M30S */
                            }
                        }
                    }

                    Name (LCDA, One)
                    Name (HDMA, One)
                    Name (CRTA, One)
                    Device (LCD)
                    {
                        Name (_ADR, 0x0110)  // _ADR: Address
                        Name (_DCS, 0x1F)  // _DCS: Display Current Status
                        Name (_DGS, One)  // _DGS: Display Graphics State
                        Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                        {
                        }

                        Name (PBCL, Package (0x12)
                        {
                            0x07, 
                            Zero, 
                            Zero, 
                            One, 
                            0x02, 
                            0x03, 
                            0x04, 
                            0x05, 
                            0x06, 
                            0x07, 
                            0x08, 
                            0x09, 
                            0x0A, 
                            0x0B, 
                            0x0C, 
                            0x0D, 
                            0x0E, 
                            0x0F
                        })
                        Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
                        {
                            Return (PBCL) /* \_SB_.PCI0.P0P2.VGA_.LCD_.PBCL */
                        }

                        Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
                        {
                            Store (Arg0, ^^^^SBRG.EC0.ECBR) /* \_SB_.PCI0.SBRG.EC0_.ECBR */
                        }

                        Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
                        {
                            Store (^^^^SBRG.EC0.ECBR, Local0)
                            Return (Local0)
                        }
                    }
                }
            }

            Device (P0P3)
            {
                Name (_ADR, 0x00060000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }
            }

            Device (P0P1)
            {
                Name (_ADR, 0x001E0000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0B, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR01) /* \_SB_.AR01 */
                    }

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

            Device (SBRG)
            {
                Name (_ADR, 0x001F0000)  // _ADR: Address
                Device (IELK)
                {
                    Name (_HID, "AWY0001")  // _HID: Hardware ID
                    OperationRegion (RXA0, PCI_Config, 0xA0, 0x20)
                    Field (RXA0, ByteAcc, NoLock, Preserve)
                    {
                            ,   9, 
                        PBLV,   1, 
                        Offset (0x10), 
                            ,   1, 
                        PBMS,   1, 
                            ,   1, 
                        PMCS,   1, 
                        ECNS,   1, 
                        Offset (0x11), 
                        ECT1,   16, 
                        ELEN,   1, 
                        Offset (0x14)
                    }

                    Method (\_GPE._L0A, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
                    {
                        Notify (\_SB.PCI0.SBRG.IELK, 0x81) // Information Change
                        Store (One, \_SB.PCI0.SBRG.IELK.PMCS)
                    }

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

                    Method (SMOD, 1, NotSerialized)
                    {
                    }

                    Method (GPBS, 0, NotSerialized)
                    {
                        Return (XOr (PBLV, One))
                    }
                }

                Method (SPTS, 1, NotSerialized)
                {
                    Store (One, PS1S) /* \_SB_.PCI0.SBRG.PS1S */
                    Store (One, PS1E) /* \_SB_.PCI0.SBRG.PS1E */
                    Store (One, SLPS) /* \_SB_.SLPS */
                }

                Method (SWAK, 1, NotSerialized)
                {
                    Store (Zero, SLPS) /* \_SB_.SLPS */
                    Store (Zero, PS1E) /* \_SB_.PCI0.SBRG.PS1E */
                    If (LAnd (LEqual (Arg0, One), RTCS)) {}
                    ElseIf (LAnd (LEqual (Arg0, 0x03), BRTC)) {}
                    Else
                    {
                        Notify (PWRB, 0x02) // Device Wake
                    }
                }

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

                Field (APMP, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x01), 
                        ,   1, 
                    BRTC,   1
                }

                OperationRegion (PMS0, SystemIO, PMBS, 0x04)
                Field (PMS0, ByteAcc, NoLock, Preserve)
                {
                        ,   10, 
                    RTCS,   1, 
                        ,   4, 
                    WAKS,   1, 
                    Offset (0x03), 
                    PWBT,   1, 
                    Offset (0x04)
                }

                OperationRegion (SMIE, SystemIO, PM30, 0x08)
                Field (SMIE, ByteAcc, NoLock, Preserve)
                {
                        ,   4, 
                    PS1E,   1, 
                        ,   31, 
                    PS1S,   1, 
                    Offset (0x08)
                }

                Scope (\_SB)
                {
                    Name (SLPS, Zero)
                    Mutex (IOMX, 0x00)
                    OperationRegion (SMI0, SystemIO, SMIP, 0x02)
                    Field (SMI0, ByteAcc, NoLock, Preserve)
                    {
                        ECSM,   8
                    }

                    Device (SLPB)
                    {
                        Name (_HID, EisaId ("PNP0C0E") /* Sleep Button Device */)  // _HID: Hardware ID
                        Method (_STA, 0, NotSerialized)  // _STA: Status
                        {
                            If (LNotEqual (SUSW, 0xFF))
                            {
                                Return (0x0F)
                            }

                            Return (Zero)
                        }

                        Method (SBEV, 0, NotSerialized)
                        {
                            If (SLPS)
                            {
                                Notify (SLPB, 0x02) // Device Wake
                            }
                            Else
                            {
                                Notify (SLPB, 0x80) // Status Change
                            }
                        }

                        Method (\_GPE._L1B, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
                        {
                            \_SB.SLPB.SBEV ()
                        }

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

                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
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x00A0,             // Range Minimum
                            0x00A0,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {2}
                    })
                }

                Device (DMAD)
                {
                    Name (_HID, EisaId ("PNP0200") /* PC-class DMA Controller */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        DMA (Compatibility, BusMaster, Transfer8, )
                            {4}
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0081,             // Range Minimum
                            0x0081,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0087,             // Range Minimum
                            0x0087,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0089,             // Range Minimum
                            0x0089,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x008F,             // Range Minimum
                            0x008F,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x00C0,             // Range Minimum
                            0x00C0,             // Range Maximum
                            0x00,               // Alignment
                            0x20,               // Length
                            )
                    })
                }

                Device (TMR)
                {
                    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
                            0x00,               // Alignment
                            0x04,               // Length
                            )
                        IRQNoFlags ()
                            {0}
                    })
                }

                Device (RTC0)
                {
                    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
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IRQNoFlags ()
                            {8}
                    })
                }

                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
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (Zero)
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0060,             // Range Minimum
                            0x0060,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0064,             // Range Minimum
                            0x0064,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {1}
                    })
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F03") /* Microsoft PS/2-style Mouse */)  // _HID: Hardware ID
                    Name (_CID, EisaId ("PNP0F13") /* PS/2 Mouse */)  // _CID: Compatible ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        Return (Zero)
                        ShiftLeft (One, 0x0C, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Name (M2R0, ResourceTemplate ()
                    {
                        IRQNoFlags ()
                            {12}
                    })
                    Name (M2R1, ResourceTemplate ()
                    {
                        FixedIO (
                            0x0060,             // Address
                            0x01,               // Length
                            )
                        FixedIO (
                            0x0064,             // Address
                            0x01,               // Length
                            )
                        IRQNoFlags ()
                            {12}
                    })
                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        ShiftLeft (One, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (M2R0) /* \_SB_.PCI0.SBRG.PS2M.M2R0 */
                        }
                        Else
                        {
                            Return (M2R1) /* \_SB_.PCI0.SBRG.PS2M.M2R1 */
                        }
                    }
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800") /* Microsoft Sound System Compatible Device */)  // _HID: Hardware ID
                    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
                    {
                        IO (Decode16,
                            0x0061,             // Range Minimum
                            0x0061,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                    })
                }

                Device (COPR)
                {
                    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
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IRQNoFlags ()
                            {13}
                    })
                }

                Device (RMSC)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, 0x10)  // _UID: Unique ID
                    Name (CRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0010,             // Range Minimum
                            0x0010,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x0022,             // Range Minimum
                            0x0022,             // Range Maximum
                            0x00,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x0044,             // Range Minimum
                            0x0044,             // Range Maximum
                            0x00,               // Alignment
                            0x1C,               // Length
                            )
                        IO (Decode16,
                            0x0063,             // Range Minimum
                            0x0063,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0065,             // Range Minimum
                            0x0065,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0067,             // Range Minimum
                            0x0067,             // Range Maximum
                            0x00,               // Alignment
                            0x09,               // Length
                            )
                        IO (Decode16,
                            0x0072,             // Range Minimum
                            0x0072,             // Range Maximum
                            0x00,               // Alignment
                            0x0E,               // Length
                            )
                        IO (Decode16,
                            0x0080,             // Range Minimum
                            0x0080,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x0084,             // Range Minimum
                            0x0084,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0088,             // Range Minimum
                            0x0088,             // Range Maximum
                            0x00,               // Alignment
                            0x01,               // Length
                            )
                        IO (Decode16,
                            0x008C,             // Range Minimum
                            0x008C,             // Range Maximum
                            0x00,               // Alignment
                            0x03,               // Length
                            )
                        IO (Decode16,
                            0x0090,             // Range Minimum
                            0x0090,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x00A2,             // Range Minimum
                            0x00A2,             // Range Maximum
                            0x00,               // Alignment
                            0x1E,               // Length
                            )
                        IO (Decode16,
                            0x00E0,             // Range Minimum
                            0x00E0,             // Range Maximum
                            0x00,               // Alignment
                            0x10,               // Length
                            )
                        IO (Decode16,
                            0x04D0,             // Range Minimum
                            0x04D0,             // Range Maximum
                            0x00,               // Alignment
                            0x02,               // Length
                            )
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x00,               // Length
                            _Y00)
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x00,               // Length
                            _Y01)
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x00,               // Alignment
                            0x00,               // Length
                            _Y02)
                        Memory32Fixed (ReadWrite,
                            0xFED1C000,         // Address Base
                            0x00004000,         // Address Length
                            )
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y03)
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y04)
                    })
                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y00._MIN, GP00)  // _MIN: Minimum Base Address
                        CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y00._MAX, GP01)  // _MAX: Maximum Base Address
                        CreateByteField (CRS, \_SB.PCI0.SBRG.RMSC._Y00._LEN, GP0L)  // _LEN: Length
                        Store (PMBS, GP00) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP00 */
                        Store (PMBS, GP01) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP01 */
                        Store (PMLN, GP0L) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP0L */
                        If (SMBS)
                        {
                            CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y01._MIN, GP10)  // _MIN: Minimum Base Address
                            CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y01._MAX, GP11)  // _MAX: Maximum Base Address
                            CreateByteField (CRS, \_SB.PCI0.SBRG.RMSC._Y01._LEN, GP1L)  // _LEN: Length
                            Store (SMBS, GP10) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP10 */
                            Store (SMBS, GP11) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP11 */
                            Store (SMBL, GP1L) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP1L */
                        }

                        If (GPBS)
                        {
                            CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y02._MIN, GP20)  // _MIN: Minimum Base Address
                            CreateWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y02._MAX, GP21)  // _MAX: Maximum Base Address
                            CreateByteField (CRS, \_SB.PCI0.SBRG.RMSC._Y02._LEN, GP2L)  // _LEN: Length
                            Store (GPBS, GP20) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP20 */
                            Store (GPBS, GP21) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP21 */
                            Store (GPLN, GP2L) /* \_SB_.PCI0.SBRG.RMSC._CRS.GP2L */
                        }

                        CreateDWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y03._LEN, TML1)  // _LEN: Length
                        CreateDWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y03._BAS, TMB1)  // _BAS: Base Address
                        CreateDWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y04._LEN, TML2)  // _LEN: Length
                        CreateDWordField (CRS, \_SB.PCI0.SBRG.RMSC._Y04._BAS, TMB2)  // _BAS: Base Address
                        Store (0xFED20000, TMB1) /* \_SB_.PCI0.SBRG.RMSC._CRS.TMB1 */
                        Subtract (TPBA, 0xFED20000, TML1) /* \_SB_.PCI0.SBRG.RMSC._CRS.TML1 */
                        If (TPMF)
                        {
                            Add (TPBA, TPBL, TMB2) /* \_SB_.PCI0.SBRG.RMSC._CRS.TMB2 */
                        }
                        Else
                        {
                            Add (TPBA, Zero, TMB2) /* \_SB_.PCI0.SBRG.RMSC._CRS.TMB2 */
                        }

                        Subtract (0xFED90000, TMB2, TML2) /* \_SB_.PCI0.SBRG.RMSC._CRS.TML2 */
                        Return (CRS) /* \_SB_.PCI0.SBRG.RMSC.CRS_ */
                    }
                }

                Device (HPET)
                {
                    Name (_HID, EisaId ("PNP0103") /* HPET System Timer */)  // _HID: Hardware ID
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xFED00000,         // Address Base
                            0x00000400,         // Address Length
                            _Y05)
                    })
                    OperationRegion (^LPCR, SystemMemory, 0xFED1F404, 0x04)
                    Field (LPCR, AnyAcc, NoLock, Preserve)
                    {
                        HPTS,   2, 
                            ,   5, 
                        HPTE,   1, 
                        Offset (0x04)
                    }

                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (LEqual (OSFL (), Zero))
                        {
                            If (HPTE)
                            {
                                Return (0x0F)
                            }
                        }
                        ElseIf (HPTE)
                        {
                            Return (0x0B)
                        }

                        Return (Zero)
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        CreateDWordField (CRS, \_SB.PCI0.SBRG.HPET._Y05._BAS, HPT)  // _BAS: Base Address
                        Multiply (HPTS, 0x1000, Local0)
                        Add (Local0, 0xFED00000, HPT) /* \_SB_.PCI0.SBRG.HPET._CRS.HPT_ */
                        Return (CRS) /* \_SB_.PCI0.SBRG.HPET.CRS_ */
                    }
                }

                OperationRegion (RX80, PCI_Config, Zero, 0xFF)
                Field (RX80, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x80), 
                    LPCD,   16, 
                    LPCE,   16
                }

                Name (DBPT, Package (0x04)
                {
                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x08)
                    {
                        0x03F8, 
                        0x02F8, 
                        0x0220, 
                        0x0228, 
                        0x0238, 
                        0x02E8, 
                        0x0338, 
                        0x03E8
                    }, 

                    Package (0x03)
                    {
                        0x0378, 
                        0x0278, 
                        0x03BC
                    }, 

                    Package (0x02)
                    {
                        0x03F0, 
                        0x0370
                    }
                })
                Name (DDLT, Package (0x04)
                {
                    Package (0x02)
                    {
                        Zero, 
                        0xFFF8
                    }, 

                    Package (0x02)
                    {
                        0x04, 
                        0xFF8F
                    }, 

                    Package (0x02)
                    {
                        0x08, 
                        0xFCFF
                    }, 

                    Package (0x02)
                    {
                        0x0C, 
                        0xEFFF
                    }
                })
                Method (RRIO, 4, NotSerialized)
                {
                    If (LAnd (LLessEqual (Arg0, 0x03), LGreaterEqual (Arg0, Zero)))
                    {
                        Store (Match (DerefOf (Index (DBPT, Arg0)), MEQ, Arg2, MTR, Zero, Zero), 
                            Local0)
                        If (LNotEqual (Local0, Ones))
                        {
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), Zero)), Local1)
                            Store (DerefOf (Index (DerefOf (Index (DDLT, Arg0)), One)), Local2)
                            ShiftLeft (Local0, Local1, Local0)
                            And (LPCD, Local2, LPCD) /* \_SB_.PCI0.SBRG.LPCD */
                            Or (LPCD, Local0, LPCD) /* \_SB_.PCI0.SBRG.LPCD */
                            WX82 (Arg0, Arg1)
                        }
                    }

                    If (LEqual (Arg0, 0x08))
                    {
                        If (LEqual (Arg2, 0x0200))
                        {
                            WX82 (0x08, Arg0)
                        }
                        ElseIf (LEqual (Arg2, 0x0208))
                        {
                            WX82 (0x09, Arg0)
                        }
                    }

                    If (LAnd (LLessEqual (Arg0, 0x0D), LGreaterEqual (Arg0, 0x0A)))
                    {
                        WX82 (Arg0, Arg1)
                    }
                }

                Method (WX82, 2, NotSerialized)
                {
                    ShiftLeft (One, Arg0, Local0)
                    If (Arg1)
                    {
                        Or (LPCE, Local0, LPCE) /* \_SB_.PCI0.SBRG.LPCE */
                    }
                    Else
                    {
                        Not (Local0, Local0)
                        And (LPCE, Local0, LPCE) /* \_SB_.PCI0.SBRG.LPCE */
                    }
                }

                Method (RDMA, 3, NotSerialized)
                {
                }

                Device (ECIR)
                {
                    Name (_UID, One)  // _UID: Unique ID
                    Name (_HID, EisaId ("ITE8715"))  // _HID: Hardware ID
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Windows 2006"))
                        {
                            Store (0x0A, ILDN) /* \_SB_.PCI0.SBRG.ECIR.ILDN */
                            Store (IACT, Local0)
                            If (LEqual (Local0, 0xFF))
                            {
                                Return (Zero)
                            }

                            If (And (Local0, One))
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (0x0D)
                            }
                        }

                        Return (Zero)
                    }

                    Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
                    {
                        Store (0x0A, ILDN) /* \_SB_.PCI0.SBRG.ECIR.ILDN */
                        And (IACT, 0xFE, IACT) /* \_SB_.PCI0.SBRG.ECIR.IACT */
                    }

                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        Store (0x0A, ILDN) /* \_SB_.PCI0.SBRG.ECIR.ILDN */
                        ShiftLeft (IOH1, 0x08, IIOL) /* \_SB_.PCI0.SBRG.ECIR.IIOL */
                        Or (IOL1, IIOL, IIOL) /* \_SB_.PCI0.SBRG.ECIR.IIOL */
                        Store (IIOL, IIOM) /* \_SB_.PCI0.SBRG.ECIR.IIOM */
                        Store (0x08, ILEN) /* \_SB_.PCI0.SBRG.ECIR.ILEN */
                        If (IRQN)
                        {
                            ShiftLeft (One, IRQN, IRQM) /* \_SB_.PCI0.SBRG.ECIR.IRQM */
                        }
                        Else
                        {
                            Store (Zero, IRQM) /* \_SB_.PCI0.SBRG.ECIR.IRQM */
                        }

                        Return (ICRS) /* \_SB_.PCI0.SBRG.ECIR.ICRS */
                    }

                    Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
                    {
                        CreateWordField (Arg0, 0x09, IRQM)
                        CreateWordField (Arg0, 0x02, IO11)
                        Store (0x0A, ILDN) /* \_SB_.PCI0.SBRG.ECIR.ILDN */
                        And (IO11, 0xFF, IOL1) /* \_SB_.PCI0.SBRG.ECIR.IOL1 */
                        ShiftRight (IO11, 0x08, IOH1) /* \_SB_.PCI0.SBRG.ECIR.IOH1 */
                        Or (IACT, One, IACT) /* \_SB_.PCI0.SBRG.ECIR.IACT */
                        If (IRQM)
                        {
                            FindSetRightBit (IRQM, Local0)
                            Subtract (Local0, One, IRQN) /* \_SB_.PCI0.SBRG.ECIR.IRQN */
                        }
                        Else
                        {
                            Store (Zero, IRQN) /* \_SB_.PCI0.SBRG.ECIR.IRQN */
                        }
                    }

                    Method (_PRS, 0, NotSerialized)  // _PRS: Possible Resource Settings
                    {
                        Return (IRPR) /* \_SB_.PCI0.SBRG.ECIR.IRPR */
                    }

                    OperationRegion (IOIR, SystemIO, ECIO, 0x02)
                    Field (IOIR, ByteAcc, NoLock, Preserve)
                    {
                        ECIX,   8, 
                        ECDA,   8
                    }

                    IndexField (ECIX, ECDA, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x07), 
                        ILDN,   8, 
                        Offset (0x30), 
                        IACT,   8, 
                        Offset (0x60), 
                        IOH1,   8, 
                        IOL1,   8, 
                        IOH2,   8, 
                        IOL2,   8, 
                        Offset (0x70), 
                        IRQN,   8
                    }

                    Name (ICRS, ResourceTemplate ()
                    {
                        IO (Decode16,
                            0x0000,             // Range Minimum
                            0x0000,             // Range Maximum
                            0x01,               // Alignment
                            0x08,               // Length
                            _Y07)
                        IRQNoFlags (_Y06)
                            {11}
                    })
                    CreateWordField (ICRS, \_SB.PCI0.SBRG.ECIR._Y06._INT, IRQM)  // _INT: Interrupts
                    CreateWordField (ICRS, \_SB.PCI0.SBRG.ECIR._Y07._MIN, IIOL)  // _MIN: Minimum Base Address
                    CreateWordField (ICRS, \_SB.PCI0.SBRG.ECIR._Y07._MAX, IIOM)  // _MAX: Maximum Base Address
                    CreateByteField (ICRS, \_SB.PCI0.SBRG.ECIR._Y07._LEN, ILEN)  // _LEN: Length
                    Name (IRPR, ResourceTemplate ()
                    {
                        StartDependentFn (0x00, 0x00)
                        {
                            IO (Decode16,
                                0x0310,             // Range Minimum
                                0x0310,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {11}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x0310,             // Range Minimum
                                0x0310,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {3,6,11}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16,
                                0x0320,             // Range Minimum
                                0x0320,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {3,6,11}
                        }
                        EndDependentFn ()
                    })
                }

                Device (^PCIE)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, 0x11)  // _UID: Unique ID
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0xE0000000,         // Address Base
                            0x10000000,         // Address Length
                            _Y08)
                    })
                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        CreateDWordField (CRS, \_SB.PCI0.PCIE._Y08._BAS, BAS1)  // _BAS: Base Address
                        CreateDWordField (CRS, \_SB.PCI0.PCIE._Y08._LEN, LEN1)  // _LEN: Length
                        Store (PCIB, BAS1) /* \_SB_.PCI0.PCIE._CRS.BAS1 */
                        Store (PCIL, LEN1) /* \_SB_.PCI0.PCIE._CRS.LEN1 */
                        Return (CRS) /* \_SB_.PCI0.PCIE.CRS_ */
                    }
                }

                Device (OMSC)
                {
                    Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */)  // _HID: Hardware ID
                    Name (_UID, Zero)  // _UID: Unique ID
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y09)
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y0A)
                    })
                    Name (CRS1, ResourceTemplate ()
                    {
                        FixedIO (
                            0x0060,             // Address
                            0x01,               // Length
                            )
                        FixedIO (
                            0x0064,             // Address
                            0x01,               // Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y0B)
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y0C)
                    })
                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        If (APIC)
                        {
                            CreateDWordField (CRS, \_SB.PCI0.SBRG.OMSC._Y09._LEN, ML01)  // _LEN: Length
                            CreateDWordField (CRS, \_SB.PCI0.SBRG.OMSC._Y09._BAS, MB01)  // _BAS: Base Address
                            CreateDWordField (CRS, \_SB.PCI0.SBRG.OMSC._Y0A._LEN, ML02)  // _LEN: Length
                            CreateDWordField (CRS, \_SB.PCI0.SBRG.OMSC._Y0A._BAS, MB02)  // _BAS: Base Address
                            Store (0xFEC00000, MB01) /* \_SB_.PCI0.SBRG.OMSC._CRS.MB01 */
                            Store (0x1000, ML01) /* \_SB_.PCI0.SBRG.OMSC._CRS.ML01 */
                            Store (0xFEE00000, MB02) /* \_SB_.PCI0.SBRG.OMSC._CRS.MB02 */
                            Store (0x1000, ML02) /* \_SB_.PCI0.SBRG.OMSC._CRS.ML02 */
                            CreateDWordField (CRS1, \_SB.PCI0.SBRG.OMSC._Y0B._LEN, ML03)  // _LEN: Length
                            CreateDWordField (CRS1, \_SB.PCI0.SBRG.OMSC._Y0B._BAS, MB03)  // _BAS: Base Address
                            CreateDWordField (CRS1, \_SB.PCI0.SBRG.OMSC._Y0C._LEN, ML04)  // _LEN: Length
                            CreateDWordField (CRS1, \_SB.PCI0.SBRG.OMSC._Y0C._BAS, MB04)  // _BAS: Base Address
                            Store (0xFEC00000, MB03) /* \_SB_.PCI0.SBRG.OMSC._CRS.MB03 */
                            Store (0x1000, ML03) /* \_SB_.PCI0.SBRG.OMSC._CRS.ML03 */
                            Store (0xFEE00000, MB04) /* \_SB_.PCI0.SBRG.OMSC._CRS.MB04 */
                            Store (0x1000, ML04) /* \_SB_.PCI0.SBRG.OMSC._CRS.ML04 */
                        }

                        ShiftLeft (0x05, 0x0A, Local0)
                        If (And (IOST, Local0))
                        {
                            Return (CRS) /* \_SB_.PCI0.SBRG.OMSC.CRS_ */
                        }
                        Else
                        {
                            Return (CRS1) /* \_SB_.PCI0.SBRG.OMSC.CRS1 */
                        }
                    }
                }

                Device (^^RMEM)
                {
                    Name (_HID, EisaId ("PNP0C01") /* System Board */)  // _HID: Hardware ID
                    Name (_UID, One)  // _UID: Unique ID
                    Name (CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite,
                            0x00000000,         // Address Base
                            0x000A0000,         // Address Length
                            )
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y0D)
                        Memory32Fixed (ReadOnly,
                            0x000E0000,         // Address Base
                            0x00020000,         // Address Length
                            _Y0E)
                        Memory32Fixed (ReadWrite,
                            0x00100000,         // Address Base
                            0x00000000,         // Address Length
                            _Y0F)
                        Memory32Fixed (ReadOnly,
                            0x00000000,         // Address Base
                            0x00000000,         // Address Length
                            _Y10)
                    })
                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        CreateDWordField (CRS, \_SB.RMEM._Y0D._BAS, BAS1)  // _BAS: Base Address
                        CreateDWordField (CRS, \_SB.RMEM._Y0D._LEN, LEN1)  // _LEN: Length
                        CreateDWordField (CRS, \_SB.RMEM._Y0E._BAS, BAS2)  // _BAS: Base Address
                        CreateDWordField (CRS, \_SB.RMEM._Y0E._LEN, LEN2)  // _LEN: Length
                        CreateDWordField (CRS, \_SB.RMEM._Y0F._LEN, LEN3)  // _LEN: Length
                        CreateDWordField (CRS, \_SB.RMEM._Y10._BAS, BAS4)  // _BAS: Base Address
                        CreateDWordField (CRS, \_SB.RMEM._Y10._LEN, LEN4)  // _LEN: Length
                        If (OSFL ()) {}
                        Else
                        {
                            If (MG1B)
                            {
                                If (LGreater (MG1B, 0x000C0000))
                                {
                                    Store (0x000C0000, BAS1) /* \_SB_.RMEM._CRS.BAS1 */
                                    Subtract (MG1B, BAS1, LEN1) /* \_SB_.RMEM._CRS.LEN1 */
                                }
                            }
                            Else
                            {
                                Store (0x000C0000, BAS1) /* \_SB_.RMEM._CRS.BAS1 */
                                Store (0x00020000, LEN1) /* \_SB_.RMEM._CRS.LEN1 */
                            }

                            If (Add (MG1B, MG1L, Local0))
                            {
                                Store (Local0, BAS2) /* \_SB_.RMEM._CRS.BAS2 */
                                Subtract (0x00100000, BAS2, LEN2) /* \_SB_.RMEM._CRS.LEN2 */
                            }
                        }

                        Subtract (MG2B, 0x00100000, LEN3) /* \_SB_.RMEM._CRS.LEN3 */
                        Store (MH1B, BAS4) /* \_SB_.RMEM._CRS.BAS4 */
                        Subtract (Zero, BAS4, LEN4) /* \_SB_.RMEM._CRS.LEN4 */
                        Return (CRS) /* \_SB_.RMEM.CRS_ */
                    }
                }
            }

            Device (SATA)
            {
                Name (_ADR, 0x001F0002)  // _ADR: Address
                Name (^NATA, Package (0x01)
                {
                    0x001F0002
                })
                Name (\FZTF, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5         // .......
                })
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)  // _REG: Region Availability
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF) /* \_SB_.PCI0.SATA.REGF */
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

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

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0) /* \_SB_.PCI0.SATA.TMD0 */
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT) /* \_SB_.PCI0.SATA.GMPT */
                        Store (Local0, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                        Store (PMUT, GMUT) /* \_SB_.PCI0.SATA.GMUT */
                        Store (PMCR, GMCR) /* \_SB_.PCI0.SATA.GMCR */
                        Store (PSRI, GSPT) /* \_SB_.PCI0.SATA.GSPT */
                        Store (Local1, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                        Store (PSUT, GSUT) /* \_SB_.PCI0.SATA.GSUT */
                        Store (PSCR, GSCR) /* \_SB_.PCI0.SATA.GSCR */
                        STM ()
                        Store (GMPT, PMRI) /* \_SB_.PCI0.SATA.PMRI */
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT) /* \_SB_.PCI0.SATA.PMUT */
                        Store (GMCR, PMCR) /* \_SB_.PCI0.SATA.PMCR */
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT) /* \_SB_.PCI0.SATA.PSUT */
                        Store (GSCR, PSCR) /* \_SB_.PCI0.SATA.PSCR */
                        If (And (Local0, One))
                        {
                            Store (One, PM3E) /* \_SB_.PCI0.SATA.PM3E */
                        }
                        Else
                        {
                            Store (Zero, PM3E) /* \_SB_.PCI0.SATA.PM3E */
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E) /* \_SB_.PCI0.SATA.PM6E */
                        }
                        Else
                        {
                            Store (Zero, PM6E) /* \_SB_.PCI0.SATA.PM6E */
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE) /* \_SB_.PCI0.SATA.PMAE */
                        }
                        Else
                        {
                            Store (Zero, PMAE) /* \_SB_.PCI0.SATA.PMAE */
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E) /* \_SB_.PCI0.SATA.PS3E */
                        }
                        Else
                        {
                            Store (Zero, PS3E) /* \_SB_.PCI0.SATA.PS3E */
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E) /* \_SB_.PCI0.SATA.PS6E */
                        }
                        Else
                        {
                            Store (Zero, PS6E) /* \_SB_.PCI0.SATA.PS6E */
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE) /* \_SB_.PCI0.SATA.PSAE */
                        }
                        Else
                        {
                            Store (Zero, PSAE) /* \_SB_.PCI0.SATA.PSAE */
                        }

                        Store (GTF (Zero, Arg1), ATA0) /* \_SB_.PCI0.SATA.ATA0 */
                        Store (GTF (One, Arg2), ATA1) /* \_SB_.PCI0.SATA.ATA1 */
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0) /* \_SB_.PCI0.SATA.TMD0 */
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT) /* \_SB_.PCI0.SATA.GMPT */
                        Store (Local0, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                        Store (SMUT, GMUT) /* \_SB_.PCI0.SATA.GMUT */
                        Store (SMCR, GMCR) /* \_SB_.PCI0.SATA.GMCR */
                        Store (SSRI, GSPT) /* \_SB_.PCI0.SATA.GSPT */
                        Store (Local1, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                        Store (SSUT, GSUT) /* \_SB_.PCI0.SATA.GSUT */
                        Store (SSCR, GSCR) /* \_SB_.PCI0.SATA.GSCR */
                        STM ()
                        Store (GMPT, SMRI) /* \_SB_.PCI0.SATA.SMRI */
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT) /* \_SB_.PCI0.SATA.SMUT */
                        Store (GMCR, SMCR) /* \_SB_.PCI0.SATA.SMCR */
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT) /* \_SB_.PCI0.SATA.SSUT */
                        Store (GSCR, SSCR) /* \_SB_.PCI0.SATA.SSCR */
                        If (And (Local0, One))
                        {
                            Store (One, SM3E) /* \_SB_.PCI0.SATA.SM3E */
                        }
                        Else
                        {
                            Store (Zero, SM3E) /* \_SB_.PCI0.SATA.SM3E */
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E) /* \_SB_.PCI0.SATA.SM6E */
                        }
                        Else
                        {
                            Store (Zero, SM6E) /* \_SB_.PCI0.SATA.SM6E */
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE) /* \_SB_.PCI0.SATA.SMAE */
                        }
                        Else
                        {
                            Store (Zero, SMAE) /* \_SB_.PCI0.SATA.SMAE */
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E) /* \_SB_.PCI0.SATA.SS3E */
                        }
                        Else
                        {
                            Store (Zero, SS3E) /* \_SB_.PCI0.SATA.SS3E */
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E) /* \_SB_.PCI0.SATA.SS6E */
                        }
                        Else
                        {
                            Store (Zero, SS6E) /* \_SB_.PCI0.SATA.SS6E */
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE) /* \_SB_.PCI0.SATA.SSAE */
                        }
                        Else
                        {
                            Store (Zero, SSAE) /* \_SB_.PCI0.SATA.SSAE */
                        }

                        Store (GTF (Zero, Arg1), ATA2) /* \_SB_.PCI0.SATA.ATA2 */
                        Store (GTF (One, Arg2), ATA3) /* \_SB_.PCI0.SATA.ATA3 */
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0) /* \_SB_.PCI0.SATA.PIO0 */
                    Store (Ones, PIO1) /* \_SB_.PCI0.SATA.PIO1 */
                    Store (Ones, DMA0) /* \_SB_.PCI0.SATA.DMA0 */
                    Store (Ones, DMA1) /* \_SB_.PCI0.SATA.DMA1 */
                    Store (0x10, CHNF) /* \_SB_.PCI0.SATA.CHNF */
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0) /* \_SB_.PCI0.SATA.TMD0 */
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF) /* \_SB_.PCI0.SATA.CHNF */
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), 
                        Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0) /* \_SB_.PCI0.SATA.DMA0 */
                    Store (Local7, PIO0) /* \_SB_.PCI0.SATA.PIO0 */
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF) /* \_SB_.PCI0.SATA.CHNF */
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), 
                        Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1) /* \_SB_.PCI0.SATA.DMA1 */
                    Store (Local7, PIO1) /* \_SB_.PCI0.SATA.PIO1 */
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0) /* \_SB_.PCI0.SATA.DMA0 */
                        Or (CHNF, One, CHNF) /* \_SB_.PCI0.SATA.CHNF */
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1) /* \_SB_.PCI0.SATA.DMA1 */
                        Or (CHNF, 0x04, CHNF) /* \_SB_.PCI0.SATA.CHNF */
                    }

                    Store (TMD0, Debug)
                    Return (TMD0) /* \_SB_.PCI0.SATA.TMD0 */
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                        Store (Zero, GMUT) /* \_SB_.PCI0.SATA.GMUT */
                        Store (Zero, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                        Store (Zero, GSUT) /* \_SB_.PCI0.SATA.GSUT */
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), 
                                Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT) /* \_SB_.PCI0.SATA.GMUT */
                            Or (GMUE, One, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                                Or (GMUE, 0x04, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                            }
                        }
                        ElseIf (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                        {
                            If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                            {
                                Store (DMA0, PIO0) /* \_SB_.PCI0.SATA.PIO0 */
                                Or (GMUE, 0x80, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), 
                                Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT) /* \_SB_.PCI0.SATA.GSUT */
                            Or (GSUE, One, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                                Or (GSUE, 0x04, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                            }
                        }
                        ElseIf (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                        {
                            If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                            {
                                Store (DMA1, PIO1) /* \_SB_.PCI0.SATA.PIO1 */
                                Or (GSUE, 0x80, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 
                            0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT) /* \_SB_.PCI0.SATA.GMPT */
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE) /* \_SB_.PCI0.SATA.GMUE */
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 
                            0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT) /* \_SB_.PCI0.SATA.GSPT */
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE) /* \_SB_.PCI0.SATA.GSUE */
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                     0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF         // .......
                })
                Name (AT02, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90         // .......
                })
                Name (AT03, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6         // .......
                })
                Name (AT04, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91         // .......
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX) /* \_SB_.PCI0.SATA.GTFB.CMDX */
                    Store (Arg1, A001) /* \_SB_.PCI0.SATA.GTFB.A001 */
                    Store (Arg2, A005) /* \_SB_.PCI0.SATA.GTFB.A005 */
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC) /* \_SB_.PCI0.SATA.CMDC */
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49) /* \_SB_.PCI0.SATA.GTF_.ID49 */
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53) /* \_SB_.PCI0.SATA.GTF_.ID53 */
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63) /* \_SB_.PCI0.SATA.GTF_.ID63 */
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59) /* \_SB_.PCI0.SATA.GTF_.ID59 */
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88) /* \_SB_.PCI0.SATA.GTF_.ID88 */
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY) /* \_SB_.PCI0.SATA.GTF_.IRDY */
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT) /* \_SB_.PCI0.SATA.GTF_.PIOT */
                        }
                        Else
                        {
                            Store (PIO0, PIOT) /* \_SB_.PCI0.SATA.GTF_.PIOT */
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT) /* \_SB_.PCI0.SATA.GTF_.DMAT */
                            }
                            Else
                            {
                                Store (DMA0, DMAT) /* \_SB_.PCI0.SATA.GTF_.DMAT */
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY) /* \_SB_.PCI0.SATA.GTF_.IRDY */
                        Store (PIO0, PIOT) /* \_SB_.PCI0.SATA.GTF_.PIOT */
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT) /* \_SB_.PCI0.SATA.GTF_.DMAT */
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), 
                            Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    ElseIf (LAnd (And (ID63, 0xFF00), PIOT))
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 
                            0x03, Local0)
                        Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 
                            0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    ElseIf (And (ID49, 0x0400))
                    {
                        GTFB (AT01, One, Local7)
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB) /* \_SB_.PCI0.SATA.ATAB */
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (Concatenate (RETB, FZTF))
                }
            }

            Device (SAT1)
            {
                Name (_ADR, 0x001F0005)  // _ADR: Address
                Name (REGF, One)
                Method (_REG, 2, NotSerialized)  // _REG: Region Availability
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF) /* \_SB_.PCI0.SAT1.REGF */
                    }
                }

                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

                    Package (0x04)
                    {
                        0x23, 
                        0x21, 
                        0x10, 
                        Zero
                    }, 

                    Package (0x04)
                    {
                        0x0B, 
                        0x09, 
                        0x04, 
                        Zero
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x5A, 
                        0x3C, 
                        0x28, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        One, 
                        0x02, 
                        One, 
                        0x02, 
                        One
                    }, 

                    Package (0x06)
                    {
                        Zero, 
                        Zero, 
                        Zero, 
                        One, 
                        One, 
                        One
                    }, 

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

                    Package (0x04)
                    {
                        0x02, 
                        One, 
                        Zero, 
                        Zero
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, Zero, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    PMPT,   4, 
                    PSPT,   4, 
                    PMRI,   6, 
                    Offset (0x02), 
                    SMPT,   4, 
                    SSPT,   4, 
                    SMRI,   6, 
                    Offset (0x04), 
                    PSRI,   4, 
                    SSRI,   4, 
                    Offset (0x08), 
                    PM3E,   1, 
                    PS3E,   1, 
                    SM3E,   1, 
                    SS3E,   1, 
                    Offset (0x0A), 
                    PMUT,   2, 
                        ,   2, 
                    PSUT,   2, 
                    Offset (0x0B), 
                    SMUT,   2, 
                        ,   2, 
                    SSUT,   2, 
                    Offset (0x0C), 
                    Offset (0x14), 
                    PM6E,   1, 
                    PS6E,   1, 
                    SM6E,   1, 
                    SS6E,   1, 
                    PMCR,   1, 
                    PSCR,   1, 
                    SMCR,   1, 
                    SSCR,   1, 
                        ,   4, 
                    PMAE,   1, 
                    PSAE,   1, 
                    SMAE,   1, 
                    SSAE,   1
                }

                Name (GMPT, Zero)
                Name (GMUE, Zero)
                Name (GMUT, Zero)
                Name (GMCR, Zero)
                Name (GSPT, Zero)
                Name (GSUE, Zero)
                Name (GSUT, Zero)
                Name (GSCR, Zero)
                Device (CHN0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        ShiftLeft (PSCR, One, Local1)
                        Or (PMCR, Local1, Local0)
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local1)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local2)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (PMRI, Local1, PMUT, PSRI, Local2, PSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0) /* \_SB_.PCI0.SAT1.TMD0 */
                        ShiftLeft (PMAE, 0x02, Local3)
                        ShiftLeft (PM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PM3E, Local3, Local0)
                        ShiftLeft (PMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (PSAE, 0x02, Local3)
                        ShiftLeft (PS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (PS3E, Local3, Local1)
                        ShiftLeft (PSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (PMRI, GMPT) /* \_SB_.PCI0.SAT1.GMPT */
                        Store (Local0, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                        Store (PMUT, GMUT) /* \_SB_.PCI0.SAT1.GMUT */
                        Store (PMCR, GMCR) /* \_SB_.PCI0.SAT1.GMCR */
                        Store (PSRI, GSPT) /* \_SB_.PCI0.SAT1.GSPT */
                        Store (Local1, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                        Store (PSUT, GSUT) /* \_SB_.PCI0.SAT1.GSUT */
                        Store (PSCR, GSCR) /* \_SB_.PCI0.SAT1.GSCR */
                        STM ()
                        Store (GMPT, PMRI) /* \_SB_.PCI0.SAT1.PMRI */
                        Store (GMUE, Local0)
                        Store (GMUT, PMUT) /* \_SB_.PCI0.SAT1.PMUT */
                        Store (GMCR, PMCR) /* \_SB_.PCI0.SAT1.PMCR */
                        Store (GSUE, Local1)
                        Store (GSUT, PSUT) /* \_SB_.PCI0.SAT1.PSUT */
                        Store (GSCR, PSCR) /* \_SB_.PCI0.SAT1.PSCR */
                        If (And (Local0, One))
                        {
                            Store (One, PM3E) /* \_SB_.PCI0.SAT1.PM3E */
                        }
                        Else
                        {
                            Store (Zero, PM3E) /* \_SB_.PCI0.SAT1.PM3E */
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, PM6E) /* \_SB_.PCI0.SAT1.PM6E */
                        }
                        Else
                        {
                            Store (Zero, PM6E) /* \_SB_.PCI0.SAT1.PM6E */
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, PMAE) /* \_SB_.PCI0.SAT1.PMAE */
                        }
                        Else
                        {
                            Store (Zero, PMAE) /* \_SB_.PCI0.SAT1.PMAE */
                        }

                        If (And (Local1, One))
                        {
                            Store (One, PS3E) /* \_SB_.PCI0.SAT1.PS3E */
                        }
                        Else
                        {
                            Store (Zero, PS3E) /* \_SB_.PCI0.SAT1.PS3E */
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, PS6E) /* \_SB_.PCI0.SAT1.PS6E */
                        }
                        Else
                        {
                            Store (Zero, PS6E) /* \_SB_.PCI0.SAT1.PS6E */
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, PSAE) /* \_SB_.PCI0.SAT1.PSAE */
                        }
                        Else
                        {
                            Store (Zero, PSAE) /* \_SB_.PCI0.SAT1.PSAE */
                        }

                        Store (GTF (Zero, Arg1), ATA0) /* \_SB_.PCI0.SAT1.ATA0 */
                        Store (GTF (One, Arg2), ATA1) /* \_SB_.PCI0.SAT1.ATA1 */
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_GTM, 0, NotSerialized)  // _GTM: Get Timing Mode
                    {
                        ShiftLeft (SSCR, One, Local1)
                        Or (SMCR, Local1, Local0)
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local1)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local2)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local2, Local3, Local2)
                        Return (GTM (SMRI, Local1, SMUT, SSRI, Local2, SSUT, Local0))
                    }

                    Method (_STM, 3, NotSerialized)  // _STM: Set Timing Mode
                    {
                        Store (Arg0, Debug)
                        Store (Arg0, TMD0) /* \_SB_.PCI0.SAT1.TMD0 */
                        ShiftLeft (SMAE, 0x02, Local3)
                        ShiftLeft (SM6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SM3E, Local3, Local0)
                        ShiftLeft (SMPT, 0x04, Local3)
                        Or (Local0, Local3, Local0)
                        ShiftLeft (SSAE, 0x02, Local3)
                        ShiftLeft (SS6E, One, Local4)
                        Or (Local3, Local4, Local3)
                        Or (SS3E, Local3, Local1)
                        ShiftLeft (SSPT, 0x04, Local3)
                        Or (Local1, Local3, Local1)
                        Store (SMRI, GMPT) /* \_SB_.PCI0.SAT1.GMPT */
                        Store (Local0, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                        Store (SMUT, GMUT) /* \_SB_.PCI0.SAT1.GMUT */
                        Store (SMCR, GMCR) /* \_SB_.PCI0.SAT1.GMCR */
                        Store (SSRI, GSPT) /* \_SB_.PCI0.SAT1.GSPT */
                        Store (Local1, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                        Store (SSUT, GSUT) /* \_SB_.PCI0.SAT1.GSUT */
                        Store (SSCR, GSCR) /* \_SB_.PCI0.SAT1.GSCR */
                        STM ()
                        Store (GMPT, SMRI) /* \_SB_.PCI0.SAT1.SMRI */
                        Store (GMUE, Local0)
                        Store (GMUT, SMUT) /* \_SB_.PCI0.SAT1.SMUT */
                        Store (GMCR, SMCR) /* \_SB_.PCI0.SAT1.SMCR */
                        Store (GSUE, Local1)
                        Store (GSUT, SSUT) /* \_SB_.PCI0.SAT1.SSUT */
                        Store (GSCR, SSCR) /* \_SB_.PCI0.SAT1.SSCR */
                        If (And (Local0, One))
                        {
                            Store (One, SM3E) /* \_SB_.PCI0.SAT1.SM3E */
                        }
                        Else
                        {
                            Store (Zero, SM3E) /* \_SB_.PCI0.SAT1.SM3E */
                        }

                        If (And (Local0, 0x02))
                        {
                            Store (One, SM6E) /* \_SB_.PCI0.SAT1.SM6E */
                        }
                        Else
                        {
                            Store (Zero, SM6E) /* \_SB_.PCI0.SAT1.SM6E */
                        }

                        If (And (Local0, 0x04))
                        {
                            Store (One, SMAE) /* \_SB_.PCI0.SAT1.SMAE */
                        }
                        Else
                        {
                            Store (Zero, SMAE) /* \_SB_.PCI0.SAT1.SMAE */
                        }

                        If (And (Local1, One))
                        {
                            Store (One, SS3E) /* \_SB_.PCI0.SAT1.SS3E */
                        }
                        Else
                        {
                            Store (Zero, SS3E) /* \_SB_.PCI0.SAT1.SS3E */
                        }

                        If (And (Local1, 0x02))
                        {
                            Store (One, SS6E) /* \_SB_.PCI0.SAT1.SS6E */
                        }
                        Else
                        {
                            Store (Zero, SS6E) /* \_SB_.PCI0.SAT1.SS6E */
                        }

                        If (And (Local1, 0x04))
                        {
                            Store (One, SSAE) /* \_SB_.PCI0.SAT1.SSAE */
                        }
                        Else
                        {
                            Store (Zero, SSAE) /* \_SB_.PCI0.SAT1.SSAE */
                        }

                        Store (GTF (Zero, Arg1), ATA2) /* \_SB_.PCI0.SAT1.ATA2 */
                        Store (GTF (One, Arg2), ATA3) /* \_SB_.PCI0.SAT1.ATA3 */
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Method (_GTF, 0, NotSerialized)  // _GTF: Get Task File
                        {
                            Return (RATA (ATA3))
                        }
                    }
                }

                Method (GTM, 7, Serialized)
                {
                    Store (Ones, PIO0) /* \_SB_.PCI0.SAT1.PIO0 */
                    Store (Ones, PIO1) /* \_SB_.PCI0.SAT1.PIO1 */
                    Store (Ones, DMA0) /* \_SB_.PCI0.SAT1.DMA0 */
                    Store (Ones, DMA1) /* \_SB_.PCI0.SAT1.DMA1 */
                    Store (0x10, CHNF) /* \_SB_.PCI0.SAT1.CHNF */
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0) /* \_SB_.PCI0.SAT1.TMD0 */
                    }

                    If (And (Arg1, 0x20))
                    {
                        Or (CHNF, 0x02, CHNF) /* \_SB_.PCI0.SAT1.CHNF */
                    }

                    Store (Match (DerefOf (Index (TIM0, One)), MEQ, Arg0, MTR, Zero, Zero), 
                        Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA0) /* \_SB_.PCI0.SAT1.DMA0 */
                    Store (Local7, PIO0) /* \_SB_.PCI0.SAT1.PIO0 */
                    If (And (Arg4, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF) /* \_SB_.PCI0.SAT1.CHNF */
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x02)), MEQ, Arg3, MTR, Zero, Zero), 
                        Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, Zero)), Local6)), Local7)
                    Store (Local7, DMA1) /* \_SB_.PCI0.SAT1.DMA1 */
                    Store (Local7, PIO1) /* \_SB_.PCI0.SAT1.PIO1 */
                    If (And (Arg1, 0x07))
                    {
                        Store (Arg2, Local5)
                        If (And (Arg1, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg1, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0) /* \_SB_.PCI0.SAT1.DMA0 */
                        Or (CHNF, One, CHNF) /* \_SB_.PCI0.SAT1.CHNF */
                    }

                    If (And (Arg4, 0x07))
                    {
                        Store (Arg5, Local5)
                        If (And (Arg4, 0x02))
                        {
                            Add (Local5, 0x02, Local5)
                        }

                        If (And (Arg4, 0x04))
                        {
                            Add (Local5, 0x04, Local5)
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1) /* \_SB_.PCI0.SAT1.DMA1 */
                        Or (CHNF, 0x04, CHNF) /* \_SB_.PCI0.SAT1.CHNF */
                    }

                    Store (TMD0, Debug)
                    Return (TMD0) /* \_SB_.PCI0.SAT1.TMD0 */
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF)
                    {
                        Store (Zero, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                        Store (Zero, GMUT) /* \_SB_.PCI0.SAT1.GMUT */
                        Store (Zero, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                        Store (Zero, GSUT) /* \_SB_.PCI0.SAT1.GSUT */
                        If (And (CHNF, One))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, Zero, Zero), 
                                Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GMUT) /* \_SB_.PCI0.SAT1.GMUT */
                            Or (GMUE, One, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GMUE, 0x02, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GMUE, 0xFD, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                                Or (GMUE, 0x04, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                            }
                        }
                        ElseIf (Or (LEqual (PIO0, Ones), LEqual (PIO0, Zero)))
                        {
                            If (And (LLess (DMA0, Ones), LGreater (DMA0, Zero)))
                            {
                                Store (DMA0, PIO0) /* \_SB_.PCI0.SAT1.PIO0 */
                                Or (GMUE, 0x80, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                            }
                        }

                        If (And (CHNF, 0x04))
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA1, MTR, Zero, Zero), 
                                Local0)
                            If (LGreater (Local0, 0x05))
                            {
                                Store (0x05, Local0)
                            }

                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), GSUT) /* \_SB_.PCI0.SAT1.GSUT */
                            Or (GSUE, One, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                            If (LGreater (Local0, 0x02))
                            {
                                Or (GSUE, 0x02, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                            }

                            If (LGreater (Local0, 0x04))
                            {
                                And (GSUE, 0xFD, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                                Or (GSUE, 0x04, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                            }
                        }
                        ElseIf (Or (LEqual (PIO1, Ones), LEqual (PIO1, Zero)))
                        {
                            If (And (LLess (DMA1, Ones), LGreater (DMA1, Zero)))
                            {
                                Store (DMA1, PIO1) /* \_SB_.PCI0.SAT1.PIO1 */
                                Or (GSUE, 0x80, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                            }
                        }

                        If (And (CHNF, 0x02))
                        {
                            Or (GMUE, 0x20, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                        }

                        If (And (CHNF, 0x08))
                        {
                            Or (GSUE, 0x20, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO0, MTR, Zero, Zero), 
                            0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, One)), Local0)), Local1)
                        Store (Local1, GMPT) /* \_SB_.PCI0.SAT1.GMPT */
                        If (LLess (Local0, 0x03))
                        {
                            Or (GMUE, 0x50, GMUE) /* \_SB_.PCI0.SAT1.GMUE */
                        }

                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIO1, MTR, Zero, Zero), 
                            0x07, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Store (Local1, GSPT) /* \_SB_.PCI0.SAT1.GSPT */
                        If (LLess (Local0, 0x03))
                        {
                            Or (GSUE, 0x50, GSUE) /* \_SB_.PCI0.SAT1.GSUE */
                        }
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                     0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF         // .......
                })
                Name (AT02, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90         // .......
                })
                Name (AT03, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6         // .......
                })
                Name (AT04, Buffer (0x07)
                {
                     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91         // .......
                })
                Name (ATA0, Buffer (0x1D) {})
                Name (ATA1, Buffer (0x1D) {})
                Name (ATA2, Buffer (0x1D) {})
                Name (ATA3, Buffer (0x1D) {})
                Name (ATAB, Buffer (0x1D) {})
                CreateByteField (ATAB, Zero, CMDC)
                Method (GTFB, 3, Serialized)
                {
                    Multiply (CMDC, 0x38, Local0)
                    Add (Local0, 0x08, Local1)
                    CreateField (ATAB, Local1, 0x38, CMDX)
                    Multiply (CMDC, 0x07, Local0)
                    CreateByteField (ATAB, Add (Local0, 0x02), A001)
                    CreateByteField (ATAB, Add (Local0, 0x06), A005)
                    Store (Arg0, CMDX) /* \_SB_.PCI0.SAT1.GTFB.CMDX */
                    Store (Arg1, A001) /* \_SB_.PCI0.SAT1.GTFB.A001 */
                    Store (Arg2, A005) /* \_SB_.PCI0.SAT1.GTFB.A005 */
                    Increment (CMDC)
                }

                Method (GTF, 2, Serialized)
                {
                    Store (Arg1, Debug)
                    Store (Zero, CMDC) /* \_SB_.PCI0.SAT1.CMDC */
                    Name (ID49, 0x0C00)
                    Name (ID59, Zero)
                    Name (ID53, 0x04)
                    Name (ID63, 0x0F00)
                    Name (ID88, 0x0F00)
                    Name (IRDY, One)
                    Name (PIOT, Zero)
                    Name (DMAT, Zero)
                    If (LEqual (SizeOf (Arg1), 0x0200))
                    {
                        CreateWordField (Arg1, 0x62, IW49)
                        Store (IW49, ID49) /* \_SB_.PCI0.SAT1.GTF_.ID49 */
                        CreateWordField (Arg1, 0x6A, IW53)
                        Store (IW53, ID53) /* \_SB_.PCI0.SAT1.GTF_.ID53 */
                        CreateWordField (Arg1, 0x7E, IW63)
                        Store (IW63, ID63) /* \_SB_.PCI0.SAT1.GTF_.ID63 */
                        CreateWordField (Arg1, 0x76, IW59)
                        Store (IW59, ID59) /* \_SB_.PCI0.SAT1.GTF_.ID59 */
                        CreateWordField (Arg1, 0xB0, IW88)
                        Store (IW88, ID88) /* \_SB_.PCI0.SAT1.GTF_.ID88 */
                    }

                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                        And (CHNF, 0x08, IRDY) /* \_SB_.PCI0.SAT1.GTF_.IRDY */
                        If (And (CHNF, 0x10))
                        {
                            Store (PIO1, PIOT) /* \_SB_.PCI0.SAT1.GTF_.PIOT */
                        }
                        Else
                        {
                            Store (PIO0, PIOT) /* \_SB_.PCI0.SAT1.GTF_.PIOT */
                        }

                        If (And (CHNF, 0x04))
                        {
                            If (And (CHNF, 0x10))
                            {
                                Store (DMA1, DMAT) /* \_SB_.PCI0.SAT1.GTF_.DMAT */
                            }
                            Else
                            {
                                Store (DMA0, DMAT) /* \_SB_.PCI0.SAT1.GTF_.DMAT */
                            }
                        }
                    }
                    Else
                    {
                        And (CHNF, 0x02, IRDY) /* \_SB_.PCI0.SAT1.GTF_.IRDY */
                        Store (PIO0, PIOT) /* \_SB_.PCI0.SAT1.GTF_.PIOT */
                        If (And (CHNF, One))
                        {
                            Store (DMA0, DMAT) /* \_SB_.PCI0.SAT1.GTF_.DMAT */
                        }
                    }

                    If (LAnd (LAnd (And (ID53, 0x04), And (ID88, 0xFF00)), DMAT))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMAT, MTR, Zero, Zero), 
                            Local1)
                        If (LGreater (Local1, 0x05))
                        {
                            Store (0x05, Local1)
                        }

                        GTFB (AT01, Or (0x40, Local1), Local7)
                    }
                    ElseIf (LAnd (And (ID63, 0xFF00), PIOT))
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 
                            0x03, Local0)
                        Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x07)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }

                    If (IRDY)
                    {
                        And (Match (DerefOf (Index (TIM0, Zero)), MGE, PIOT, MTR, Zero, Zero), 
                            0x07, Local0)
                        Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x06)), Local0)), Local1)
                        GTFB (AT01, Local1, Local7)
                    }
                    ElseIf (And (ID49, 0x0400))
                    {
                        GTFB (AT01, One, Local7)
                    }

                    If (LAnd (And (ID59, 0x0100), And (ID59, 0xFF)))
                    {
                        GTFB (AT03, And (ID59, 0xFF), Local7)
                    }

                    Store (ATAB, Debug)
                    Return (ATAB) /* \_SB_.PCI0.SAT1.ATAB */
                }

                Method (RATA, 1, NotSerialized)
                {
                    CreateByteField (Arg0, Zero, CMDN)
                    Multiply (CMDN, 0x38, Local0)
                    CreateField (Arg0, 0x08, Local0, RETB)
                    Store (RETB, Debug)
                    Return (Concatenate (RETB, FZTF))
                }
            }

            Device (USB0)
            {
                Name (_ADR, 0x001D0000)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB0.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB0.USBW */
                    }
                }

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

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

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

            Device (USB1)
            {
                Name (_ADR, 0x001D0001)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB1.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB1.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x04, 0x03))
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001D0002)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB2.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB2.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0C, 0x03))
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x001D0003)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB5.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB5.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x20, 0x03))
                }
            }

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

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

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

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

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0D, 0x03))
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x001A0000)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB3.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB3.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0E, 0x03))
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x001A0001)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB4.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB4.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x05, 0x03))
                }
            }

            Device (USB6)
            {
                Name (_ADR, 0x001A0002)  // _ADR: Address
                OperationRegion (BAR0, PCI_Config, 0xC4, One)
                Field (BAR0, ByteAcc, NoLock, Preserve)
                {
                    USBW,   2, 
                    Offset (0x01)
                }

                Method (_S3D, 0, NotSerialized)  // _S3D: S3 Device State
                {
                    If (LOr (LEqual (OSFL (), One), LEqual (OSFL (), 0x02)))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }

                Method (_PSW, 1, NotSerialized)  // _PSW: Power State Wake
                {
                    If (Arg0)
                    {
                        Store (0x03, USBW) /* \_SB_.PCI0.USB6.USBW */
                    }
                    Else
                    {
                        Store (Zero, USBW) /* \_SB_.PCI0.USB6.USBW */
                    }
                }

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x20, 0x03))
                }
            }

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

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

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

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

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

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

                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0D, 0x03))
                }
            }

            Device (GBE)
            {
                Name (_ADR, 0x00190000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x0D, 0x04))
                }
            }

            Device (P0P4)
            {
                Name (_ADR, 0x001C0000)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR04) /* \_SB_.AR04 */
                    }

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

            Device (P0P5)
            {
                Name (_ADR, 0x001C0001)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR05) /* \_SB_.AR05 */
                    }

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

            Device (P0P6)
            {
                Name (_ADR, 0x001C0002)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR06) /* \_SB_.AR06 */
                    }

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

            Device (P0P7)
            {
                Name (_ADR, 0x001C0003)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR07) /* \_SB_.AR07 */
                    }

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

            Device (P0P8)
            {
                Name (_ADR, 0x001C0004)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR08) /* \_SB_.AR08 */
                    }

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

            Device (P0P9)
            {
                Name (_ADR, 0x001C0005)  // _ADR: Address
                Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                {
                    Return (GPRW (0x09, 0x04))
                }

                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR09) /* \_SB_.AR09 */
                    }

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

        Scope (\_GPE)
        {
            Method (_L09, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.P0P2, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P3, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P4, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P5, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P6, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P7, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P8, 0x02) // Device Wake
                Notify (\_SB.PCI0.P0P9, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L0B, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.P0P1, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L03, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB0, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L04, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB1, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L0C, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB2, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L20, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB5, 0x02) // Device Wake
                Notify (\_SB.PCI0.USB6, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L0D, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.EUSB, 0x02) // Device Wake
                Notify (\_SB.PCI0.USBE, 0x02) // Device Wake
                Notify (\_SB.PCI0.GBE, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L0E, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB3, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }

            Method (_L05, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
            {
                Notify (\_SB.PCI0.USB4, 0x02) // Device Wake
                Notify (\_SB.PWRB, 0x02) // Device Wake
            }
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C") /* Power Button Device */)  // _HID: Hardware ID
            Name (_UID, 0xAA)  // _UID: Unique ID
            Name (_STA, 0x0B)  // _STA: Status
        }
    }

    OperationRegion (_SB.PCI0.SBRG.PIX0, PCI_Config, 0x60, 0x0C)
    Field (\_SB.PCI0.SBRG.PIX0, ByteAcc, NoLock, Preserve)
    {
        PIRA,   8, 
        PIRB,   8, 
        PIRC,   8, 
        PIRD,   8, 
        Offset (0x08), 
        PIRE,   8, 
        PIRF,   8, 
        PIRG,   8, 
        PIRH,   8
    }

    Scope (_SB)
    {
        Name (BUFA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {15}
        })
        CreateWordField (BUFA, One, IRA0)
        Device (LNKA)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, One)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRA, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRA, 0x80, PIRA) /* \PIRA */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRA, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRA) /* \PIRA */
            }
        }

        Device (LNKB)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x02)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRB, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRB, 0x80, PIRB) /* \PIRB */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRB, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRB) /* \PIRB */
            }
        }

        Device (LNKC)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x03)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRC, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRC, 0x80, PIRC) /* \PIRC */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRC, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRC) /* \PIRC */
            }
        }

        Device (LNKD)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x04)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRD, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRD, 0x80, PIRD) /* \PIRD */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRD, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRD) /* \PIRD */
            }
        }

        Device (LNKE)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x05)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRE, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRE, 0x80, PIRE) /* \PIRE */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRE, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRE) /* \PIRE */
            }
        }

        Device (LNKF)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x06)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRF, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRF, 0x80, PIRF) /* \PIRF */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRF, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRF) /* \PIRF */
            }
        }

        Device (LNKG)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x07)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRG, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRG, 0x80, PIRG) /* \PIRG */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRG, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRG) /* \PIRG */
            }
        }

        Device (LNKH)
        {
            Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */)  // _HID: Hardware ID
            Name (_UID, 0x08)  // _UID: Unique ID
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                And (PIRH, 0x80, Local0)
                If (Local0)
                {
                    Return (0x09)
                }
                Else
                {
                    Return (0x0B)
                }
            }

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

            Method (_DIS, 0, NotSerialized)  // _DIS: Disable Device
            {
                Or (PIRH, 0x80, PIRH) /* \PIRH */
            }

            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                And (PIRH, 0x0F, Local0)
                ShiftLeft (One, Local0, IRA0) /* \_SB_.IRA0 */
                Return (BUFA) /* \_SB_.BUFA */
            }

            Method (_SRS, 1, NotSerialized)  // _SRS: Set Resource Settings
            {
                CreateWordField (Arg0, One, IRA)
                FindSetRightBit (IRA, Local0)
                Decrement (Local0)
                Store (Local0, PIRH) /* \PIRH */
            }
        }
    }

    Scope (_SB)
    {
        Name (XCPD, Zero)
        Name (XNPT, One)
        Name (XCAP, 0x02)
        Name (XDCP, 0x04)
        Name (XDCT, 0x08)
        Name (XDST, 0x0A)
        Name (XLCP, 0x0C)
        Name (XLCT, 0x10)
        Name (XLST, 0x12)
        Name (XSCP, 0x14)
        Name (XSCT, 0x18)
        Name (XSST, 0x1A)
        Name (XRCT, 0x1C)
        Mutex (MUTE, 0x00)
        Method (RBPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Release (MUTE)
            Return (XCFG) /* \_SB_.RBPE.XCFG */
        }

        Method (RWPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Release (MUTE)
            Return (XCFG) /* \_SB_.RWPE.XCFG */
        }

        Method (RDPE, 1, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Release (MUTE)
            Return (XCFG) /* \_SB_.RDPE.XCFG */
        }

        Method (WBPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x0FFF)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, One)
            Field (PCFG, ByteAcc, NoLock, Preserve)
            {
                XCFG,   8
            }

            Store (Arg1, XCFG) /* \_SB_.WBPE.XCFG */
            Release (MUTE)
        }

        Method (WWPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFE, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x02)
            Field (PCFG, WordAcc, NoLock, Preserve)
            {
                XCFG,   16
            }

            Store (Arg1, XCFG) /* \_SB_.WWPE.XCFG */
            Release (MUTE)
        }

        Method (WDPE, 2, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            Store (Arg1, XCFG) /* \_SB_.WDPE.XCFG */
            Release (MUTE)
        }

        Method (RWDP, 3, NotSerialized)
        {
            Acquire (MUTE, 0x03E8)
            And (Arg0, 0xFFFFFFFC, Arg0)
            Add (Arg0, PCIB, Local0)
            OperationRegion (PCFG, SystemMemory, Local0, 0x04)
            Field (PCFG, DWordAcc, NoLock, Preserve)
            {
                XCFG,   32
            }

            And (XCFG, Arg2, Local1)
            Or (Local1, Arg1, XCFG) /* \_SB_.RWDP.XCFG */
            Release (MUTE)
        }

        Method (RPME, 1, NotSerialized)
        {
            Add (Arg0, 0x84, Local0)
            Store (RDPE (Local0), Local1)
            If (LEqual (Local1, Ones))
            {
                Return (Zero)
            }
            Else
            {
                If (LAnd (Local1, 0x00010000))
                {
                    WDPE (Local0, And (Local1, 0x00010000))
                    Return (One)
                }

                Return (Zero)
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Name (SUPP, Zero)
            Name (CTRL, Zero)
            CreateDWordField (Arg3, Zero, CDW1)
            CreateDWordField (Arg3, 0x04, CDW2)
            CreateDWordField (Arg3, 0x08, CDW3)
            If (LEqual (Arg0, ToUUID ("33db4d5b-1ff7-401c-9657-7441c03dd766") /* PCI Host Bridge Device */))
            {
                Store (CDW2, SUPP) /* \_SB_.PCI0._OSC.SUPP */
                Store (CDW3, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                If (LNotEqual (And (SUPP, 0x16), 0x16))
                {
                    And (CTRL, 0x1E, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (LNot (PEHP))
                {
                    And (CTRL, 0x1E, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (LNot (SHPC))
                {
                    And (CTRL, 0x1D, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (LNot (PEPM))
                {
                    And (CTRL, 0x1B, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (LNot (PEER))
                {
                    And (CTRL, 0x15, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (LNot (PECS))
                {
                    And (CTRL, 0x0F, CTRL) /* \_SB_.PCI0._OSC.CTRL */
                }

                If (Not (And (CDW1, One)))
                {
                    If (And (CTRL, One)) {}
                    If (And (CTRL, 0x04)) {}
                    If (And (CTRL, 0x10)) {}
                }

                If (LNotEqual (Arg1, One))
                {
                    Or (CDW1, 0x08, CDW1) /* \_SB_.PCI0._OSC.CDW1 */
                }

                If (LNotEqual (CDW3, CTRL))
                {
                    Or (CDW1, 0x10, CDW1) /* \_SB_.PCI0._OSC.CDW1 */
                }

                Store (CTRL, CDW3) /* \_SB_.PCI0._OSC.CDW3 */
                Return (Arg3)
            }
            Else
            {
                Or (CDW1, 0x04, CDW1) /* \_SB_.PCI0._OSC.CDW1 */
                Return (Arg3)
            }
        }
    }

    Scope (_SB.PCI0)
    {
        Device (GFX0)
        {
            Name (_ADR, 0x00020000)  // _ADR: Address
            OperationRegion (IGDM, SystemMemory, 0xDDD9E0E4, 0x2000)
            Field (IGDM, AnyAcc, NoLock, Preserve)
            {
                SIGN,   128, 
                SIZE,   32, 
                OVER,   32, 
                SVER,   256, 
                VVER,   128, 
                GVER,   128, 
                MBOX,   32, 
                Offset (0xE0), 
                KSV0,   32, 
                KSV1,   8, 
                Offset (0xF0), 
                IBTT,   8, 
                IPSC,   2, 
                IPAT,   4, 
                Offset (0xF2), 
                IBIA,   3, 
                IBLC,   2, 
                    ,   1, 
                ITVF,   4, 
                ITVM,   4, 
                Offset (0xF4), 
                IDVM,   1, 
                IDVS,   2, 
                ISSC,   1, 
                Offset (0xF5), 
                Offset (0x100), 
                DRDY,   32, 
                CSTS,   32, 
                CEVT,   32, 
                Offset (0x120), 
                DIDL,   32, 
                DDL2,   32, 
                DDL3,   32, 
                DDL4,   32, 
                DDL5,   32, 
                DDL6,   32, 
                DDL7,   32, 
                DDL8,   32, 
                CPDL,   32, 
                CPL2,   32, 
                CPL3,   32, 
                CPL4,   32, 
                CPL5,   32, 
                CPL6,   32, 
                CPL7,   32, 
                CPL8,   32, 
                CADL,   32, 
                CAL2,   32, 
                CAL3,   32, 
                CAL4,   32, 
                CAL5,   32, 
                CAL6,   32, 
                CAL7,   32, 
                CAL8,   32, 
                NADL,   32, 
                NDL2,   32, 
                NDL3,   32, 
                NDL4,   32, 
                NDL5,   32, 
                NDL6,   32, 
                NDL7,   32, 
                NDL8,   32, 
                ASLP,   32, 
                TIDX,   32, 
                CHPD,   32, 
                CLID,   32, 
                CDCK,   32, 
                SXSW,   32, 
                EVTS,   32, 
                CNOT,   32, 
                NRDY,   32, 
                Offset (0x200), 
                SCIE,   1, 
                GEFC,   4, 
                GXFC,   3, 
                GESF,   8, 
                Offset (0x204), 
                PARM,   32, 
                DSLP,   32, 
                Offset (0x300), 
                ARDY,   32, 
                ASLC,   32, 
                TCHE,   32, 
                ALSI,   32, 
                BCLP,   32, 
                PFIT,   32, 
                CBLV,   32, 
                BCLM,   320, 
                CPFM,   32, 
                EPFM,   32, 
                Offset (0x400), 
                GVD1,   57344
            }

            OperationRegion (TCOI, SystemIO, TOBS, 0x08)
            Field (TCOI, WordAcc, NoLock, Preserve)
            {
                Offset (0x04), 
                    ,   9, 
                SCIS,   1, 
                Offset (0x06)
            }

            Name (DBTB, Package (0x15)
            {
                Zero, 
                0x07, 
                0x38, 
                0x01C0, 
                0x0E00, 
                0x3F, 
                0x01C7, 
                0x0E07, 
                0x01F8, 
                0x0E38, 
                0x0FC0, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                Zero, 
                0x7000, 
                0x7007, 
                0x7038, 
                0x71C0, 
                0x7E00
            })
            Method (GSCI, 0, NotSerialized)
            {
                If (LEqual (GEFC, 0x04))
                {
                    Store (GBDA (), GXFC) /* \_SB_.PCI0.GFX0.GXFC */
                }

                If (LEqual (GEFC, 0x06))
                {
                    Store (SBCB (), GXFC) /* \_SB_.PCI0.GFX0.GXFC */
                }

                Store (One, SCIS) /* \_SB_.PCI0.GFX0.SCIS */
                Store (Zero, GEFC) /* \_SB_.PCI0.GFX0.GEFC */
                Store (Zero, GSSE) /* \_SB_.PCI0.GFX0.GSSE */
                Store (Zero, SCIE) /* \_SB_.PCI0.GFX0.SCIE */
                Return (Zero)
            }

            Method (GBDA, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x0279, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

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

                If (LEqual (GESF, 0x04))
                {
                    And (PARM, 0xEFFF0000, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    And (PARM, ShiftLeft (DerefOf (Index (DBTB, IBTT)), 0x10), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (IBTT, PARM, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x05))
                {
                    Store (IPSC, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, ShiftLeft (IPAT, 0x08), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Add (PARM, 0x0100, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, ShiftLeft (LIDS, 0x10), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    XOr (PARM, 0x00010000, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, ShiftLeft (IBIA, 0x14), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x06))
                {
                    Store (ITVF, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, ShiftLeft (ITVM, 0x04), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x07))
                {
                    Name (MEMS, 0x0D)
                    Store (GIVD, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    XOr (PARM, One, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, ShiftLeft (GMFN, One), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (PARM, 0x1000, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Or (ShiftLeft (CDCT, 0x15), PARM, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    If (LEqual (IDVM, One))
                    {
                        Store (0x11, MEMS) /* \_SB_.PCI0.GFX0.GBDA.MEMS */
                    }

                    If (LLess (TASM, M512))
                    {
                        Or (PARM, ShiftLeft (One, MEMS), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    }
                    ElseIf (LLess (TASM, M1GB))
                    {
                        If (LLess (IDVS, 0x03))
                        {
                            Or (PARM, ShiftLeft (IDVS, MEMS), PARM) /* \_SB_.PCI0.GFX0.PARM */
                        }
                        Else
                        {
                            Or (PARM, ShiftLeft (0x02, MEMS), PARM) /* \_SB_.PCI0.GFX0.PARM */
                        }
                    }
                    Else
                    {
                        Or (PARM, ShiftLeft (IDVS, MEMS), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    }

                    Store (One, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x0A))
                {
                    Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    If (ISSC)
                    {
                        Or (PARM, 0x03, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    }

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

                If (LEqual (GESF, 0x0B))
                {
                    Store (KSV0, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (KSV1, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

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

            Method (SBCB, 0, NotSerialized)
            {
                If (LEqual (GESF, Zero))
                {
                    Store (0x20, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

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

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

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

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

                If (LEqual (GESF, 0x06))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0x0F, ITVF) /* \_SB_.PCI0.GFX0.ITVF */
                        And (PARM, 0xF0, ITVM) /* \_SB_.PCI0.GFX0.ITVM */
                    }

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

                If (LEqual (GESF, 0x07))
                {
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Return (SUCC) /* \SUCC */
                }

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

                If (LEqual (GESF, 0x09))
                {
                    And (PARM, 0xFF, IBTT) /* \_SB_.PCI0.GFX0.IBTT */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x0A))
                {
                    ShiftRight (PARM, 0x1C, Local0)
                    If (LEqual (Local0, Zero))
                    {
                        And (PARM, 0xFF, IPSC) /* \_SB_.PCI0.GFX0.IPSC */
                        Subtract (And (ShiftRight (PARM, 0x08), 0xFF), One, IPAT) /* \_SB_.PCI0.GFX0.IPAT */
                        And (ShiftRight (PARM, 0x12), 0x03, IBLC) /* \_SB_.PCI0.GFX0.IBLC */
                        And (ShiftRight (PARM, 0x14), 0x07, IBIA) /* \_SB_.PCI0.GFX0.IBIA */
                    }

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

                If (LEqual (GESF, 0x0B))
                {
                    If (LEqual (And (ShiftRight (PARM, 0x0B), 0x03), 0x02))
                    {
                        And (ShiftRight (PARM, 0x0D), 0x0F, Local0)
                        And (ShiftRight (PARM, 0x11), 0x0F, Local1)
                        If (Local0)
                        {
                            Store (Zero, IDVM) /* \_SB_.PCI0.GFX0.IDVM */
                            Store (Local0, IDVS) /* \_SB_.PCI0.GFX0.IDVS */
                        }

                        If (Local1)
                        {
                            Store (One, IDVM) /* \_SB_.PCI0.GFX0.IDVM */
                            Store (Local1, IDVS) /* \_SB_.PCI0.GFX0.IDVS */
                        }
                    }

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

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

                If (LEqual (GESF, 0x11))
                {
                    Store (ShiftLeft (LIDS, 0x08), PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Add (PARM, 0x0100, PARM) /* \_SB_.PCI0.GFX0.PARM */
                    Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                    Return (SUCC) /* \SUCC */
                }

                If (LEqual (GESF, 0x12))
                {
                    If (And (PARM, One))
                    {
                        If (LEqual (ShiftRight (PARM, One), One))
                        {
                            Store (One, ISSC) /* \_SB_.PCI0.GFX0.ISSC */
                        }
                        Else
                        {
                            Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */
                            Return (CRIT) /* \CRIT */
                        }
                    }
                    Else
                    {
                        Store (Zero, ISSC) /* \_SB_.PCI0.GFX0.ISSC */
                    }

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

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

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

            Scope (^^PCI0)
            {
                OperationRegion (MCHP, PCI_Config, 0x40, 0xC0)
                Field (MCHP, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x60), 
                    TASM,   10, 
                    Offset (0x62)
                }
            }

            OperationRegion (IGDP, PCI_Config, 0x40, 0xC0)
            Field (IGDP, AnyAcc, NoLock, Preserve)
            {
                Offset (0x12), 
                    ,   1, 
                GIVD,   1, 
                    ,   2, 
                GUMA,   3, 
                Offset (0x14), 
                    ,   4, 
                GMFN,   1, 
                Offset (0x18), 
                Offset (0x8C), 
                CDCT,   10, 
                Offset (0x8E), 
                Offset (0xA8), 
                GSSE,   1, 
                GSSB,   14, 
                GSES,   1, 
                Offset (0xBC), 
                ASLS,   32
            }

            Name (M512, 0x08)
            Name (M1GB, 0x10)
            Scope (\_GPE)
            {
                Method (_L06, 0, NotSerialized)  // _Lxx: Level-Triggered GPE, xx=0x00-0xFF
                {
                    \_SB.PCI0.GFX0.GSCI ()
                }
            }

            Name (OPBS, 0xFFFFFF00)
            Method (OPTS, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (ASLS, OPBS) /* \_SB_.PCI0.GFX0.OPBS */
                }
            }

            Method (OWAK, 1, NotSerialized)
            {
                If (LEqual (Arg0, 0x03))
                {
                    Store (OPBS, ASLS) /* \_SB_.PCI0.GFX0.ASLS */
                    Store (One, GSES) /* \_SB_.PCI0.GFX0.GSES */
                }
            }

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

            Method (_DOD, 0, NotSerialized)  // _DOD: Display Output Devices
            {
                Return (Package (0x01)
                {
                    0x0110
                })
            }

            Device (LCD)
            {
                Name (_ADR, 0x0110)  // _ADR: Address
                Name (_DCS, 0x1F)  // _DCS: Display Current Status
                Name (_DGS, One)  // _DGS: Display Graphics State
                Method (_DSS, 1, NotSerialized)  // _DSS: Device Set State
                {
                }

                Name (PBCL, Package (0x12)
                {
                    0x0F, 
                    0x07, 
                    Zero, 
                    One, 
                    0x02, 
                    0x03, 
                    0x04, 
                    0x05, 
                    0x06, 
                    0x07, 
                    0x08, 
                    0x09, 
                    0x0A, 
                    0x0B, 
                    0x0C, 
                    0x0D, 
                    0x0E, 
                    0x0F
                })
                Method (_BCL, 0, NotSerialized)  // _BCL: Brightness Control Levels
                {
                    Return (PBCL) /* \_SB_.PCI0.GFX0.LCD_.PBCL */
                }

                Method (_BCM, 1, NotSerialized)  // _BCM: Brightness Control Method
                {
                    Store (Arg0, ^^^SBRG.EC0.ECBR) /* \_SB_.PCI0.SBRG.EC0_.ECBR */
                }

                Method (_BQC, 0, NotSerialized)  // _BQC: Brightness Query Current
                {
                    Store (^^^SBRG.EC0.ECBR, Local0)
                    Return (Local0)
                }
            }
        }
    }

    Mutex (MUEC, 0x00)
    Name (ECON, Zero)
    Name (LIDF, One)
    Scope (_SB.PCI0.SBRG)
    {
        Device (EC0)
        {
            Name (_GPE, 0x1A)  // _GPE: General Purpose Events
            Name (TPS, One)
            Name (ATT, 0x3C)
            Name (PTT, 0x3C)
            Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */)  // _HID: Hardware ID
            Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
            {
                IO (Decode16,
                    0x0062,             // Range Minimum
                    0x0062,             // Range Maximum
                    0x00,               // Alignment
                    0x01,               // Length
                    )
                IO (Decode16,
                    0x0066,             // Range Minimum
                    0x0066,             // Range Maximum
                    0x00,               // Alignment
                    0x01,               // Length
                    )
            })
            Method (_REG, 2, NotSerialized)  // _REG: Region Availability
            {
                If (LAnd (LEqual (Arg0, 0x03), LEqual (Arg1, One)))
                {
                    Store (Arg1, ECON) /* \ECON */
                }
            }

            Method (ECAV, 0, NotSerialized)
            {
                Return (ECON) /* \ECON */
            }

            OperationRegion (OPR5, SystemIO, 0x66, One)
            Field (OPR5, ByteAcc, NoLock, Preserve)
            {
                ECCM,   8
            }

            OperationRegion (OPR6, SystemIO, 0x62, One)
            Field (OPR6, ByteAcc, NoLock, Preserve)
            {
                ECDA,   8
            }

            OperationRegion (ECRM, EmbeddedControl, Zero, 0xFF)
            Field (ECRM, ByteAcc, NoLock, Preserve)
            {
                B1RD,   1, 
                B1FU,   1, 
                B1LO,   1, 
                B1CL,   1, 
                    ,   2, 
                B1TW,   1, 
                B1NG,   1, 
                B1PC,   8, 
                B1ST,   16, 
                B1FC,   16, 
                B1RM,   16, 
                B1TP,   16, 
                B1VT,   16, 
                B1CR,   16, 
                B1FG,   16, 
                Offset (0x20), 
                B2RD,   1, 
                B2FU,   1, 
                B2LO,   1, 
                B2CL,   1, 
                    ,   2, 
                B2TW,   1, 
                B2NG,   1, 
                B2PC,   8, 
                B2ST,   16, 
                B2FC,   16, 
                B2RM,   16, 
                B2TP,   16, 
                B2VT,   16, 
                B2CR,   16, 
                B2FG,   16, 
                Offset (0x40), 
                ECOS,   4, 
                Offset (0x41), 
                RTMP,   8, 
                LTMP,   8, 
                Offset (0x44), 
                QTEC,   8, 
                Offset (0x48), 
                ACS,    1, 
                BT1S,   1, 
                BT2S,   1, 
                Offset (0x4A), 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                Offset (0x4B), 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                    ,   1, 
                Offset (0x4F), 
                LIDW,   1, 
                Offset (0x58), 
                TMZO,   8, 
                Offset (0x60), 
                ECMD,   8, 
                EDA1,   8, 
                EDA2,   8, 
                EDA3,   8, 
                Offset (0x7B), 
                ECBR,   8, 
                Offset (0x80), 
                SPTC,   8, 
                SSTS,   8, 
                SADR,   8, 
                SCMD,   8, 
                SDAT,   16, 
                Offset (0xA4), 
                SBCT,   8, 
                SALA,   8, 
                SAD0,   8, 
                SAD1,   8
            }

            Field (ECRM, ByteAcc, NoLock, Preserve)
            {
                Offset (0x4E), 
                LSTE,   1, 
                Offset (0x84), 
                SBLK,   256
            }

            Field (ECRM, ByteAcc, NoLock, Preserve)
            {
                Offset (0x84), 
                SMD0,   8, 
                SMD1,   8
            }

            Method (_Q91, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Acquire (IOMX, 0xFFFF)
                Store (0x91, ECSM) /* \_SB_.ECSM */
                Release (IOMX)
            }

            Method (_Q0F, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Acquire (MUEC, 0xFFFF)
                Notify (^^^GFX0.LCD, 0x86) // Device-Specific
                Release (MUEC)
            }

            Method (_Q10, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Acquire (MUEC, 0xFFFF)
                Notify (^^^GFX0.LCD, 0x87) // Device-Specific
                Release (MUEC)
            }

            Method (_Q11, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Acquire (MUEC, 0xFFFF)
                Notify (^^^P0P2.VGA.LCD, 0x86) // Device-Specific
                Release (MUEC)
            }

            Method (_Q12, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Acquire (MUEC, 0xFFFF)
                Notify (^^^P0P2.VGA.LCD, 0x87) // Device-Specific
                Release (MUEC)
            }

            Method (_QE1, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE2, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE3, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE4, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE5, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE6, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE7, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE8, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QE9, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QEA, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_QEB, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
            }

            Method (_Q80, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
            }

            Method (_Q81, 0, NotSerialized)  // _Qxx: EC Query, xx=0x00-0xFF
            {
                Notify (\_TZ.TZ01, 0x80) // Thermal Status Change
            }

            Method (EPTS, 1, NotSerialized)
            {
                If (LEqual (Arg0, One))
                {
                    Or (QTEC, 0x40, QTEC) /* \_SB_.PCI0.SBRG.EC0_.QTEC */
                }
            }

            Method (EWAK, 1, NotSerialized)
            {
                If (LEqual (Arg0, One))
                {
                    And (QTEC, 0xBF, QTEC) /* \_SB_.PCI0.SBRG.EC0_.QTEC */
                }
            }
        }
    }

    Method (DC2S, 1, NotSerialized)
    {
        Name (STR1, Buffer (0x21)
        {
            "000000                          "
        })
        Store (Arg0, Local1)
        Store (0x05, Local3)
        While (LGreater (Local1, Zero))
        {
            Store (Zero, Local0)
            Divide (Local1, 0x0A, Local0, Local1)
            And (Local0, 0x0F, Local0)
            Or (Local0, 0x30, Local0)
            Store (Local0, Index (STR1, Local3))
            Decrement (Local3)
        }

        Return (STR1) /* \DC2S.STR1 */
    }

    Name (TSAD, 0x12)
    Name (TMIN, 0x91)
    Name (TMAX, 0xA5)
    Name (TCRT, 0x5D)
    Name (THOT, 0x5A)
    Name (TSP, 0x3C)
    Name (TC1, 0x04)
    Name (TC2, 0x03)
    Name (FAN, One)
    Alias (\_SB.PCI0.SBRG.EC0.RTMP, RTMP)
    Alias (\_SB.PCI0.SBRG.EC0.PTT, PTT)
    Alias (\_SB.PCI0.SBRG.EC0.ATT, ATT)
    Scope (_TZ)
    {
        PowerResource (PFAN, 0x00, 0x0000)
        {
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (FAN) /* \FAN_ */
            }

            Method (_ON, 0, NotSerialized)  // _ON_: Power On
            {
                Store (One, FAN) /* \FAN_ */
            }

            Method (_OFF, 0, NotSerialized)  // _OFF: Power Off
            {
                Store (Zero, FAN) /* \FAN_ */
            }
        }

        Method (KELV, 1, NotSerialized)
        {
            And (Arg0, 0xFF, Local0)
            Multiply (Local0, 0x0A, Local0)
            Add (Local0, 0x0AAC, Local0)
            Return (Local0)
        }

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

        ThermalZone (TZ01)
        {
            Name (SCP, Zero)
            Name (TAL0, 0x32)
            Name (TPSV, 0x46)
            Method (_SCP, 1, NotSerialized)  // _SCP: Set Cooling Policy
            {
                If (\_SB.PCI0.SBRG.EC0.ECAV ())
                {
                    If (LNotEqual (Arg0, SCP))
                    {
                        Store (Arg0, SCP) /* \_TZ_.TZ01.SCP_ */
                        Store (TAL0, Local0)
                        Store (TPSV, TAL0) /* \_TZ_.TZ01.TAL0 */
                        Store (Local0, TPSV) /* \_TZ_.TZ01.TPSV */
                        If (MIEC)
                        {
                            Store (TAL0, ATT) /* \ATT_ */
                            Store (TPSV, PTT) /* \PTT_ */
                        }

                        Notify (TZ01, 0x81) // Thermal Trip Point Change
                    }
                }
            }

            Method (_TMP, 0, NotSerialized)  // _TMP: Temperature
            {
                Store (\_SB.PCI0.SBRG.EC0.TMZO, Local0)
                Return (KELV (Local0))
            }

            Method (_AC0, 0, NotSerialized)  // _ACx: Active Cooling, x=0-9
            {
                Return (Add (0x0AAC, Multiply (TAL0, 0x0A)))
            }

            Name (_AL0, Package (0x01)  // _ALx: Active List, x=0-9
            {
                FAN0
            })
            Method (_CRT, 0, NotSerialized)  // _CRT: Critical Temperature
            {
                Return (0x0E62)
            }

            Method (_PSV, 0, NotSerialized)  // _PSV: Passive Temperature
            {
                Return (Add (0x0AAC, Multiply (TPSV, 0x0A)))
            }

            Name (PSL1, Package (0x01)
            {
                \_PR.CPU1
            })
            Name (PSL2, Package (0x01)
            {
                \_PR.CPU1
            })
            Method (_PSL, 0, NotSerialized)  // _PSL: Passive List
            {
                Return (PSL1) /* \_TZ_.TZ01.PSL1 */
            }

            Name (_TC1, 0x04)  // _TC1: Thermal Constant 1
            Name (_TC2, 0x03)  // _TC2: Thermal Constant 2
            Name (_TSP, 0x96)  // _TSP: Thermal Sampling Period
        }
    }

    Scope (_SB)
    {
        Scope (PCI0)
        {
            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x00FF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0100,             // Length
                    ,, )
                IO (Decode16,
                    0x0CF8,             // Range Minimum
                    0x0CF8,             // Range Maximum
                    0x01,               // Alignment
                    0x08,               // Length
                    )
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0000,             // Range Minimum
                    0x0CF7,             // Range Maximum
                    0x0000,             // Translation Offset
                    0x0CF8,             // Length
                    ,, , TypeStatic, DenseTranslation)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,             // Granularity
                    0x0D00,             // Range Minimum
                    0xFFFF,             // Range Maximum
                    0x0000,             // Translation Offset
                    0xF300,             // 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
                    0x000DFFFF,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00020000,         // Length
                    ,, _Y11, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y12, AddressRangeMemory, TypeStatic)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,         // Granularity
                    0x00000000,         // Range Minimum
                    0x00000000,         // Range Maximum
                    0x00000000,         // Translation Offset
                    0x00000000,         // Length
                    ,, _Y13, AddressRangeMemory, TypeStatic)
            })
            CreateDWordField (CRS, \_SB.PCI0._Y11._MIN, MIN5)  // _MIN: Minimum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y11._MAX, MAX5)  // _MAX: Maximum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y11._LEN, LEN5)  // _LEN: Length
            CreateDWordField (CRS, \_SB.PCI0._Y12._MIN, MIN6)  // _MIN: Minimum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y12._MAX, MAX6)  // _MAX: Maximum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y12._LEN, LEN6)  // _LEN: Length
            CreateDWordField (CRS, \_SB.PCI0._Y13._MIN, MIN7)  // _MIN: Minimum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y13._MAX, MAX7)  // _MAX: Maximum Base Address
            CreateDWordField (CRS, \_SB.PCI0._Y13._LEN, LEN7)  // _LEN: Length
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Store (MG1L, Local0)
                If (Local0)
                {
                    Store (MG1B, MIN5) /* \_SB_.PCI0.MIN5 */
                    Store (MG1L, LEN5) /* \_SB_.PCI0.LEN5 */
                    Add (MIN5, Decrement (Local0), MAX5) /* \_SB_.PCI0.MAX5 */
                }

                Store (MG2B, MIN6) /* \_SB_.PCI0.MIN6 */
                Store (MG2L, LEN6) /* \_SB_.PCI0.LEN6 */
                Store (MG2L, Local0)
                Add (MIN6, Decrement (Local0), MAX6) /* \_SB_.PCI0.MAX6 */
                Store (MG3B, MIN7) /* \_SB_.PCI0.MIN7 */
                Store (MG3L, LEN7) /* \_SB_.PCI0.LEN7 */
                Store (MG3L, Local0)
                Add (MIN7, Decrement (Local0), MAX7) /* \_SB_.PCI0.MAX7 */
                Return (CRS) /* \_SB_.PCI0.CRS_ */
            }
        }
    }

    Name (WOTB, Zero)
    Name (WSSB, Zero)
    Name (WAXB, Zero)
    Method (_PTS, 1, NotSerialized)  // _PTS: Prepare To Sleep
    {
        Store (Arg0, DBG8) /* \DBG8 */
        PTS (Arg0)
        Store (Zero, Index (WAKP, Zero))
        Store (Zero, Index (WAKP, One))
        If (LAnd (LEqual (Arg0, 0x04), LEqual (OSFL (), 0x02)))
        {
            Sleep (0x0BB8)
        }

        Store (ASSB, WSSB) /* \WSSB */
        Store (AOTB, WOTB) /* \WOTB */
        Store (AAXB, WAXB) /* \WAXB */
        Store (Arg0, ASSB) /* \ASSB */
        Store (OSFL (), AOTB) /* \AOTB */
        Store (OSYS (), OSTP) /* \OSTP */
        Store (Zero, AAXB) /* \AAXB */
    }

    Method (_WAK, 1, NotSerialized)  // _WAK: Wake
    {
        WAK (Arg0)
        If (ASSB)
        {
            Store (WSSB, ASSB) /* \ASSB */
            Store (WOTB, AOTB) /* \AOTB */
            Store (WAXB, AAXB) /* \AAXB */
        }

        If (DerefOf (Index (WAKP, Zero)))
        {
            Store (Zero, Index (WAKP, One))
        }
        Else
        {
            Store (Arg0, Index (WAKP, One))
        }

        ShiftLeft (Arg0, 0x04, DBG8) /* \DBG8 */
        Return (WAKP) /* \WAKP */
    }

    Name (_S0, Package (0x04)  // _S0_: S0 System State
    {
        Zero, 
        Zero, 
        Zero, 
        Zero
    })
    If (SS1)
    {
        Name (_S1, Package (0x04)  // _S1_: S1 System State
        {
            One, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS3)
    {
        Name (_S3, Package (0x04)  // _S3_: S3 System State
        {
            0x05, 
            Zero, 
            Zero, 
            Zero
        })
    }

    If (SS4)
    {
        Name (_S4, Package (0x04)  // _S4_: S4 System State
        {
            0x06, 
            Zero, 
            Zero, 
            Zero
        })
    }

    Name (_S5, Package (0x04)  // _S5_: S5 System State
    {
        0x07, 
        Zero, 
        Zero, 
        Zero
    })
    Method (PTS, 1, NotSerialized)
    {
        If (Arg0)
        {
            \_SB.PCI0.NPTS (Arg0)
            \_SB.PCI0.SBRG.SPTS (Arg0)
            \_SB.PCI0.GFX0.OPTS (Arg0)
            \_SB.PCI0.SBRG.EC0.EPTS (Arg0)
        }
    }

    Method (WAK, 1, NotSerialized)
    {
        \_SB.PCI0.NWAK (Arg0)
        \_SB.PCI0.SBRG.SWAK (Arg0)
        \_SB.PCI0.GFX0.OWAK (Arg0)
        \_SB.PCI0.SBRG.EC0.EWAK (Arg0)
    }
}

And this is where I can't move forward, since I don't know how to code, much less doing so with the seemingly very specific programming language that is used in ACPI tables or simply what to do (add, remove or edit something?, etc).
I did read the Dortania guides, which looks fine for simple issues, but the "shifting" ACPI rules are on another whole level.

For more details, I've attached the DSDT and SSDTs in a zip file. There's untouched files, then the simply disassembled ones, the ones that were disassembled with a "refs.txt" file.
There's also the command lines that were used for each steps, their outputs, the "refs.txt" file when it's used, the C Headers, Hex files and .aml files if things got successfully compiled.
Do note that there's also SSDTs in every "dynamic" folder.

Thanks for anyone who'll be able to fix that issue, or give me clues about how to solve it.
It did questioned my sanity though.

ACPI-Tables.zip

Edited by X-0v3r

Am I doing something wrong to be the only guy who hasn't got any replies since February 5?

If someone needs more intel, please do tell me so I can add more. I may not know what you guys exactly need.

  • 1 month later...

You've done nothing wrong, much to the contrary, but you have old hardware, which many may be unfamiliar with, you have complex issues and you've already been far in analysing them. It's unfortunately possible that no one has any further insight.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...