Latest ACPI changes causing Interrupt Storm

Jiawei Ye leafy7382 at gmail.com
Wed Aug 11 21:44:47 PDT 2004


kernel 30 mins old. dmesg -a, please also note the failing fdc, this
has been broken for months.

Copyright (c) 1992-2004 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 5.2-CURRENT #2: Thu Aug 12 12:19:04 CST 2004
    leafy at chihiro.leafy.idv.tw:/usr/obj/usr/src/sys/CHIHIRO
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 1.80GHz (1794.56-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf12  Stepping = 2
  Features=0x3febf9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM>
real memory  = 268369920 (255 MB)
avail memory = 252952576 (241 MB)
netsmb_dev: loaded
npx0: [FAST]
npx0: <math processor> on motherboard
npx0: INT 16 interface
acpi0: <AMIINT AMIINT10> on motherboard
acpi0: [GIANT-LOCKED]
acpi0: Power Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
cpu0: <ACPI CPU (3 Cx states)> on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKD resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKD
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKH resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKH
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKB
acpi link set: \\_SB_.LNKB resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKB
agp0: <Intel 82850 host to AGP bridge> mem 0xe8000000-0xebffffff at
device 0.0 on pci0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 11 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 10 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 5 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 9 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 12 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 7 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 6 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 4 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 3 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 15 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
pcib1: _SRS failed, irq 14 via \\_SB_.LNKA
pci1: <display, VGA> at device 0.0 (no driver attached)
pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci2: <ACPI PCI bus> on pcib2
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKF resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKF
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKG resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKG
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 11 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 10 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 5 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 9 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 12 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 7 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 6 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 4 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 3 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 15 via \\_SB_.LNKA
acpi link set: \\_SB_.LNKA resource is not an IRQ (2)
unknown: _SRS failed, irq 14 via \\_SB_.LNKA
rl0: <RealTek 8139 10/100BaseTX> port 0xa800-0xa8ff mem
0xefefef00-0xefefefff irq 10 at device 1.0 on pci2
miibus0: <MII bus> on rl0
rlphy0: <RealTek internal media interface> on miibus0
rlphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
rl0: Ethernet address: 00:40:95:07:53:6b
rl0: [GIANT-LOCKED]
fxp0: <Intel 82558 Pro/100 Ethernet> port 0xa400-0xa41f mem
0xefd00000-0xefdfffff,0xe77ff000-0xe77fffff irq 9 at device 2.0 on
pci2
miibus1: <MII bus> on fxp0
inphy0: <i82555 10/100 media interface> on miibus1
inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
fxp0: Ethernet address: 00:90:27:13:a4:48
fxp0: [GIANT-LOCKED]
ahc0: <Adaptec 2940B Ultra2 SCSI adapter> port 0xac00-0xacff mem
0xefeff000-0xefefffff irq 11 at device 3.0 on pci2
ahc0: [GIANT-LOCKED]
aic7890/91: Ultra2 Wide Channel A, SCSI Id=7, 32/253 SCBs
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel ICH2 UDMA100 controller> port
0xff00-0xff0f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 31.1 on
pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <Intel 82801BA/BAM (ICH2) USB controller USB-A> port
0xcc00-0xcc1f irq 10 at device 31.2 on pci0
uhci0: [GIANT-LOCKED]
usb0: <Intel 82801BA/BAM (ICH2) USB controller USB-A> on uhci0
usb0: USB revision 1.0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
pci0: <serial bus, SMBus> at device 31.3 (no driver attached)
uhci1: <Intel 82801BA/BAM (ICH2) USB controller USB-B> port
0xd400-0xd41f irq 10 at device 31.4 on pci0
uhci1: [GIANT-LOCKED]
usb1: <Intel 82801BA/BAM (ICH2) USB controller USB-B> on uhci1
usb1: USB revision 1.0
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
pcm0: <Intel ICH2 (82801BA)> port 0xd800-0xd83f,0xdc00-0xdcff irq 5 at
device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <SigmaTel STAC9700/83/84 AC97 Codec>
acpi_button1: <Sleep Button> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
fdc0: <floppy drive controller> port 0x3f7,0x3f4-0x3f5,0x3f2-0x3f3 irq
6 drq 2 on acpi0
fdc0: I/O to control range incorrect
device_attach: fdc0 attach returned 6
sio0 port 0x3f8-0x3ff irq 4 on acpi0
sio0: type 16550A
sio1 port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A
fdc0: <floppy drive controller> port 0x3f7,0x3f4-0x3f5,0x3f2-0x3f3 irq
6 drq 2 on acpi0
fdc0: I/O to control range incorrect
device_attach: fdc0 attach returned 6
orm0: <ISA Option ROMs> at iomem
0xe0000-0xe0fff,0xcc000-0xd17ff,0xc0000-0xcbfff on isa0
pmtimer0 on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
Timecounter "TSC" frequency 1794555960 Hz quality 800
Timecounters tick every 0.976 msec
Waiting 15 seconds for SCSI devices to settle
Interrupt storm detected on "irq5: pcm0"; throttling interrupt source
Interrupt storm detected on "irq10: rl0 uhci0+"; throttling interrupt source
Interrupt storm detected on "irq11: ahc0"; throttling interrupt source
acpi_cpu: throttling enabled, 8 steps (100% to 12.5%), currently 100.0%
da0 at ahc0 bus 0 target 0 lun 0
da0: <IBM-PSG DNES-309170W  !# SAB0> Fixed Direct Access SCSI-3 device 
da0: 80.000MB/s transfers (40.000MHz, offset 30, 16bit), Tagged Queueing Enabled
da0: 8678MB (17774160 512 byte sectors: 255H 63S/T 1106C)
Mounting root from ufs:/dev/da0s1a
-------------- next part --------------
/*
  RSD PTR: OEM=AMI, ACPI_Rev=1.0x (0)
	RSDT=0x0fff0000, cksum=156
 */
/*
  RSDT: Length=40, Revision=1, Checksum=14,
	OEMID=AMIINT, OEM Table ID=AMIINT10, OEM Revision=0x1011,
	Creator ID=MSFT, Creator Revision=0x100000d
	Entries={ 0x0fff0030 }
 */
/*
  FACP: Length=116, Revision=1, Checksum=120,
	OEMID=AMIINT, OEM Table ID=AMIINT10, OEM Revision=0x1011,
	Creator ID=MSFT, Creator Revision=0x100000d
 	FACS=0xfff8000, DSDT=0xfff00b0
	INT_MODEL=PIC
	Preferred_PM_Profile=Unspecified (0)
	SCI_INT=9
	SMI_CMD=0xb2, ACPI_ENABLE=0xe1, ACPI_DISABLE=0x1e, S4BIOS_REQ=0x1f
	PSTATE_CNT=0x0
	PM1a_EVT_BLK=0x400-0x403
	PM1a_CNT_BLK=0x404-0x405
	PM2_CNT_BLK=0x420-0x420
	PM_TMR_BLK=0x408-0x40b
	GPE0_BLK=0x428-0x42b
	GPE1_BLK=0x42c-0x42f, GPE1_BASE=16
	P_LVL2_LAT=100 us, P_LVL3_LAT=1000 us
	FLUSH_SIZE=1024, FLUSH_STRIDE=16
	DUTY_OFFSET=1, DUTY_WIDTH=3
	DAY_ALRM=13, MON_ALRM=0, CENTURY=50
	IAPC_BOOT_ARCH=
	Flags={WBINVD,PROC_C1,SLP_BUTTON}
 */
/*
  FACS:	Length=64, HwSig=0x00000000, Firm_Wake_Vec=0x00000000
	Global_Lock=
	Flags=
	Version=0
 */
/*
  DSDT: Length=12551, Revision=1, Checksum=89,
	OEMID=INTEL, OEM Table ID=WHITNEY, OEM Revision=0x1000,
	Creator ID=MSFT, Creator Revision=0x100000d
 */
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20040527
 *
 * Disassembly of /tmp/acpidump.3fiW25, Thu Aug 12 12:41:42 2004
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL", "WHITNEY", 4096)
{
    Scope (\_PR)
    {
        Processor (CPU1, 0x01, 0x00000410, 0x06) {}
    }

    OperationRegion (CM72, SystemIO, 0x72, 0x02)
    Field (CM72, ByteAcc, NoLock, Preserve)
    {
        CI72,   8, 
        CO73,   8
    }

    IndexField (CI72, CO73, ByteAcc, NoLock, Preserve)
    {
        Offset (0xD5), 
        ULED,   8, 
        Offset (0xDA), 
        UASB,   1, 
        USBE,   1, 
        FLOS,   2, 
        Offset (0xDC), 
            ,   3, 
            ,   1, 
        ACST,   3, 
        Offset (0xDE), 
        LNRI,   8
    }

    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S1, Package (0x04)
    {
        0x01, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S4, Package (0x04)
    {
        0x06, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S5, Package (0x04)
    {
        0x07, 
        0x00, 
        0x00, 
        0x00
    })
    Method (MCTH, 2, NotSerialized)
    {
        If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
        {
            Return (0x00)
        }

        Add (SizeOf (Arg0), 0x01, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0)))) {}
            Else
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    Scope (\_SB)
    {
        Name (APIC, 0x00)
        Method (_PIC, 1, NotSerialized)
        {
            Store (Arg0, APIC)
        }

        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Method (_STA, 0, NotSerialized)
            {
                Return (0x0B)
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_UID, 0x01)
            Name (_ADR, 0x00)
            Name (_BBN, 0x00)
            Name (SS3D, 0x02)
            Name (CRS, ResourceTemplate ()
            {
                WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
                    0x0000,
                    0x0000,
                    0x00FF,
                    0x0000,
                    0x0100)
                IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,
                    0x0000,
                    0x0CF7,
                    0x0000,
                    0x0CF8)
                WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                    0x0000,
                    0x0D00,
                    0xFFFF,
                    0x0000,
                    0xF300)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x000A0000,
                    0x000BFFFF,
                    0x00000000,
                    0x00020000)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x000CB000,
                    0x000DFFFF,
                    0x00000000,
                    0x00015000)
                DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                    0x00000000,
                    0x20000000,
                    0xFFDFFFFF,
                    0x00000000,
                    0xDFE00000)
            })
            OperationRegion (TMEM, PCI_Config, 0x7E, 0x02)
            Field (TMEM, WordAcc, NoLock, Preserve)
            {
                MEMT,   11
            }

            Name (TOM, 0x00)
            Method (MDET, 0, NotSerialized)
            {
                If (LNot (TOM))
                {
                    If (FLAG)
                    {
                        ShiftLeft (MEMT, 0x18, TOM)
                    }
                    Else
                    {
                        Return (0x20000000)
                    }
                }

                Return (TOM)
            }

            Name (FLAG, 0x01)
            Name (OSFL, 0x02)
            Method (_INI, 0, NotSerialized)
            {
                \_SB.PCI0.SBRG.IODT ()
                If (MCTH (\_OS, "Microsoft Windows"))
                {
                    Store (0x02, OSFL)
                }
                Else
                {
                    If (MCTH (\_OS, "Microsoft WindowsME: Millennium Edition"))
                    {
                        Store (0x03, OSFL)
                    }
                    Else
                    {
                        Store (0x01, OSFL)
                    }
                }
            }

            Method (_REG, 2, NotSerialized)
            {
                If (LEqual (Arg0, 0x02))
                {
                    Store (Arg1, FLAG)
                }
            }

            Method (_CRS, 0, NotSerialized)
            {
                CreateDWordField (CRS, 0x76, TMEM)
                CreateDWordField (CRS, 0x82, TLEN)
                Store (MDET (), TMEM)
                Subtract (0xFFE00000, TMEM, TLEN)
                Return (CRS)
            }

            Name (_PRT, Package (0x06)
            {
                Package (0x04)
                {
                    0x001FFFFF, 
                    0x00, 
                    \_SB.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x01, 
                    \_SB.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x02, 
                    \_SB.LNKH, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x001FFFFF, 
                    0x03, 
                    \_SB.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x00, 
                    LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0001FFFF, 
                    0x01, 
                    LNKB, 
                    0x00
                }
            })
            Device (SBRG)
            {
                Name (_ADR, 0x001F0000)
                Name (\_SB.IPRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IRQ (Level, ActiveLow, Shared) {3,4,5,6,7,9,10,11,12,14,15}
                    }
                    EndDependentFn ()
                })
                OperationRegion (PIX0, PCI_Config, 0x60, 0x04)
                OperationRegion (PIX1, PCI_Config, 0x68, 0x04)
                OperationRegion (LPC0, PCI_Config, 0xE0, 0x08)
                OperationRegion (LPC1, PCI_Config, 0xEC, 0x02)
                Scope (\_SB)
                {
                    Field (\_SB.PCI0.SBRG.PIX0, ByteAcc, NoLock, Preserve)
                    {
                        PIRA,   8, 
                        PIRB,   8, 
                        PIRC,   8, 
                        PIRD,   8
                    }

                    Field (\_SB.PCI0.SBRG.PIX1, ByteAcc, NoLock, Preserve)
                    {
                        PIRE,   8, 
                        PIRF,   8, 
                        PIRG,   8, 
                        PIRH,   8
                    }

                    Field (\_SB.PCI0.SBRG.LPC0, ByteAcc, NoLock, Preserve)
                    {
                        LPCA,   3, 
                            ,   1, 
                        LPCB,   3, 
                        Offset (0x01), 
                        LPLP,   2, 
                            ,   2, 
                        LPFD,   1, 
                        Offset (0x02), 
                        LPSB,   2, 
                            ,   1, 
                        LPMD,   1, 
                        LPMS,   2, 
                        Offset (0x03), 
                        Offset (0x04), 
                        GEN1,   16, 
                        CAEN,   1, 
                        CBEN,   1, 
                        LPEN,   1, 
                        FDEN,   1, 
                        SBEN,   1, 
                        MDEN,   1, 
                        MSEN,   1, 
                        ADEN,   1, 
                        GMLE,   1, 
                        GMHE,   1, 
                        KBEN,   1, 
                        MCEN,   1, 
                        CF1E,   1, 
                        CF2E,   1, 
                        Offset (0x08)
                    }

                    Field (\_SB.PCI0.SBRG.LPC1, ByteAcc, NoLock, Preserve)
                    {
                        GEN2,   16
                    }

                    Name (BUFA, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {15}
                    })
                    CreateWordField (BUFA, 0x01, IRA0)
                    Device (LNKA)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x01)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRA, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRA, 0x80, PIRA)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRA, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRA)
                        }
                    }

                    Device (LNKB)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x02)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRB, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRB, 0x80, PIRB)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRB, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRB)
                        }
                    }

                    Device (LNKC)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x03)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRC, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRC, 0x80, PIRC)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRC, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRC)
                        }
                    }

                    Device (LNKD)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x04)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRD, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRD, 0x80, PIRD)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRD, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRD)
                        }
                    }

                    Device (LNKE)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x05)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRE, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRE, 0x80, PIRE)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRE, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRE)
                        }
                    }

                    Device (LNKF)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x06)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRF, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRF, 0x80, PIRF)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRF, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRF)
                        }
                    }

                    Device (LNKG)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x07)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRG, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRG, 0x80, PIRG)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRG, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRG)
                        }
                    }

                    Device (LNKH)
                    {
                        Name (_HID, EisaId ("PNP0C0F"))
                        Name (_UID, 0x08)
                        Method (_STA, 0, NotSerialized)
                        {
                            And (PIRH, 0x80, Local0)
                            If (Local0)
                            {
                                Return (0x09)
                            }
                            Else
                            {
                                Return (0x0B)
                            }
                        }

                        Method (_PRS, 0, NotSerialized)
                        {
                            Return (IPRS)
                        }

                        Method (_DIS, 0, NotSerialized)
                        {
                            Or (PIRH, 0x80, PIRH)
                        }

                        Method (_CRS, 0, NotSerialized)
                        {
                            And (PIRH, 0x0F, Local0)
                            ShiftLeft (0x01, Local0, IRA0)
                            Return (BUFA)
                        }

                        Method (_SRS, 1, NotSerialized)
                        {
                            CreateWordField (Arg0, 0x01, IRA)
                            FindSetRightBit (IRA, Local0)
                            Decrement (Local0)
                            Store (Local0, PIRH)
                        }
                    }
                }

                OperationRegion (SBFN, PCI_Config, 0xF2, 0x01)
                Device (SYSR)
                {
                    Name (_HID, EisaId ("PNP0C02"))
                    Method (_STA, 0, NotSerialized)
                    {
                        Store (OSFL, FLOS)
                        If (And (OSFL, 0x02))
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

                    Name (IORG, ResourceTemplate ()
                    {
                        FixedIO (0x0010, 0x10)
                        FixedIO (0x0022, 0x1E)
                        FixedIO (0x0044, 0x1C)
                        FixedIO (0x0062, 0x02)
                        FixedIO (0x0065, 0x0B)
                        FixedIO (0x0072, 0x0E)
                        FixedIO (0x0080, 0x01)
                        FixedIO (0x0084, 0x03)
                        FixedIO (0x0088, 0x01)
                        FixedIO (0x008C, 0x03)
                        FixedIO (0x0090, 0x10)
                        FixedIO (0x00A2, 0x1E)
                        FixedIO (0x00E0, 0x10)
                        FixedIO (0x0295, 0x02)
                        IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
                        IO (Decode16, 0x0400, 0x0400, 0x00, 0x80)
                        IO (Decode16, 0x0480, 0x0480, 0x00, 0x40)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (IORG)
                    }
                }

                Device (FWH)
                {
                    Name (_HID, EisaId ("INT0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite, 0xFFB80000, 0x00080000)
                    })
                }

                Device (\_SB.MEM)
                {
                    Name (_HID, EisaId ("PNP0C01"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (And (\_SB.PCI0.OSFL, 0x02))
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

                    Name (MEM1, ResourceTemplate ()
                    {
                        Memory32Fixed (ReadWrite, 0x00000000, 0x000A0000)
                        Memory32Fixed (ReadOnly, 0x000E0000, 0x00020000)
                        Memory32Fixed (ReadWrite, 0x00100000, 0x1FF00000)
                        Memory32Fixed (ReadOnly, 0xFFF80000, 0x00080000)
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        CreateDWordField (MEM1, 0x20, TOP1)
                        Subtract (\_SB.PCI0.MDET (), 0x00100000, TOP1)
                        Return (MEM1)
                    }
                }

                Device (PIC)
                {
                    Name (_HID, EisaId ("PNP0000"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (0x0020, 0x02)
                        FixedIO (0x00A0, 0x02)
                        IRQNoFlags () {2}
                    })
                }

                Device (DMAD)
                {
                    Name (_HID, EisaId ("PNP0200"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        DMA (Compatibility, BusMaster, Transfer8) {4}
                        FixedIO (0x0000, 0x10)
                        FixedIO (0x0081, 0x03)
                        FixedIO (0x0087, 0x01)
                        FixedIO (0x0089, 0x03)
                        FixedIO (0x008F, 0x01)
                        FixedIO (0x00C0, 0x20)
                    })
                }

                Device (TMR)
                {
                    Name (_HID, EisaId ("PNP0100"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (0x0040, 0x04)
                        IRQNoFlags () {0}
                    })
                }

                Device (RTC)
                {
                    Name (_HID, EisaId ("PNP0B00"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (0x0070, 0x02)
                        IRQNoFlags () {8}
                    })
                }

                Device (SPKR)
                {
                    Name (_HID, EisaId ("PNP0800"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (0x0061, 0x01)
                    })
                }

                Device (COPR)
                {
                    Name (_HID, EisaId ("PNP0C04"))
                    Name (_CRS, ResourceTemplate ()
                    {
                        FixedIO (0x00F0, 0x10)
                        IRQNoFlags () {13}
                    })
                }

                OperationRegion (PSRG, SystemMemory, 0x0410, 0x01)
                Field (PSRG, ByteAcc, NoLock, Preserve)
                {
                        ,   2, 
                    PS2E,   1
                }

                Device (PS2M)
                {
                    Name (_HID, EisaId ("PNP0F03"))
                    Name (_CID, 0x130FD041)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (PS2E)
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }

                    Name (MCRS, ResourceTemplate ()
                    {
                        IRQNoFlags () {12}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (MCRS)
                    }
                }

                Device (PS2K)
                {
                    Name (_HID, EisaId ("PNP0303"))
                    Name (_CID, 0x0B03D041)
                    Name (KCRS, ResourceTemplate ()
                    {
                        FixedIO (0x0060, 0x01)
                        FixedIO (0x0064, 0x01)
                        IRQNoFlags () {1}
                    })
                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (KCRS)
                    }
                }

                Name (SPIO, 0x2E)
                OperationRegion (WIN1, SystemIO, SPIO, 0x02)
                Field (WIN1, ByteAcc, NoLock, Preserve)
                {
                    INDX,   8, 
                    DATA,   8
                }

                IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x02), 
                    CFG,    8, 
                    Offset (0x07), 
                    LDN,    8, 
                    Offset (0x30), 
                    ACTR,   1, 
                    ACT1,   1, 
                    ACT2,   1, 
                    Offset (0x31), 
                    Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    IOEH,   8, 
                    IOEL,   8, 
                    Offset (0x70), 
                    INTR,   8, 
                    Offset (0x72), 
                    INT1,   8, 
                    Offset (0x74), 
                    DMCH,   8, 
                    Offset (0xC0), 
                    GP40,   8, 
                    Offset (0xE0), 
                    RGE0,   8, 
                    RGE1,   8, 
                    RGE2,   8, 
                    RGE3,   8, 
                    RGE4,   8, 
                    Offset (0xF0), 
                    OPT1,   8, 
                    OPT2,   8, 
                    OPT3,   8, 
                    OPT4,   8, 
                    OPT5,   8, 
                    OPT6,   8, 
                    OPT7,   8, 
                    OPT8,   8, 
                    OPT9,   8, 
                    OPTA,   8
                }

                OperationRegion (HWMT, SystemIO, 0x0295, 0x02)
                Field (HWMT, ByteAcc, NoLock, Preserve)
                {
                    HWIN,   8, 
                    HWDT,   8
                }

                IndexField (HWIN, HWDT, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x40), 
                    HW40,   8, 
                    HW41,   8, 
                    HW42,   8, 
                    HW43,   8, 
                    HW44,   8, 
                    Offset (0x46), 
                    HW46,   8, 
                    HW47,   8, 
                    HW48,   8, 
                    HW49,   8, 
                    HW4A,   8, 
                    HW4B,   8, 
                    HW4C,   8, 
                    HW4D,   8, 
                    HW4E,   8, 
                    HW4F,   8, 
                    HW50,   8, 
                    HW51,   8, 
                    HW52,   8, 
                    HW53,   8, 
                    HW54,   8, 
                    HW55,   8, 
                    HW56,   8, 
                    HW57,   8, 
                    HW58,   8, 
                    HW59,   8, 
                    HW5A,   8, 
                    HW5B,   8, 
                    HW5C,   8, 
                    HW5D,   8, 
                    HW5E,   8, 
                    HW5F,   8
                }

                Method (ENFG, 0, NotSerialized)
                {
                    Store (0x87, INDX)
                    Store (0x87, INDX)
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0xAA, INDX)
                }

                Name (LDFD, 0x00)
                Name (LDU1, 0x02)
                Name (LDU2, 0x03)
                Name (LDIR, 0x06)
                Name (LDLP, 0x01)
                Name (LDGM, 0x07)
                Name (LDMD, 0x07)
                Device (FDC0)
                {
                    Name (_HID, EisaId ("PNP0700"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (FDST)
                        {
                            Return (GSTA (0x00))
                        }

                        Return (0x00)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, FDEN)
                        DDIS (0x00)
                    }

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

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (FPRS)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        Store (One, FDEN)
                        DENB (0x00)
                    }
                }

                Device (UAR1)
                {
                    Name (_HID, EisaId ("PNP0501"))
                    Name (_UID, 0x01)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (U1ST)
                        {
                            Return (GSTA (0x02))
                        }

                        Return (0x00)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, CAEN)
                        DDIS (0x02)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (PCRS (0x02, 0x01, 0x08))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        PSRS (Arg0, 0x02)
                        Store (One, CAEN)
                        ENFG ()
                        If (LEqual (IOAH, 0x03))
                        {
                            If (LEqual (IOAL, 0xF8))
                            {
                                Store (Zero, LPCA)
                            }
                            Else
                            {
                                Store (0x07, LPCA)
                            }
                        }
                        Else
                        {
                            If (LEqual (IOAL, 0xF8))
                            {
                                Store (One, LPCA)
                            }
                            Else
                            {
                                Store (0x05, LPCA)
                            }
                        }

                        EXFG ()
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (C1PR)
                    }
                }

                Device (UAR2)
                {
                    Method (_HID, 0, NotSerialized)
                    {
                        ENFG ()
                        Store (LDU2, LDN)
                        And (OPT2, 0x38, Local0)
                        EXFG ()
                        If (Local0)
                        {
                            Return (0x1005D041)
                        }
                        Else
                        {
                            Return (0x0105D041)
                        }
                    }

                    Name (_UID, 0x02)
                    Method (_STA, 0, NotSerialized)
                    {
                        If (U2ST)
                        {
                            Return (GSTA (0x03))
                        }

                        Return (0x00)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, CBEN)
                        DDIS (0x03)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (PCRS (0x03, 0x01, 0x08))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        PSRS (Arg0, 0x03)
                        Store (One, CBEN)
                        ENFG ()
                        If (LEqual (IOAH, 0x03))
                        {
                            If (LEqual (IOAL, 0xF8))
                            {
                                Store (Zero, LPCB)
                            }
                            Else
                            {
                                Store (0x07, LPCB)
                            }
                        }
                        Else
                        {
                            If (LEqual (IOAL, 0xF8))
                            {
                                Store (One, LPCB)
                            }
                            Else
                            {
                                Store (0x05, LPCB)
                            }
                        }

                        EXFG ()
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (C2PR)
                    }
                }

                Device (IRDA)
                {
                    Name (_HID, EisaId ("PNP0510"))
                    Method (_STA, 0, NotSerialized)
                    {
                        If (IRST)
                        {
                            Return (GSTA (LDIR))
                        }

                        Return (0x00)
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        DDIS (LDIR)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF6, ResourceTemplate ()
                        {
                            IO (Decode16, 0x0000, 0x0000, 0x10, 0x08)
                            IRQNoFlags () {}
                        })
                        CreateByteField (BUF6, 0x02, IOLO)
                        CreateByteField (BUF6, 0x03, IOHI)
                        CreateByteField (BUF6, 0x04, IORL)
                        CreateByteField (BUF6, 0x05, IORH)
                        CreateWordField (BUF6, 0x09, IRQM)
                        ENFG ()
                        Store (LDIR, LDN)
                        If (ACTR)
                        {
                            Store (0x98, IOLO)
                            Store (0x02, IOHI)
                        }
                        Else
                        {
                            Store (0x00, IOLO)
                            Store (0x00, IOHI)
                        }

                        Store (IOLO, IORL)
                        Store (IOHI, IORH)
                        ShiftLeft (0x01, INTR, IRQM)
                        EXFG ()
                        Return (BUF6)
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        PSRS (Arg0, LDIR)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0298, 0x0298, 0x08, 0x08)
                            IRQNoFlags () {3,4,9,10,11}
                        }
                        EndDependentFn ()
                    })
                }

                Device (LPT)
                {
                    Name (_HID, EisaId ("PNP0400"))
                    Method (_STA, 0, NotSerialized)
                    {
                        ENFG ()
                        Store (0x01, LDN)
                        And (OPT1, 0x02, Local0)
                        EXFG ()
                        If (Or (Local0, And (Not (LPST), 0x01)))
                        {
                            Return (Zero)
                        }
                        Else
                        {
                            Return (GSTA (0x01))
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, LPEN)
                        DDIS (0x01)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (PCRS (0x01, 0x01, 0x08))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        PSRS (Arg0, 0x01)
                        Store (One, LPEN)
                        ENFG ()
                        If (LEqual (IOAH, 0x03))
                        {
                            If (LEqual (IOAL, 0x78))
                            {
                                Store (Zero, LPLP)
                            }
                            Else
                            {
                                Store (0x02, LPLP)
                            }
                        }
                        Else
                        {
                            Store (One, LPLP)
                        }

                        EXFG ()
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (LPPR)
                    }
                }

                Device (ECP)
                {
                    Name (_HID, EisaId ("PNP0401"))
                    Method (_STA, 0, NotSerialized)
                    {
                        ENFG ()
                        Store (0x01, LDN)
                        And (OPT1, 0x02, Local0)
                        EXFG ()
                        If (Local0)
                        {
                            If (LPST)
                            {
                                Return (GSTA (0x01))
                            }
                            Else
                            {
                                Return (Zero)
                            }
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, LPEN)
                        DDIS (0x01)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Return (ECRS (0x01))
                    }

                    Method (_SRS, 1, NotSerialized)
                    {
                        ESRS (Arg0, 0x01)
                        Store (One, LPEN)
                        ENFG ()
                        If (LEqual (IOAH, 0x03))
                        {
                            If (LEqual (IOAL, 0x78))
                            {
                                Store (Zero, LPLP)
                            }
                            Else
                            {
                                Store (0x02, LPLP)
                            }
                        }
                        Else
                        {
                            Store (One, LPLP)
                        }

                        EXFG ()
                    }

                    Method (_PRS, 0, NotSerialized)
                    {
                        Return (EPRS)
                    }
                }

                Device (GAME)
                {
                    Name (_HID, EisaId ("PNPB02F"))
                    Method (_STA, 0, NotSerialized)
                    {
                        ENFG ()
                        Store (LDGM, LDN)
                        If (LOr (GMLE, GMHE))
                        {
                            EXFG ()
                            Return (0x0F)
                        }
                        Else
                        {
                            Add (IOAH, IOAL, Local0)
                            If (Local0)
                            {
                                EXFG ()
                                Return (0x0D)
                            }
                            Else
                            {
                                EXFG ()
                                Return (Zero)
                            }
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, GMLE)
                        Store (Zero, GMHE)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF6, ResourceTemplate ()
                        {
                            IO (Decode16, 0x0000, 0x0000, 0x08, 0x08)
                        })
                        CreateByteField (BUF6, 0x02, IOLO)
                        CreateByteField (BUF6, 0x03, IOHI)
                        CreateByteField (BUF6, 0x04, IORL)
                        CreateByteField (BUF6, 0x05, IORH)
                        ENFG ()
                        Store (LDGM, LDN)
                        If (LEqual (IOAL, 0x00))
                        {
                            Store (0x00, IOLO)
                            Store (0x02, IOHI)
                        }
                        Else
                        {
                            Store (0x08, IOLO)
                            Store (0x02, IOHI)
                        }

                        Store (IOLO, IORL)
                        Store (IOHI, IORH)
                        EXFG ()
                        Return (BUF6)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0200, 0x0200, 0x08, 0x08)
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0208, 0x0208, 0x08, 0x08)
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        ENFG ()
                        Store (LDGM, LDN)
                        If (LEqual (IOLO, 0x00))
                        {
                            Store (0x02, IOAH)
                            Store (0x00, IOAL)
                        }
                        Else
                        {
                            Store (0x02, IOAH)
                            Store (0x08, IOAL)
                        }

                        If (LEqual (IOAL, 0x00))
                        {
                            Store (One, GMLE)
                            Store (Zero, GMHE)
                        }
                        Else
                        {
                            Store (Zero, GMLE)
                            Store (One, GMHE)
                        }

                        EXFG ()
                    }
                }

                Device (MIDI)
                {
                    Name (_HID, EisaId ("PNPB006"))
                    Method (_STA, 0, NotSerialized)
                    {
                        ENFG ()
                        Store (LDMD, LDN)
                        If (LOr (MDEN, LEqual (IOEH, 0x02)))
                        {
                            EXFG ()
                            Return (0x0F)
                        }
                        Else
                        {
                            Add (IOEH, IOEL, Local0)
                            If (Local0)
                            {
                                EXFG ()
                                Return (0x0D)
                            }
                            Else
                            {
                                EXFG ()
                                Return (Zero)
                            }
                        }
                    }

                    Method (_DIS, 0, NotSerialized)
                    {
                        Store (Zero, MDEN)
                    }

                    Method (_CRS, 0, NotSerialized)
                    {
                        Name (BUF6, ResourceTemplate ()
                        {
                            IO (Decode16, 0x0000, 0x0000, 0x02, 0x02)
                            IRQNoFlags () {}
                        })
                        CreateByteField (BUF6, 0x02, IOLO)
                        CreateByteField (BUF6, 0x03, IOHI)
                        CreateByteField (BUF6, 0x04, IORL)
                        CreateByteField (BUF6, 0x05, IORH)
                        CreateWordField (BUF6, 0x09, IRQM)
                        ENFG ()
                        Store (LDMD, LDN)
                        If (LEqual (IOEH, 0x03))
                        {
                            Store (0x03, IOHI)
                            If (LEqual (IOEL, 0x30))
                            {
                                Store (0x30, IOLO)
                            }
                            Else
                            {
                                Store (0x00, IOLO)
                            }
                        }
                        Else
                        {
                            Store (0x02, IOHI)
                            If (LEqual (IOEL, 0x90))
                            {
                                Store (0x90, IOLO)
                            }
                            Else
                            {
                                Store (0x92, IOLO)
                            }
                        }

                        Store (IOLO, IORL)
                        Store (IOHI, IORH)
                        ShiftLeft (0x01, INTR, IRQM)
                        EXFG ()
                        Return (BUF6)
                    }

                    Name (_PRS, ResourceTemplate ()
                    {
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0330, 0x0330, 0x02, 0x02)
                            IRQNoFlags () {5,7,9,10}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0300, 0x0300, 0x02, 0x02)
                            IRQNoFlags () {5,7,9,10}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0290, 0x0290, 0x02, 0x02)
                            IRQNoFlags () {5,7,9,10}
                        }
                        StartDependentFnNoPri ()
                        {
                            IO (Decode16, 0x0292, 0x0292, 0x02, 0x02)
                            IRQNoFlags () {5,7,9,10}
                        }
                        EndDependentFn ()
                    })
                    Method (_SRS, 1, NotSerialized)
                    {
                        CreateByteField (Arg0, 0x02, IOLO)
                        CreateByteField (Arg0, 0x03, IOHI)
                        CreateWordField (Arg0, 0x09, IRQM)
                        ENFG ()
                        Store (LDMD, LDN)
                        If (LEqual (IOHI, 0x03))
                        {
                            Store (0x03, IOEH)
                            If (LEqual (IOLO, 0x30))
                            {
                                Store (0x30, IOEL)
                                Store (Zero, LPMD)
                            }
                            Else
                            {
                                Store (0x00, IOEL)
                                Store (One, LPMD)
                            }

                            Store (One, MDEN)
                        }
                        Else
                        {
                            Store (0x02, IOEH)
                            If (LEqual (IOLO, 0x90))
                            {
                                Store (0x90, IOEL)
                            }
                            Else
                            {
                                Store (0x92, IOEL)
                            }
                        }

                        FindSetRightBit (IRQM, Local0)
                        Subtract (Local0, 0x01, INTR)
                        EXFG ()
                    }
                }

                Name (FDST, 0x00)
                Name (U1ST, 0x00)
                Name (U2ST, 0x00)
                Name (IRST, 0x00)
                Name (LPST, 0x00)
                Method (IODT, 0, NotSerialized)
                {
                    If (LEqual (GSTA (LDFD), 0x0F))
                    {
                        Store (0x01, FDST)
                    }

                    If (LEqual (GSTA (LDU1), 0x0F))
                    {
                        Store (0x01, U1ST)
                    }

                    If (LEqual (GSTA (LDU2), 0x0F))
                    {
                        Store (0x01, U2ST)
                    }

                    If (LEqual (GSTA (LDIR), 0x0F))
                    {
                        Store (0x01, IRST)
                    }

                    If (LEqual (GSTA (LDLP), 0x0F))
                    {
                        Store (0x01, LPST)
                    }
                }

                Method (GSTA, 1, NotSerialized)
                {
                    ENFG ()
                    Store (Arg0, LDN)
                    If (ACTR)
                    {
                        Store (0x0F, Local0)
                    }
                    Else
                    {
                        If (Or (IOAH, IOAL))
                        {
                            Store (0x0D, Local0)
                        }
                        Else
                        {
                            Store (0x00, Local0)
                        }
                    }

                    EXFG ()
                    Return (Local0)
                }

                Method (DDIS, 1, NotSerialized)
                {
                    ENFG ()
                    Store (Arg0, LDN)
                    Store (Zero, ACTR)
                    EXFG ()
                }

                Method (DENB, 1, NotSerialized)
                {
                    ENFG ()
                    Store (Arg0, LDN)
                    Store (One, ACTR)
                    EXFG ()
                }

                Method (PCRS, 3, NotSerialized)
                {
                    CreateByteField (PBUF, 0x02, IOLO)
                    CreateByteField (PBUF, 0x03, IOHI)
                    CreateWordField (PBUF, 0x02, IOHL)
                    CreateWordField (PBUF, 0x04, IORL)
                    CreateByteField (PBUF, 0x06, ALMN)
                    CreateByteField (PBUF, 0x07, LENG)
                    CreateByteField (PBUF, 0x09, IRQL)
                    ENFG ()
                    Store (Arg0, LDN)
                    Store (IOAH, IOHI)
                    Store (IOAL, IOLO)
                    Store (IOHL, IORL)
                    Store (Arg1, ALMN)
                    If (LEqual (IOLO, 0xBC))
                    {
                        Store (0x04, LENG)
                    }
                    Else
                    {
                        Store (Arg2, LENG)
                    }

                    Store (One, Local0)
                    ShiftLeft (Local0, INTR, IRQL)
                    EXFG ()
                    Return (PBUF)
                }

                Method (PSRS, 2, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, POLB)
                    CreateByteField (Arg0, 0x03, POHB)
                    CreateByteField (Arg0, 0x09, PIRQ)
                    ENFG ()
                    Store (Arg1, LDN)
                    Store (POLB, IOAL)
                    Store (POHB, IOAH)
                    FindSetRightBit (PIRQ, Local0)
                    Subtract (Local0, 0x01, INTR)
                    Store (One, ACTR)
                    EXFG ()
                }

                Method (ECRS, 1, NotSerialized)
                {
                    CreateByteField (EBUF, 0x02, EPLO)
                    CreateByteField (EBUF, 0x03, EPHI)
                    CreateWordField (EBUF, 0x02, EPHL)
                    CreateWordField (EBUF, 0x04, EPRL)
                    CreateWordField (EBUF, 0x06, ALM1)
                    CreateWordField (EBUF, 0x0A, E4LO)
                    CreateWordField (EBUF, 0x0C, E4RL)
                    CreateWordField (EBUF, 0x11, EIRQ)
                    CreateWordField (EBUF, 0x14, EDMA)
                    ENFG ()
                    Store (Arg0, LDN)
                    Store (IOAH, EPHI)
                    Store (IOAL, EPLO)
                    Store (EPHL, EPRL)
                    Add (EPHL, 0x0400, E4LO)
                    Store (E4LO, E4RL)
                    If (LEqual (EPHL, 0x03BC))
                    {
                        Store (0x0401, ALM1)
                    }
                    Else
                    {
                        Store (0x0801, ALM1)
                    }

                    Store (One, Local0)
                    Store (INTR, Local1)
                    ShiftLeft (Local0, Local1, EIRQ)
                    Store (DMCH, Local1)
                    If (LGreater (Local1, 0x03))
                    {
                        Store (0x00, EDMA)
                    }
                    Else
                    {
                        Store (One, Local0)
                        ShiftLeft (Local0, Local1, EDMA)
                    }

                    EXFG ()
                    Return (EBUF)
                }

                Method (ESRS, 2, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, LOEP)
                    CreateByteField (Arg0, 0x03, HIEP)
                    CreateWordField (Arg0, 0x11, IRQE)
                    CreateWordField (Arg0, 0x14, DMAE)
                    ENFG ()
                    Store (Arg1, LDN)
                    Store (LOEP, IOAL)
                    Store (HIEP, IOAH)
                    FindSetRightBit (IRQE, Local0)
                    Subtract (Local0, 0x01, INTR)
                    If (DMAE)
                    {
                        FindSetRightBit (DMAE, Local0)
                        Subtract (Local0, 0x01, DMCH)
                    }
                    Else
                    {
                        Store (0x04, DMCH)
                    }

                    Store (One, ACTR)
                    EXFG ()
                }

                Name (CNBF, Buffer (0x02)
                {
                    0xF8, 0x03
                })
                Method (UABS, 1, NotSerialized)
                {
                    ENFG ()
                    Store (Arg0, LDN)
                    CreateByteField (CNBF, 0x00, IOLO)
                    CreateByteField (CNBF, 0x01, IOHI)
                    CreateWordField (CNBF, 0x00, IOAD)
                    Store (IOAL, IOLO)
                    Store (IOAH, IOHI)
                    EXFG ()
                    Return (IOAD)
                }

                Name (CSCP, 0x00)
                PowerResource (URP1, 0x01, 0x0000)
                {
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (CSCP)
                    }

                    Method (_ON, 0, NotSerialized)
                    {
                        Store (0x01, CSCP)
                    }

                    Method (_OFF, 0, NotSerialized)
                    {
                        Store (0x00, CSCP)
                    }
                }

                PowerResource (URP2, 0x01, 0x0000)
                {
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (CSCP)
                    }

                    Method (_ON, 0, NotSerialized)
                    {
                        Store (0x01, CSCP)
                    }

                    Method (_OFF, 0, NotSerialized)
                    {
                        Store (0x00, CSCP)
                    }
                }

                PowerResource (FDDP, 0x00, 0x0000)
                {
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (CSCP)
                    }

                    Method (_ON, 0, NotSerialized)
                    {
                        Store (0x01, CSCP)
                    }

                    Method (_OFF, 0, NotSerialized)
                    {
                        Store (0x00, CSCP)
                    }
                }

                PowerResource (LPTP, 0x00, 0x0000)
                {
                    Method (_STA, 0, NotSerialized)
                    {
                        Return (CSCP)
                    }

                    Method (_ON, 0, NotSerialized)
                    {
                        Store (0x01, CSCP)
                    }

                    Method (_OFF, 0, NotSerialized)
                    {
                        Store (0x00, CSCP)
                    }
                }

                Name (FCRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x03F2, 0x03F2, 0x01, 0x02)
                    IO (Decode16, 0x03F4, 0x03F4, 0x01, 0x02)
                    IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
                    IRQNoFlags () {6}
                    DMA (Compatibility, NotBusMaster, Transfer8) {2}
                })
                Name (PBUF, ResourceTemplate ()
                {
                    IO (Decode16, 0x0000, 0x0000, 0x01, 0x08)
                    IRQNoFlags () {0}
                })
                Name (EBUF, ResourceTemplate ()
                {
                    IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                    IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
                    IRQNoFlags () {7}
                    DMA (Compatibility, NotBusMaster, Transfer8) {}
                })
                Name (FPRS, ResourceTemplate ()
                {
                    StartDependentFn (0x00, 0x00)
                    {
                        IO (Decode16, 0x03F2, 0x03F2, 0x01, 0x02)
                        IO (Decode16, 0x03F4, 0x03F4, 0x01, 0x02)
                        IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
                        IRQNoFlags () {6}
                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    }
                    EndDependentFn ()
                })
                Name (C1PR, ResourceTemplate ()
                {
                    StartDependentFn (0x00, 0x00)
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x04, 0x08)
                        IRQNoFlags () {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    EndDependentFn ()
                })
                Name (C2PR, ResourceTemplate ()
                {
                    StartDependentFn (0x00, 0x00)
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x04, 0x08)
                        IRQNoFlags () {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x04, 0x08)
                        IRQNoFlags () {3,4,10,11}
                    }
                    EndDependentFn ()
                })
                Name (LPPR, ResourceTemplate ()
                {
                    StartDependentFn (0x00, 0x00)
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                        IRQNoFlags () {7}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                        IRQNoFlags () {5,7}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0278, 0x0278, 0x01, 0x08)
                        IRQNoFlags () {5,7}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03BC, 0x03BC, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                    }
                    EndDependentFn ()
                })
                Name (EPRS, ResourceTemplate ()
                {
                    StartDependentFn (0x00, 0x00)
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                        IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
                        IRQNoFlags () {7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {1}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                        IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {0,1,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0278, 0x0278, 0x01, 0x08)
                        IO (Decode16, 0x0678, 0x0678, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {0,1,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03BC, 0x03BC, 0x01, 0x04)
                        IO (Decode16, 0x07BC, 0x07BC, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {0,1,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
                        IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0278, 0x0278, 0x01, 0x08)
                        IO (Decode16, 0x0678, 0x0678, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03BC, 0x03BC, 0x01, 0x04)
                        IO (Decode16, 0x07BC, 0x07BC, 0x01, 0x04)
                        IRQNoFlags () {5,7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {}
                    }
                    EndDependentFn ()
                })
            }

            Device (ICH)
            {
                Name (_ADR, 0x001E0000)
                Name (_PRT, Package (0x19)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        \_SB.LNKF, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        \_SB.LNKG, 
                        0x00
                    }, 

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

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x00, 
                        \_SB.LNKF, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x01, 
                        \_SB.LNKG, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x02, 
                        \_SB.LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0001FFFF, 
                        0x03, 
                        \_SB.LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x00, 
                        \_SB.LNKG, 
                        0x00
                    }, 

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

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x02, 
                        \_SB.LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0002FFFF, 
                        0x03, 
                        \_SB.LNKF, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x00, 
                        \_SB.LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x01, 
                        \_SB.LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x02, 
                        \_SB.LNKF, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0003FFFF, 
                        0x03, 
                        \_SB.LNKG, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        0x00, 
                        \_SB.LNKC, 
                        0x00
                    }, 

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

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

                    Package (0x04)
                    {
                        0x0004FFFF, 
                        0x03, 
                        \_SB.LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x00, 
                        \_SB.LNKF, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x01, 
                        \_SB.LNKG, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x0005FFFF, 
                        0x02, 
                        \_SB.LNKA, 
                        0x00
                    }, 

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

                    Package (0x04)
                    {
                        0x0008FFFF, 
                        0x00, 
                        \_SB.LNKE, 
                        0x00
                    }
                })
                Name (_PRW, Package (0x02)
                {
                    0x0B, 
                    0x04
                })
                Scope (\_GPE)
                {
                    Method (_L0B, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.ICH, 0x02)
                    }
                }
            }

            Device (IDE0)
            {
                Name (_ADR, 0x001F0001)
                Name (TIM0, Package (0x08)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0384
                    }, 

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

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

                    Package (0x06)
                    {
                        0x70, 
                        0x49, 
                        0x36, 
                        0x27, 
                        0x19, 
                        0x11
                    }, 

                    Package (0x06)
                    {
                        0x00, 
                        0x01, 
                        0x02, 
                        0x01, 
                        0x02, 
                        0x01
                    }, 

                    Package (0x06)
                    {
                        0x00, 
                        0x00, 
                        0x00, 
                        0x01, 
                        0x01, 
                        0x01
                    }, 

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

                    Package (0x04)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x00
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, 0x00, 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)
                {
                    TIMP,   16, 
                    TIMS,   16, 
                    STMP,   4, 
                    STMS,   4, 
                    Offset (0x08), 
                    UDMP,   2, 
                    UDMS,   2, 
                    Offset (0x0A), 
                    UDTP,   6, 
                    Offset (0x0B), 
                    UDTS,   6, 
                    Offset (0x14), 
                    PCB0,   2, 
                    SCB0,   2, 
                    PCA0,   2, 
                    SCA0,   2, 
                        ,   4, 
                    FPCB,   2, 
                    FSCB,   2
                }

                Method (GTM, 6, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (Zero, CHNF)
                    If (And (Arg0, 0x02))
                    {
                        Or (CHNF, 0x02, CHNF)
                    }

                    ShiftRight (And (Arg0, 0x3300), 0x08, Local5)
                    Store (Match (DerefOf (Index (TIM0, 0x01)), MLE, Local5, MTR, 0x00, 0x00), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local6)), Local7)
                    Store (Local7, DMA0)
                    If (And (Arg0, 0x08))
                    {
                        Store (0x0384, PIO0)
                    }
                    Else
                    {
                        Store (Local7, PIO0)
                    }

                    If (And (Arg0, 0x20))
                    {
                        Or (CHNF, 0x08, CHNF)
                    }

                    If (And (Arg0, 0x4000))
                    {
                        Or (CHNF, 0x10, CHNF)
                        Store (Match (DerefOf (Index (TIM0, 0x02)), MLE, Arg1, MTR, 0x00, 0x00), Local5)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local5)), Local6)
                        Store (Local6, DMA1)
                        If (And (Arg0, 0x80))
                        {
                            Store (0x0384, PIO1)
                        }
                        Else
                        {
                            Store (Local6, PIO1)
                        }
                    }

                    If (And (Arg2, 0x01))
                    {
                        And (Arg3, 0x03, Local5)
                        If (And (Arg5, 0x01))
                        {
                            Add (Local5, 0x04, Local5)
                        }
                        Else
                        {
                            If (And (Arg4, 0x01))
                            {
                                Add (Local5, 0x02, Local5)
                            }
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA0)
                        Or (CHNF, 0x01, CHNF)
                    }

                    If (And (Arg2, 0x02))
                    {
                        And (ShiftRight (Arg3, 0x04), 0x03, Local5)
                        If (And (Arg5, 0x02))
                        {
                            Add (Local5, 0x04, Local5)
                        }
                        Else
                        {
                            If (And (Arg4, 0x02))
                            {
                                Add (Local5, 0x02, Local5)
                            }
                        }

                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x03)), Local5)), DMA1)
                        Or (CHNF, 0x04, CHNF)
                    }

                    Return (TMD0)
                }

                Method (STM, 7, Serialized)
                {
                    Store (Arg0, TMD0)
                    Store (Arg5, Local1)
                    And (Arg1, 0x8044, Arg1)
                    And (Arg3, 0xFC, Arg3)
                    And (Arg4, 0xCC, Arg4)
                    And (Arg5, 0xFC, Arg5)
                    And (Arg6, 0xFC, Arg6)
                    If (And (CHNF, 0x01))
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, DMA0, MTR, 0x00, 0x00), Local0)
                        If (LGreater (Local0, 0x05))
                        {
                            Store (0x05, Local0)
                        }

                        If (LGreater (Local0, 0x02))
                        {
                            If (And (Local1, 0x01))
                            {
                                Store (0x02, Local0)
                            }
                        }

                        Or (Arg4, DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), Arg4)
                        Or (Arg5, DerefOf (Index (DerefOf (Index (TIM0, 0x05)), Local0)), Arg5)
                        Or (Arg3, 0x01, Arg3)
                        If (LEqual (Local0, 0x05))
                        {
                            Or (Arg6, 0x01, Arg6)
                        }
                    }
                    Else
                    {
                        If (Or (LEqual (PIO0, Ones), LEqual (PIO0, 0x00)))
                        {
                            If (And (LLess (DMA0, Ones), LGreater (DMA0, 0x00)))
                            {
                                Store (DMA0, PIO0)
                                Or (Arg1, 0x08, Arg1)
                            }
                        }
                    }

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

                        If (LGreater (Local0, 0x02))
                        {
                            If (And (Local1, 0x02))
                            {
                                Store (0x02, Local0)
                            }
                        }

                        Or (Arg4, ShiftLeft (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), 0x04), Arg4)
                        Or (Arg5, DerefOf (Index (DerefOf (Index (TIM0, 0x05)), Local0)), Arg5)
                        Or (Arg3, 0x02, Arg3)
                        If (LEqual (Local0, 0x05))
                        {
                            Or (Arg6, 0x02, Arg6)
                        }
                    }
                    Else
                    {
                        If (Or (LEqual (PIO1, Ones), LEqual (PIO1, 0x00)))
                        {
                            If (And (LLess (DMA1, Ones), LGreater (DMA1, 0x00)))
                            {
                                Store (DMA1, PIO1)
                                Or (Arg1, 0x80, Arg1)
                            }
                        }
                    }

                    If (And (CHNF, 0x02))
                    {
                        Or (Arg1, 0x03, Arg1)
                    }

                    If (And (CHNF, 0x08))
                    {
                        Or (Arg1, 0x30, Arg1)
                    }

                    And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO0, MTR, 0x00, 0x00), 0x03, Local0)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x01)), Local0)), Local1)
                    ShiftLeft (Local1, 0x08, Local2)
                    Or (Arg1, Local2, Arg1)
                    If (And (CHNF, 0x10))
                    {
                        Or (Arg1, 0x4000, Arg1)
                        And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO1, MTR, 0x00, 0x00), 0x03, Local0)
                        Store (DerefOf (Index (DerefOf (Index (TIM0, 0x02)), Local0)), Local1)
                        Or (Arg2, Local1, Arg2)
                    }
                }

                Name (AT01, Buffer (0x07)
                {
                    0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT02, Buffer (0x07)
                {
                    0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT03, Buffer (0x07)
                {
                    0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0xEF
                })
                Name (AT05, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6
                })
                Name (AT06, Buffer (0x07)
                {
                    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91
                })
                Name (ATA0, Buffer (0x24) {})
                Name (ATA1, Buffer (0x24) {})
                Name (ATA2, Buffer (0x24) {})
                Name (ATA3, Buffer (0x24) {})
                Name (GTIM, 0x00)
                Name (GSTM, 0x00)
                Name (GUDM, 0x00)
                Name (GUDT, 0x00)
                Name (GCB0, 0x00)
                Name (GFCB, 0x00)
                Method (GTF, 3, Serialized)
                {
                    Name (ATAD, Buffer (0x07)
                    {
                        0x00
                    })
                    Name (ATAB, Buffer (0x24)
                    {
                        0x01
                    })
                    Store (SizeOf (Arg1), Local0)
                    If (Local0)
                    {
                        CreateWordField (Arg1, 0x00, ID00)
                        If (Or (LEqual (ID00, 0x00), LLess (Local0, 0x78)))
                        {
                            Return (ATAB)
                        }
                    }
                    Else
                    {
                        Return (ATAB)
                    }

                    Store (Arg2, TMD0)
                    CreateByteField (Arg1, 0x06, ID03)
                    CreateByteField (Arg1, 0x0C, ID06)
                    CreateWordField (Arg1, 0x62, ID49)
                    CreateWordField (Arg1, 0x6A, ID53)
                    CreateWordField (Arg1, 0x76, ID59)
                    CreateByteField (ATAD, 0x01, A001)
                    CreateByteField (ATAD, 0x05, A005)
                    CreateByteField (ATAB, 0x00, CMD0)
                    Store (0xA0, Local7)
                    If (Arg0)
                    {
                        Store (0xB0, Local7)
                    }

                    Store (0x00, CMD0)
                    Store (0x00, Local1)
                    CreateField (ATAB, 0x08, 0x38, CMD1)
                    If (And (ID00, 0x80)) {}
                    Else
                    {
                        Store (AT06, ATAD)
                        Store (ID06, A001)
                        Store (Local7, A005)
                        Store (ID03, Local0)
                        If (LGreater (ID03, 0x0F))
                        {
                            Store (0x0F, Local0)
                        }

                        Or (A005, Local0, A005)
                        Store (ATAD, CMD1)
                        Store (0x01, CMD0)
                    }

                    Store (0x00, Local0)
                    If (Arg0)
                    {
                        If (And (CHNF, 0x04))
                        {
                            Store (DMA1, Local0)
                        }
                    }
                    Else
                    {
                        If (And (CHNF, 0x01))
                        {
                            Store (DMA0, Local0)
                        }
                    }

                    If (Local0)
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x03)), MLE, Local0, MTR, 0x00, 0x00), Local0)
                        Multiply (CMD0, 0x38, Local5)
                        Add (Local5, 0x08, Local6)
                        CreateField (ATAB, Local6, 0x38, CMD2)
                        Store (AT02, ATAD)
                        Or (A001, Local0, A001)
                        Store (Local7, A005)
                        Store (ATAD, CMD2)
                        Store (0x01, Local1)
                        Increment (CMD0)
                    }

                    Store (0x00, Local0)
                    If (Arg0)
                    {
                        If (And (CHNF, 0x08))
                        {
                            Store (PIO1, Local0)
                        }
                    }
                    Else
                    {
                        If (And (CHNF, 0x02))
                        {
                            Store (PIO0, Local0)
                        }
                    }

                    If (Local0)
                    {
                        Multiply (CMD0, 0x38, Local5)
                        Add (Local5, 0x08, Local6)
                        CreateField (ATAB, Local6, 0x38, CMD3)
                        Store (AT01, ATAD)
                        And (Match (DerefOf (Index (TIM0, 0x00)), MGE, Local0, MTR, 0x00, 0x00), 0x03, Local0)
                        Or (A001, DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local0)), A001)
                        Store (Local7, A005)
                        Store (ATAD, CMD3)
                        Increment (CMD0)
                    }

                    If (LNot (Local1))
                    {
                        Multiply (CMD0, 0x38, Local5)
                        Add (Local5, 0x08, Local6)
                        CreateField (ATAB, Local6, 0x38, CMD4)
                        If (And (ID49, 0x0200))
                        {
                            CreateWordField (Arg1, 0x7E, ID63)
                            FindSetLeftBit (And (ID63, 0x0F, ID63), Local0)
                            If (Local0)
                            {
                                Store (AT03, ATAD)
                                Or (A001, Decrement (Local0), A001)
                                Store (Local7, A005)
                                Store (ATAD, CMD4)
                                Increment (CMD0)
                            }
                        }
                    }

                    If (And (ID59, 0x0100))
                    {
                        Multiply (CMD0, 0x38, Local5)
                        Add (Local5, 0x08, Local6)
                        CreateField (ATAB, Local6, 0x38, CMD5)
                        Store (AT05, ATAD)
                        And (ID59, 0xFF, A001)
                        Store (Local7, A005)
                        Store (ATAD, CMD5)
                        Increment (CMD0)
                    }

                    Return (ATAB)
                }

                Method (GTFD, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x00, CMD0)
                    Multiply (CMD0, 0x07, Local0)
                    Multiply (Local0, 0x08, Local1)
                    Name (GTFB, Buffer (Local0) {})
                    CreateField (GTFB, 0x00, Local1, DST0)
                    CreateField (Arg0, 0x08, Local1, SRC0)
                    Store (SRC0, DST0)
                    Return (GTFB)
                }

                Device (CHN0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (TIMP, STMP, UDMP, UDTP, PCB0, FPCB))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (TIMP, GTIM)
                        Store (STMP, GSTM)
                        Store (UDMP, GUDM)
                        Store (UDTP, GUDT)
                        Store (PCB0, GCB0)
                        Store (FPCB, GFCB)
                        STM (Arg0, GTIM, GSTM, GUDM, GUDT, GCB0, GFCB)
                        Store (GTIM, TIMP)
                        Store (GSTM, STMP)
                        Store (GUDM, UDMP)
                        Store (GUDT, UDTP)
                        Store (GCB0, PCB0)
                        Store (GFCB, FPCB)
                        Store (GTF (0x00, Arg1, Arg0), ATA0)
                        Store (GTF (0x01, Arg2, Arg0), ATA1)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTFD (ATA0))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTFD (ATA1))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (TIMS, STMS, UDMS, UDTS, SCB0, FSCB))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (TIMS, GTIM)
                        Store (STMS, GSTM)
                        Store (UDMS, GUDM)
                        Store (UDTS, GUDT)
                        Store (SCB0, GCB0)
                        Store (FSCB, GFCB)
                        STM (Arg0, GTIM, GSTM, GUDM, GUDT, GCB0, GFCB)
                        Store (GTIM, TIMS)
                        Store (GSTM, STMS)
                        Store (GUDM, UDMS)
                        Store (GUDT, UDTS)
                        Store (GCB0, SCB0)
                        Store (GFCB, FSCB)
                        Store (GTF (0x00, Arg1, Arg0), ATA2)
                        Store (GTF (0x01, Arg2, Arg0), ATA3)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTFD (ATA2))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTFD (ATA3))
                        }
                    }
                }
            }

            Device (USB)
            {
                Name (_ADR, 0x001F0002)
                Name (SS3D, 0x02)
                Name (_PRW, Package (0x02)
                {
                    0x03, 
                    0x04
                })
                Scope (\_GPE)
                {
                    Method (_L03, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.USB, 0x02)
                    }
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x001F0004)
                Name (SS3D, 0x02)
                Name (_PRW, Package (0x02)
                {
                    0x04, 
                    0x04
                })
                Scope (\_GPE)
                {
                    Method (_L04, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0.USB2, 0x02)
                    }
                }
            }

            Device (MM97)
            {
                Name (_ADR, 0x001F0006)
                Name (_PRW, Package (0x02)
                {
                    0x05, 
                    0x04
                })
                Scope (\_GPE)
                {
                    Method (_L05, 0, NotSerialized)
                    {
                        Notify (\_SB.PCI0, 0x02)
                    }
                }
            }
        }

        Name (SLPS, 0x00)
        Device (SLPB)
        {
            Name (_HID, EisaId ("PNP0C0E"))
            Method (SBEV, 0, NotSerialized)
            {
                If (SLPS)
                {
                    Store (0x00, SLPS)
                    Notify (SLPB, 0x02)
                }
                Else
                {
                    Store (0x01, SLPS)
                    Notify (SLPB, 0x80)
                }
            }

            Scope (\_GPE)
            {
                Method (_L16, 0, NotSerialized)
                {
                    \_SB.SLPB.SBEV ()
                }
            }
        }
    }

    OperationRegion (FNOR, SystemIO, 0x0434, 0x04)
    Scope (_SI)
    {
        Method (_SST, 1, NotSerialized)
        {
            If (Arg0)
            {
                If (LEqual (Arg0, 0x01))
                {
                    \_SB.PCI0.SBRG.ENFG ()
                    Store (0x08, \_SB.PCI0.SBRG.LDN)
                    Store (0x00, \_SB.PCI0.SBRG.OPT6)
                    Store (0x09, \_SB.PCI0.SBRG.LDN)
                    Store (0x00, \_SB.PCI0.SBRG.OPT4)
                    \_SB.PCI0.SBRG.EXFG ()
                }

                If (LEqual (Arg0, 0x02))
                {
                    \_SB.PCI0.SBRG.ENFG ()
                    Store (0x08, \_SB.PCI0.SBRG.LDN)
                    Store (0x00, \_SB.PCI0.SBRG.OPT6)
                    Store (0x09, \_SB.PCI0.SBRG.LDN)
                    Store (0x00, \_SB.PCI0.SBRG.OPT4)
                    \_SB.PCI0.SBRG.EXFG ()
                }

                If (LEqual (Arg0, 0x03))
                {
                    \_SB.PCI0.SBRG.ENFG ()
                    Store (0x08, \_SB.PCI0.SBRG.LDN)
                    Store (0x80, \_SB.PCI0.SBRG.OPT6)
                    Store (0x09, \_SB.PCI0.SBRG.LDN)
                    Store (0x40, \_SB.PCI0.SBRG.OPT4)
                    \_SB.PCI0.SBRG.EXFG ()
                }

                If (LEqual (Arg0, 0x04))
                {
                    \_SB.PCI0.SBRG.ENFG ()
                    Store (0x08, \_SB.PCI0.SBRG.LDN)
                    Store (0xC0, \_SB.PCI0.SBRG.OPT6)
                    Store (0x09, \_SB.PCI0.SBRG.LDN)
                    Store (0x40, \_SB.PCI0.SBRG.OPT4)
                    \_SB.PCI0.SBRG.EXFG ()
                }
            }
            Else
            {
                \_SB.PCI0.SBRG.ENFG ()
                Store (0x08, \_SB.PCI0.SBRG.LDN)
                Store (0x40, \_SB.PCI0.SBRG.OPT6)
                Store (0x09, \_SB.PCI0.SBRG.LDN)
                Store (0x00, \_SB.PCI0.SBRG.OPT4)
                \_SB.PCI0.SBRG.EXFG ()
            }
        }
    }

    OperationRegion (HWMI, SystemIO, 0x0295, 0x02)
    Field (HWMI, ByteAcc, NoLock, Preserve)
    {
        HWMD,   8, 
        HWMT,   8
    }

    IndexField (HWMD, HWMT, ByteAcc, NoLock, Preserve)
    {
        Offset (0x57), 
        BECL,   8, 
        Offset (0x5A), 
        FNW1,   8, 
        FNW2,   8
    }

    OperationRegion (ACIO, SystemIO, 0xB2, 0x01)
    Field (ACIO, ByteAcc, NoLock, Preserve)
    {
        ACFG,   8
    }

    OperationRegion (PMIO, SystemIO, 0x0400, 0x50)
    Field (PMIO, WordAcc, NoLock, Preserve)
    {
        PMS0,   8, 
        PWST,   1, 
            ,   1, 
        RTCS,   1, 
        PMS1,   5, 
        Offset (0x03), 
        PWEN,   1, 
        Offset (0x28), 
        GP0S,   16, 
        GP0E,   16, 
        GP1S,   16, 
        GP1E,   16, 
        Offset (0x40), 
        IOMO,   16
    }

    OperationRegion (GPIO, SystemIO, 0x0480, 0x20)
    Field (GPIO, WordAcc, NoLock, Preserve)
    {
        Offset (0x0E), 
        GPO1,   8, 
        GPO2,   8
    }

    OperationRegion (IR21, SystemIO, 0x21, 0x01)
    Field (IR21, ByteAcc, NoLock, Preserve)
    {
        IQ21,   8
    }

    OperationRegion (KDAT, SystemIO, 0x60, 0x05)
    Field (KDAT, ByteAcc, NoLock, Preserve)
    {
        KBDT,   8, 
        Offset (0x04), 
        KBID,   1, 
        Offset (0x05)
    }

    Method (_PTS, 1, NotSerialized)
    {
        Store (Arg0, DBG8)
        Store (Arg0, ACST)
        Store (0xFFFF, GP0S)
        Store (0xFFFF, GP1S)
        And (BECL, 0x7F, BECL)
        If (LNot (LEqual (Arg0, 0x05)))
        {
            Store (0x00, FNW1)
            Store (0x00, FNW2)
        }

        \_SB.PCI0.SBRG.ENFG ()
        Store (0x0A, \_SB.PCI0.SBRG.LDN)
        If (LNot (LEqual (Arg0, 0x05)))
        {
            While (\_SB.PCI0.SBRG.OPT4)
            {
                Stall (0x50)
                Store (0xFF, \_SB.PCI0.SBRG.OPT4)
            }
        }

        If (LEqual (Arg0, 0x01))
        {
            Store (0x33, \_SB.PCI0.SBRG.OPT7)
        }

        \_SB.PCI0.SBRG.EXFG ()
        If (LEqual (ACFG, 0x1E))
        {
            Store (0x3000, IOMO)
        }
        Else
        {
            If (LEqual (Arg0, 0x01))
            {
                Store (0x3100, IOMO)
            }

            If (LEqual (Arg0, 0x03))
            {
                Store (0x3100, IOMO)
            }

            If (LEqual (Arg0, 0x05))
            {
                Store (0x3100, IOMO)
            }
        }
    }

    Method (_WAK, 1, NotSerialized)
    {
        ShiftLeft (Arg0, 0x04, DBG8)
        If (LEqual (Arg0, 0x01))
        {
            Sleep (0x0BB8)
        }

        Store (0x3000, IOMO)
        If (LEqual (RTCS, 0x00))
        {
            Notify (\_SB.SLPB, 0x02)
        }

        Store (0xFF, FNW1)
        Store (0xFF, FNW2)
        \_SB.PCI0.SBRG.ENFG ()
        Store (0x0A, \_SB.PCI0.SBRG.LDN)
        Store (0x00, \_SB.PCI0.SBRG.OPT7)
        \_SB.PCI0.SBRG.EXFG ()
        Or (BECL, 0x80, BECL)
        Store (0xFFFF, GP0S)
        Store (0xFFFF, GP1S)
        Store (0x01, PWEN)
    }

    OperationRegion (TEMP, SystemIO, 0x80, 0x01)
    Field (TEMP, ByteAcc, NoLock, Preserve)
    {
        DBG8,   8
    }
}

-------------- next part --------------
A non-text attachment was scrubbed...
Name: foo.dsdt
Type: application/octet-stream
Size: 12551 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20040812/d81fd5a2/foo-0001.obj


More information about the freebsd-current mailing list