From owner-acpi-jp@jp.freebsd.org  Sat Sep 15 03:53:19 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id DAA77430;
	Sat, 15 Sep 2001 03:53:19 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from salmon.maths.tcd.ie (mmdf@salmon.maths.tcd.ie [134.226.81.11])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with SMTP id DAA77422
	for <acpi-jp@jp.FreeBSD.org>; Sat, 15 Sep 2001 03:53:15 +0900 (JST)
	(envelope-from dwmalone@maths.tcd.ie)
Received: from walton.maths.tcd.ie by salmon.maths.tcd.ie with SMTP
          id <aa52190@salmon>; 14 Sep 2001 19:53:11 +0100 (BST)
Date: Fri, 14 Sep 2001 19:53:10 +0100
From: David Malone <dwmalone@maths.tcd.ie>
To: acpi-jp@jp.FreeBSD.org
Message-ID: <20010914195310.A16340@walton.maths.tcd.ie>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="MGYHOYXEY6WxJCY8"
Content-Disposition: inline
User-Agent: Mutt/1.2.5i
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: acpi-jp 1281
Subject: [acpi-jp 1281] Phantom serial ports with -current acpi.
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: dwmalone@maths.tcd.ie


--MGYHOYXEY6WxJCY8
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

I seem to have one of those unfortunate machines that doesn't work
very well with ACPI. With the previous version of ACPI in -current
it did not detect my floppy drive. With the -current version it
detects an extra serial port and then freezes.

sio0 port 0x3f8-0x3ff irq4 on acpi 0
sio0: type  16550A
sio1 port 0x2f8-0x2ff irq 3 on acpi 0
sio1: type 16550A
sio2: configured irq 0 not in bitmap of probed irqs
sio2 port 0-0x87 irq 0 on acpi0
sio2: type 8250

I'm not terribly supriesd that it freezes after this! I've tried
deleting the hints for the serial ports and that doesn't help.

The motherboard is a Gigabyte GA-5AX with "ALi Aladdin V AGPset"
according to the manual. I've included the output of acpidump and
the dmesg from a nonacpi boot.

	David.

--MGYHOYXEY6WxJCY8
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=dmesg

Copyright (c) 1992-2001 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.0-CURRENT #8: Sun Sep  9 12:06:38 BST 2001
    dwmalone@gonzo.home:/usr/src/sys/i386/compile/GONZO
Timecounter "i8254"  frequency 1193182 Hz
Timecounter "TSC"  frequency 400910789 Hz
CPU: AMD-K6(tm) 3D processor (400.91-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x58c  Stepping = 12
  Features=0x8021bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,PGE,MMX>
  AMD Features=0x80000800<SYSCALL,3DNow!>
real memory  = 402587648 (393152K bytes)
avail memory = 387489792 (378408K bytes)
Preloaded elf kernel "kernel" at 0xc041b000.
K6-family MTRR support enabled (2 registers)
Using $PIR table, 8 entries at 0xc00fdef0
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <AcerLabs M1541 (Aladdin-V) PCI host bridge> at pcibus 0 on motherboard
pci0: <PCI bus> on pcib0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <display, VGA> at device 0.0 (no driver attached)
ohci0: <AcerLabs M5237 (Aladdin-V) USB controller> mem 0xeb001000-0xeb001fff irq 11 at device 2.0 on pci0
usb0: OHCI version 1.0, legacy support
usb0: <AcerLabs M5237 (Aladdin-V) USB controller> on ohci0
usb0: USB revision 1.0
uhub0: AcerLabs OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
isab0: <PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
adv0: <AdvanSys ASC3030/50 SCSI controller> port 0xe000-0xe0ff mem 0xeb000000-0xeb0000ff irq 9 at device 9.0 on pci0
adv0: AdvanSys Ultra SCSI Host Adapter, SCSI ID 7, queue depth 16
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 9 at device 10.0 on pci0
usb1: <VIA 83C572 USB controller> on uhci0
usb1: USB revision 1.0
uhub1: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
ugen0: VLSI Vision Ltd. USB Camera, rev 1.00/1.60, addr 2
pcm0: <AudioPCI ES1373-8> port 0xe800-0xe83f irq 9 at device 11.0 on pci0
atapci0: <AcerLabs Aladdin ATA33 controller> port 0xf000-0xf00f irq 0 at device 15.0 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
orm0: <Option ROMs> at iomem 0xc0000-0xc7fff,0xc8000-0xcafff on isa0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
ed0 at port 0x240-0x25f iomem 0xd8000 irq 10 on isa0
ed0: address 00:40:05:a5:e6:60, type NE2000 (16 bit) 
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/1 bytes threshold
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
sc0: <System console> on isa0
sc0: VGA <16 virtual consoles, flags=0x200>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
unknown: <PNP0303> can't assign resources
pca0: <AT-style speaker sound> at port 0x61 on isa0
sio0: <16550A-compatible COM port> at port 0x3f8-0x3ff irq 4 on isa0
sio0: type 16550A
fdc0: <NEC 72065B or clone> at port 0x3f2-0x3f5,0x3f7 irq 6 drq 2 on isa0
unknown: <PNP0401> can't assign resources
sio1: <16550A-compatible COM port> at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
unknown: <PNP0f13> can't assign resources
ad0: 6149MB <QUANTUM FIREBALL CX6.4A> [13328/15/63] at ata0-master UDMA33
ad1: 9541MB <Maxtor 51024U2> [19386/16/63] at ata0-slave UDMA33
ad2: 2014MB <\^?U\^?N^UM ^IREBA^L_TM2110A> [4092/16/63] at ata1-master WDMA2
acd0: CDROM <LG CD-ROM CRD-8522B> at ata1-slave PIO4
Waiting 5 seconds for SCSI devices to settle
Mounting root from ufs:/dev/ad1s1a
da0 at adv0 bus 0 target 2 lun 0
da0: <SEAGATE ST15150N 0017> Fixed Direct Access SCSI-2 device 
da0: 10.000MB/s transfers (10.000MHz, offset 15), Tagged Queueing Enabled
da0: 4095MB (8388315 512 byte sectors: 255H 63S/T 522C)
da1 at adv0 bus 0 target 5 lun 0
da1: <IOMEGA ZIP 100 J.03> Removable Direct Access SCSI-2 device 
da1: 3.300MB/s transfers
da1: Attempt to query device size failed: NOT READY, Medium not present
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
PID 310 Internalising (65535:3) size 84 (96) in 96
PID 291 Externalising (65535:3) size 84 (96) in 96
PID 291 Internalising (65535:3) size 84 (96) in 96
PID 310 Externalising (65535:3) size 84 (96) in 96
cd0 at adv0 bus 0 target 4 lun 0
cd0: <HP CD-Writer 6020 1.07> Removable CD-ROM SCSI-2 device 
cd0: 3.300MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Logical unit not ready, cause not reportable

--MGYHOYXEY6WxJCY8
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=acpidump
Content-Transfer-Encoding: quoted-printable

RSD PTR: Checksum=3D94, OEMID=3DGBT, RsdtAddress=3D0x17ff3000
RSDT: Lenth=3D40, Revision=3D1, Checksum=3D141,
	OEMID=3DGBT, OEM Table ID=3DAWRDACPI, OEM Revision=3D0x42302e31,
	Creator ID=3DAWRD, Creator Revision=3D0x0
	Entries=3D{ 0x17ff3040 }
	DSDT=3D0x17ff30c0
	INT_MODEL=3DPIC
	SCI_INT=3D9
	SMI_CMD=3D0xb1, ACPI_ENABLE=3D0x21, ACPI_DISABLE=3D0x20, S4BIOS_REQ=3D0xa4
	PM1a_EVT_BLK=3D0x4000-0x4003
	PM1a_CNT_BLK=3D0x4004-0x4005
	PM2_TMR_BLK=3D0x4008-0x400b
	PM2_GPE1_BLK=3D0x4020-0x4027, GPE1_BASE=3D0
	P_LVL2_LAT=3D90ms, P_LVL3_LAT=3D900ms
	FLUSH_SIZE=3D0, FLUSH_STRIDE=3D0
	DUTY_OFFSET=3D1, DUTY_WIDTH=3D1
	DAY_ALRM=3D13, MON_ALRM=3D0, CENTURY=3D0
	Flags=3D{WBINVD,PROC_C1,SLP_BUTTON,RTC_S4,TMR_VAL_EXT}
DSDT: Lenth=3D10920, Revision=3D1, Checksum=3D120,
	OEMID=3DGBT, OEM Table ID=3DAWRDACPI, OEM Revision=3D0x1000,
	Creator ID=3DMSFT, Creator Revision=3D0x100000a
Scope(\_PR_) {
    Processor(\_PR_.CPU0, 1, 0x4010, 0x6) {
    }
}
Name(\_S0_, Package(0x2) {
    0x4,
    0x4,
})
Name(\_S1_, Package(0x2) {
    0x6,
    0x6,
})
Name(\_S5_, Package(0x2) {
    0x7,
    0x7,
})
Name(\_S4_, Package(0x2) {
    0x1,
    0x1,
})
OperationRegion(DEBG, SystemIO, 0x80, 0x1)
Field(DEBG, ByteAcc, NoLock, Preserve) {
    DBG1,	8
}
OperationRegion(POR1, SystemIO, 0xb0, 0x4)
Field(POR1, ByteAcc, NoLock, Preserve) {
    POB0,	8,
    POB1,	8,
    POB2,	8,
    POB3,	8
}
OperationRegion(DBE0, SystemIO, 0x84, 0x1)
Field(DBE0, ByteAcc, NoLock, Preserve) {
    DBG2,	8
}
OperationRegion(PM1S, SystemIO, 0x4000, 0x40)
Field(PM1S, ByteAcc, NoLock, Preserve) {
    STS1,	8,
    STS2,	8,
    PEN1,	8,
    PEN2,	8,
    PCT0,	8,
    PCT1,	8,
    RE06,	8,
    RE07,	8,
    PTM1,	8,
    PTM2,	8,
    PTM3,	8,
    PTM4,	8,
    RE0C,	8,
    RE0D,	8,
    RE0E,	8,
    RE0F,	8,
    PCN1,	8,
    PCN2,	8,
    PCN3,	8,
    PCN4,	8,
    LVL2,	8,
    LVL3,	8,
    RE16,	8,
    RE17,	8,
    G0S1,	8,
    G0S2,	8,
    G0E1,	8,
    G0E2,	8,
    G1S1,	8,
    G1S2,	8,
    G1E1,	8,
    G1E2,	8,
    G1C1,	8,
    G1C2,	8,
    G1C3,	8,
    G1C4,	8,
    G1C5,	8,
    G1C6,	8,
    G1C7,	8,
    G1C8,	8,
    RE28,	8,
    RE29,	8,
    RE2A,	8,
    RE2B,	8,
    RE2C,	8,
    RE2D,	8,
    RE2E,	8,
    RE2F,	8,
    PM2C,	8,
    RE31,	8,
    RE32,	8,
    RE33,	8,
    RE34,	8,
    RE35,	8,
    RE36,	8,
    RE37,	8,
    RE38,	8,
    RE39,	8,
    RE3A,	8,
    RE3B,	8,
    RE3C,	8,
    RE3D,	8,
    RE3E,	8,
    RE3F,	8
}
OperationRegion(ELCR, SystemIO, 0x04d0, 0x2)
Field(ELCR, ByteAcc, NoLock, Preserve) {
    ELC1,	8,
    ELC2,	8
}
OperationRegion(EXTM, SystemMemory, 0x000ff830, 0x10)
Field(EXTM, WordAcc, NoLock, Preserve) {
    ROM1,	16,
    RMS1,	16,
    ROM2,	16,
    RMS2,	16,
    ROM3,	16,
    RMS3,	16,
    AMEM,	32
}
OperationRegion(VGAM, SystemMemory, 0x000c0002, 0x1)
Field(VGAM, ByteAcc, NoLock, Preserve) {
    VGA1,	8
}
Name(OSFL, 0x1)
Method(STRC, 2) {
    If(LNot(LEqual(Sizeof(Arg0), Sizeof(Arg1)))) {
        Return(0x0)
    }
    Add(Sizeof(Arg0), 0x1, Local0)
    Name(BUF0, Buffer(Local0) { })
    Name(BUF1, Buffer(Local0) { })
    Store(Arg0, BUF0)
    Store(Arg1, BUF1)
    While(Local0) {
        Decrement(Local0)
        If(LNot(LEqual(DerefOf(Index(BUF0, Local0, )), DerefOf(Index(BUF1, =
Local0, ))))) {
            Return(Zero)
        }
    }
    Return(One)
}
OperationRegion(RTCM, SystemIO, 0x70, 0x2)
Field(RTCM, ByteAcc, NoLock, Preserve) {
    CMIN,	8,
    CMDA,	8
}
IndexField(CMIN, CMDA, ByteAcc, NoLock, Preserve) {
    Offset(0xf),
    SHUT,	8
}
OperationRegion(\GRAM, SystemMemory, 0x0400, 0x0100)
Field(\GRAM, ByteAcc, NoLock, Preserve) {
    Offset(0x10),
    FLG0,	8,
    Offset(0xba),
    SFLG,	8
}
OperationRegion(INFO, SystemMemory, 0x000ff840, 0x1)
Field(INFO, ByteAcc, NoLock, Preserve) {
    KBDI,	1
}
OperationRegion(BEEP, SystemIO, 0x61, 0x1)
Field(BEEP, ByteAcc, NoLock, Preserve) {
    S1B_,	8
}
OperationRegion(CONT, SystemIO, 0x40, 0x4)
Field(CONT, ByteAcc, NoLock, Preserve) {
    CNT0,	8,
    CNT1,	8,
    CNT2,	8,
    CTRL,	8
}
Method(SPKR, 1) {
    Store(S1B_, Local0)
    Store(0xb6, CTRL)
    Store(0x55, CNT2)
    Store(0x3, CNT2)
    Store(Arg0, Local2)
    While(LGreater(Local2, 0x0)) {
        Or(S1B_, 0x3, S1B_)
        Store(0x5fff, Local3)
        While(LGreater(Local3, 0x0)) {
            Decrement(Local3)
        }
        And(S1B_, 0xfc, S1B_)
        Store(0x0eff, Local3)
        While(LGreater(Local3, 0x0)) {
            Decrement(Local3)
        }
        Decrement(Local2)
    }
    Store(Local0, S1B_)
}
Method(\_PTS, 1) {
    Or(Arg0, 0xf0, Local0)
    Store(Local0, DBG1)
    If(OSFL) {
        Store(0x1, DBG2)
    }
    Else {
        Store(0x0, DBG2)
    }
    If(LEqual(Arg0, 0x1)) {
        Store(0x1, POB1)
    }
    If(LEqual(Arg0, 0x5)) {
        Store(0x3, POB1)
        Store(0xff, G0S2)
    }
}
Method(\_WAK, 1) {
    Notify(\_SB_.PWRB, 0x2)
    Store(0xff, DBG1)
    If(LEqual(Arg0, 0x1)) {
        Store(0x2, POB1)
    }
}
Scope(\_SI_) {
    OperationRegion(BSET, SystemMemory, 0x000ff81c, 0x1)
    Field(BSET, ByteAcc, NoLock, Preserve) {
        FSET,	1
    }
    Method(_MSG, 1) {
        If(LEqual(Arg0, 0x5)) {
            Store(0x0, ALED)
            Return(0x0)
        }
        If(LEqual(Arg0, Zero)) {
            Store(0x0, ALED)
        }
        If(LEqual(Arg0, 0x2)) {
            Store(0x0, ALED)
        }
    }
    Method(_SST, 1) {
        If(LEqual(Arg0, Zero)) {
            Store(0x1, ALED)
            Store(DBG1, Local0)
            If(LEqual(Local0, 0xf5)) {
                Store(0x0, ALED)
            }
            Return(0x0)
        }
        If(LEqual(Arg0, One)) {
            Store(0x0, ALED)
            Store(FPWR, Local0)
            Or(Local0, 0x4, Local0)
            Store(Local0, FPWR)
            Return(0x0)
        }
        If(LEqual(Arg0, 0x2)) {
            Store(0x6, ALED)
            Return(0x0)
        }
        If(LEqual(Arg0, 0x3)) {
            Store(0x6, ALED)
            Store(FSET, Local0)
            And(Local0, 0x1, Local0)
            If(LEqual(Local0, 0x1)) {
                Store(FPWR, Local0)
                And(Local0, 0xfb, Local0)
                Store(Local0, FPWR)
            }
            Return(0x0)
        }
        If(LEqual(Arg0, 0x4)) {
            Store(0x6, ALED)
            Return(0x0)
        }
    }
}
Scope(\_SB_) {
    Device(PWRB) {
        Name(_HID, 0x0c0cd041)
        Method(_STA) {
            Return(0xb)
        }
    }
    Device(MEM_) {
        Name(_HID, 0x010cd041)
        Method(_CRS) {
            Name(BUF0, Buffer(0x62) {0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0xf, 0x=
0, 0x0, 0x40, 0x0, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x40, 0xf, 0x0, 0x0, 0x40=
, 0x0, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x80, 0xf, 0x0, 0x0, 0x40, 0x0, 0x0, =
0x86, 0x9, 0x0, 0x1, 0x0, 0xc0, 0xf, 0x0, 0x0, 0x40, 0x0, 0x0, 0x86, 0x9, 0=
x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, =
0x0, 0xff, 0xff, 0x0, 0x0, 0x1, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x0, 0x=
0, 0x0, 0x0, 0xa, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, =
0x0, 0x0, 0x79, 0x0 })
            CreateDWordField(BUF0, 0x34, ACMM)
            CreateDWordField(BUF0, 0x4, RMA1)
            CreateDWordField(BUF0, 0x8, RSS1)
            CreateDWordField(BUF0, 0x10, RMA2)
            CreateDWordField(BUF0, 0x14, RSS2)
            CreateDWordField(BUF0, 0x1c, RMA3)
            CreateDWordField(BUF0, 0x20, RSS3)
            CreateDWordField(BUF0, 0x28, RMA4)
            CreateDWordField(BUF0, 0x2c, RSS4)
            CreateDWordField(BUF0, 0x5c, EXTM)
            Subtract(AMEM, 0x00100000, EXTM)
            If(LNot(LEqual(ROM1, Zero))) {
                Store(RMA1, RMA2)
                ShiftLeft(ROM1, 0x8, Local0)
                Store(Local0, RMA1)
                ShiftLeft(RMS1, 0x8, Local0)
                Store(Local0, RSS1)
                Store(0x8000, RSS2)
            }
            If(LNot(LEqual(ROM2, Zero))) {
                Store(RMA2, RMA3)
                ShiftLeft(ROM2, 0x8, Local0)
                Store(Local0, RMA2)
                ShiftLeft(RMS2, 0x8, Local0)
                Store(Local0, RSS2)
                Store(0xc000, RSS3)
            }
            If(LNot(LEqual(ROM3, Zero))) {
                Store(RMA3, RMA4)
                ShiftLeft(ROM3, 0x8, Local0)
                Store(Local0, RMA3)
                ShiftLeft(RMS3, 0x8, Local0)
                Store(Local0, RSS3)
                Store(0x00010000, RSS4)
            }
            Store(AMEM, ACMM)
            Return(BUF0)
        }
    }
    Device(PCI0) {
        Name(_HID, 0x030ad041)
        Name(_ADR, 0x0)
        Method(_INI) {
            If(STRC) {
                \_OS_
                "Microsoft Windows"
            }
            Else {
                Store(0x0, OSFL)
            }
        }
        Method(_STA) {
            Return(0xf)
        }
        Method(_CRS) {
            Name(BUF0, Buffer(0xb6) {0x88, 0xd, 0x0, 0x2, 0x1, 0x0, 0x0, 0x=
0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1, 0x47, 0x1, 0xf8, 0xc, 0xf8, 0xc=
, 0x1, 0x8, 0x88, 0xd, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0xf7, 0xc, 0=
x0, 0x0, 0xf8, 0xc, 0x88, 0xd, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x0, 0xd, 0xff=
, 0x3f, 0x0, 0x0, 0x0, 0x33, 0x47, 0x1, 0x0, 0x40, 0x0, 0x40, 0x1, 0x40, 0x=
88, 0xd, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x40, 0x40, 0xff, 0x4f, 0x0, 0x0, 0x=
c0, 0xf, 0x47, 0x1, 0x0, 0x50, 0x0, 0x50, 0x1, 0x20, 0x88, 0xd, 0x0, 0x1, 0=
xc, 0x3, 0x0, 0x0, 0x20, 0x50, 0xff, 0xff, 0x0, 0x0, 0xdf, 0xaf, 0x47, 0x1,=
 0x80, 0x4, 0x80, 0x4, 0x1, 0x10, 0x47, 0x1, 0xb, 0x4, 0xb, 0x4, 0x1, 0x1, =
0x47, 0x1, 0xd6, 0x4, 0xd6, 0x4, 0x1, 0x1, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, =
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0x7f, 0xc, 0x0, 0x0, 0x0, 0x0=
, 0x0, 0x0, 0x80, 0x2, 0x0, 0x87, 0x17, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, =
0x0, 0x0, 0x0, 0x10, 0x0, 0xff, 0xff, 0xef, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, =
0x0, 0xf0, 0xff, 0x79, 0x0 })
            CreateDWordField(BUF0, 0x8e, VMAX)
            CreateDWordField(BUF0, 0x96, VLEN)
            ShiftLeft(VGA1, 0x9, Local0)
            Add(Local0, 0x000bffff, VMAX)
            Add(Local0, 0x00020000, VLEN)
            CreateDWordField(BUF0, 0xa4, TCMM)
            CreateDWordField(BUF0, 0xb0, TOMM)
            Add(AMEM, 0x00010000, TCMM)
            Subtract(0xfff00000, TCMM, TOMM)
            Return(BUF0)
        }
        Name(_PRT, Package(0x1c) {
            Package(0x4) {
                0x0008ffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x0008ffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x0008ffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x0008ffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
            Package(0x4) {
                0x0009ffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x0009ffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x0009ffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
            Package(0x4) {
                0x0009ffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x000affff,
                0x0,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x000affff,
                0x1,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
            Package(0x4) {
                0x000affff,
                0x2,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x000affff,
                0x3,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x000bffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
            Package(0x4) {
                0x000bffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x000bffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x000bffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x000cffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x000cffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x000cffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x000cffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
            Package(0x4) {
                0x0002ffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKE,
                0x0,
            },
            Package(0x4) {
                0x0002ffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKE,
                0x0,
            },
            Package(0x4) {
                0x0002ffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKE,
                0x0,
            },
            Package(0x4) {
                0x0002ffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKE,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x0,
                \_SB_.PCI0.ISA0.LNKA,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x1,
                \_SB_.PCI0.ISA0.LNKB,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x2,
                \_SB_.PCI0.ISA0.LNKC,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x3,
                \_SB_.PCI0.ISA0.LNKD,
                0x0,
            },
        })
        Device(PTOI) {
            Name(_ADR, 0x00070000)
            OperationRegion(LEDC, PCI_Config, 0xb5, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.LEDC, ByteAcc, NoLock, Preserve) {
                    ALED,	8
                }
            }
            OperationRegion(FANC, PCI_Config, 0xc0, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.FANC, ByteAcc, NoLock, Preserve) {
                    FPWR,	8
                }
            }
            OperationRegion(SMCC, PCI_Config, 0x8, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.SMCC, ByteAcc, NoLock, Preserve) {
                    REV1,	8
                }
            }
            OperationRegion(PIRQ, PCI_Config, 0x48, 0x2)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.PIRQ, ByteAcc, NoLock, Preserve) {
                    PIBA,	8,
                    PIDC,	8
                }
            }
            OperationRegion(UIRQ, PCI_Config, 0x74, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.UIRQ, ByteAcc, NoLock, Preserve) {
                    UPIA,	8
                }
            }
            OperationRegion(PMUD, PCI_Config, 0x5f, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PTOI.PMUD, ByteAcc, NoLock, Preserve) {
                    P5FH,	8
                }
            }
        }
        Device(IDE_) {
            Name(_ADR, 0x000f0000)
            OperationRegion(IREV, PCI_Config, 0x5e, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.IDE_.IREV, ByteAcc, NoLock, Preserve) {
                    REV2,	8
                }
            }
        }
        Device(USB0) {
            Name(_ADR, 0x00020000)
        }
        Device(PMU0) {
            Name(_ADR, 0x00030000)
            OperationRegion(LEDC, PCI_Config, 0xb5, 0x1)
            Scope(\) {
                Field(\_SB_.PCI0.PMU0.LEDC, ByteAcc, NoLock, Preserve) {
                    SLED,	8
                }
            }
        }
        Device(ISA0) {
            Name(_ADR, 0x00070000)
            Method(_STA) {
                Return(0xb)
            }
            Device(LNKA) {
                Name(_HID, 0x0f0cd041)
                Name(_UID, 0x1)
                Method(_STA) {
                    And(PIBA, 0xf, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Return(0x9)
                    }
                    Else {
                        Return(0xb)
                    }
                }
                Method(_PRS) {
                    Name(BUFA, Buffer(0x6) {0x23, 0xfa, 0xdc, 0x18, 0x79, 0=
x0 })
                    Return(BUFA)
                }
                Method(_DIS) {
                    And(PIBA, 0xf0, PIBA)
                }
                Method(_CRS) {
                    Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0=
 })
                    CreateByteField(BUFA, 0x1, IRA1)
                    CreateByteField(BUFA, 0x2, IRA2)
                    And(PIBA, 0xf, Local1)
                    If(LNot(LEqual(Local1, 0x0))) {
                        If(LEqual(Local1, 0x1)) {
                            Store(0x3, Local3)
                        }
                        If(LEqual(Local1, 0x2)) {
                            Store(0x8, Local3)
                        }
                        If(LEqual(Local1, 0x3)) {
                            Store(0x5, Local3)
                        }
                        If(LEqual(Local1, 0x4)) {
                            Store(0x10, Local3)
                        }
                        If(LEqual(Local1, 0x5)) {
                            Store(0x20, Local3)
                        }
                        If(LEqual(Local1, 0x6)) {
                            Store(0x80, Local3)
                        }
                        If(LEqual(Local1, 0x7)) {
                            Store(0x40, Local3)
                        }
                        If(LEqual(Local1, 0x8)) {
                            Store(0x2, Local3)
                        }
                        If(LEqual(Local1, 0x9)) {
                            Store(0x9, Local3)
                        }
                        If(LEqual(Local1, 0xb)) {
                            Store(0x11, Local3)
                        }
                        If(LEqual(Local1, 0xd)) {
                            Store(0x41, Local3)
                        }
                        If(LEqual(Local1, 0xf)) {
                            Store(0x81, Local3)
                        }
                        And(Local3, 0x1, Local2)
                        If(LEqual(Local2, 0x1)) {
                            And(Local3, 0xfe, Local3)
                            Store(Local3, IRA2)
                        }
                        Else {
                            Store(Local3, IRA1)
                        }
                    }
                    Return(BUFA)
                }
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x1, IRA1)
                    CreateByteField(Arg0, 0x2, IRA2)
                    Or(ELC1, IRA1, ELC1)
                    Or(ELC2, IRA2, ELC2)
                    ShiftLeft(IRA2, 0x8, Local0)
                    Or(Local0, IRA1, Local0)
                    FindSetLeftBit(Local0, Local1)
                    Subtract(Local1, 0x1, Local1)
                    If(LEqual(Local1, 0x1)) {
                        Store(0x8, Local3)
                    }
                    If(LEqual(Local1, 0x3)) {
                        Store(0x2, Local3)
                    }
                    If(LEqual(Local1, 0x4)) {
                        Store(0x4, Local3)
                    }
                    If(LEqual(Local1, 0x5)) {
                        Store(0x5, Local3)
                    }
                    If(LEqual(Local1, 0x6)) {
                        Store(0x7, Local3)
                    }
                    If(LEqual(Local1, 0x7)) {
                        Store(0x6, Local3)
                    }
                    If(LEqual(Local1, 0x9)) {
                        Store(0x1, Local3)
                    }
                    If(LEqual(Local1, 0xa)) {
                        Store(0x3, Local3)
                    }
                    If(LEqual(Local1, 0xb)) {
                        Store(0x9, Local3)
                    }
                    If(LEqual(Local1, 0xc)) {
                        Store(0xb, Local3)
                    }
                    If(LEqual(Local1, 0xe)) {
                        Store(0xd, Local3)
                    }
                    If(LEqual(Local1, 0xf)) {
                        Store(0xf, Local3)
                    }
                    And(PIBA, 0xf0, PIBA)
                    Or(PIBA, Local3, PIBA)
                }
            }
            Device(LNKB) {
                Name(_HID, 0x0f0cd041)
                Name(_UID, 0x2)
                Method(_STA) {
                    And(PIBA, 0xf0, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Return(0x9)
                    }
                    Else {
                        Return(0xb)
                    }
                }
                Method(_PRS) {
                    Name(BUFB, Buffer(0x6) {0x23, 0xfa, 0xdc, 0x18, 0x79, 0=
x0 })
                    Return(BUFB)
                }
                Method(_DIS) {
                    And(PIBA, 0xf, PIBA)
                }
                Method(_CRS) {
                    Name(BUFB, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0=
 })
                    CreateByteField(BUFB, 0x1, IRB1)
                    CreateByteField(BUFB, 0x2, IRB2)
                    And(PIBA, 0xf0, Local1)
                    ShiftRight(Local1, 0x4, Local1)
                    If(LNot(LEqual(Local1, 0x0))) {
                        If(LEqual(Local1, 0x1)) {
                            Store(0x3, Local3)
                        }
                        If(LEqual(Local1, 0x2)) {
                            Store(0x8, Local3)
                        }
                        If(LEqual(Local1, 0x3)) {
                            Store(0x5, Local3)
                        }
                        If(LEqual(Local1, 0x4)) {
                            Store(0x10, Local3)
                        }
                        If(LEqual(Local1, 0x5)) {
                            Store(0x20, Local3)
                        }
                        If(LEqual(Local1, 0x6)) {
                            Store(0x80, Local3)
                        }
                        If(LEqual(Local1, 0x7)) {
                            Store(0x40, Local3)
                        }
                        If(LEqual(Local1, 0x8)) {
                            Store(0x2, Local3)
                        }
                        If(LEqual(Local1, 0x9)) {
                            Store(0x9, Local3)
                        }
                        If(LEqual(Local1, 0xb)) {
                            Store(0x11, Local3)
                        }
                        If(LEqual(Local1, 0xd)) {
                            Store(0x41, Local3)
                        }
                        If(LEqual(Local1, 0xf)) {
                            Store(0x81, Local3)
                        }
                        And(Local3, 0x1, Local2)
                        If(LEqual(Local2, 0x1)) {
                            And(Local3, 0xfe, Local3)
                            Store(Local3, IRB2)
                        }
                        Else {
                            Store(Local3, IRB1)
                        }
                    }
                    Return(BUFB)
                }
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x1, IRB1)
                    CreateByteField(Arg0, 0x2, IRB2)
                    Or(ELC1, IRB1, ELC1)
                    Or(ELC2, IRB2, ELC2)
                    ShiftLeft(IRB2, 0x8, Local0)
                    Or(Local0, IRB1, Local0)
                    FindSetLeftBit(Local0, Local1)
                    Subtract(Local1, 0x1, Local1)
                    If(LEqual(Local1, 0x1)) {
                        Store(0x8, Local3)
                    }
                    If(LEqual(Local1, 0x3)) {
                        Store(0x2, Local3)
                    }
                    If(LEqual(Local1, 0x4)) {
                        Store(0x4, Local3)
                    }
                    If(LEqual(Local1, 0x5)) {
                        Store(0x5, Local3)
                    }
                    If(LEqual(Local1, 0x6)) {
                        Store(0x7, Local3)
                    }
                    If(LEqual(Local1, 0x7)) {
                        Store(0x6, Local3)
                    }
                    If(LEqual(Local1, 0x9)) {
                        Store(0x1, Local3)
                    }
                    If(LEqual(Local1, 0xa)) {
                        Store(0x3, Local3)
                    }
                    If(LEqual(Local1, 0xb)) {
                        Store(0x9, Local3)
                    }
                    If(LEqual(Local1, 0xc)) {
                        Store(0xb, Local3)
                    }
                    If(LEqual(Local1, 0xe)) {
                        Store(0xd, Local3)
                    }
                    If(LEqual(Local1, 0xf)) {
                        Store(0xf, Local3)
                    }
                    And(PIBA, 0xf, PIBA)
                    ShiftLeft(Local3, 0x4, Local3)
                    Or(PIBA, Local3, PIBA)
                }
            }
            Device(LNKC) {
                Name(_HID, 0x0f0cd041)
                Name(_UID, 0x3)
                Method(_STA) {
                    And(PIDC, 0xf, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Return(0x9)
                    }
                    Else {
                        Return(0xb)
                    }
                }
                Method(_PRS) {
                    Name(BUFC, Buffer(0x6) {0x23, 0xfa, 0xdc, 0x18, 0x79, 0=
x0 })
                    Return(BUFC)
                }
                Method(_DIS) {
                    And(PIDC, 0xf0, PIDC)
                }
                Method(_CRS) {
                    Name(BUFC, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0=
 })
                    CreateByteField(BUFC, 0x1, IRC1)
                    CreateByteField(BUFC, 0x2, IRC2)
                    And(PIDC, 0xf, Local1)
                    If(LNot(LEqual(Local1, 0x0))) {
                        If(LEqual(Local1, 0x1)) {
                            Store(0x3, Local3)
                        }
                        If(LEqual(Local1, 0x2)) {
                            Store(0x8, Local3)
                        }
                        If(LEqual(Local1, 0x3)) {
                            Store(0x5, Local3)
                        }
                        If(LEqual(Local1, 0x4)) {
                            Store(0x10, Local3)
                        }
                        If(LEqual(Local1, 0x5)) {
                            Store(0x20, Local3)
                        }
                        If(LEqual(Local1, 0x6)) {
                            Store(0x80, Local3)
                        }
                        If(LEqual(Local1, 0x7)) {
                            Store(0x40, Local3)
                        }
                        If(LEqual(Local1, 0x8)) {
                            Store(0x2, Local3)
                        }
                        If(LEqual(Local1, 0x9)) {
                            Store(0x9, Local3)
                        }
                        If(LEqual(Local1, 0xb)) {
                            Store(0x11, Local3)
                        }
                        If(LEqual(Local1, 0xd)) {
                            Store(0x41, Local3)
                        }
                        If(LEqual(Local1, 0xf)) {
                            Store(0x81, Local3)
                        }
                        And(Local3, 0x1, Local2)
                        If(LEqual(Local2, 0x1)) {
                            And(Local3, 0xfe, Local3)
                            Store(Local3, IRC2)
                        }
                        Else {
                            Store(Local3, IRC1)
                        }
                    }
                    Return(BUFC)
                }
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x1, IRC1)
                    CreateByteField(Arg0, 0x2, IRC2)
                    Or(ELC1, IRC1, ELC1)
                    Or(ELC2, IRC2, ELC2)
                    ShiftLeft(IRC2, 0x8, Local0)
                    Or(Local0, IRC1, Local0)
                    FindSetLeftBit(Local0, Local1)
                    Subtract(Local1, 0x1, Local1)
                    If(LEqual(Local1, 0x1)) {
                        Store(0x8, Local3)
                    }
                    If(LEqual(Local1, 0x3)) {
                        Store(0x2, Local3)
                    }
                    If(LEqual(Local1, 0x4)) {
                        Store(0x4, Local3)
                    }
                    If(LEqual(Local1, 0x5)) {
                        Store(0x5, Local3)
                    }
                    If(LEqual(Local1, 0x6)) {
                        Store(0x7, Local3)
                    }
                    If(LEqual(Local1, 0x7)) {
                        Store(0x6, Local3)
                    }
                    If(LEqual(Local1, 0x9)) {
                        Store(0x1, Local3)
                    }
                    If(LEqual(Local1, 0xa)) {
                        Store(0x3, Local3)
                    }
                    If(LEqual(Local1, 0xb)) {
                        Store(0x9, Local3)
                    }
                    If(LEqual(Local1, 0xc)) {
                        Store(0xb, Local3)
                    }
                    If(LEqual(Local1, 0xe)) {
                        Store(0xd, Local3)
                    }
                    If(LEqual(Local1, 0xf)) {
                        Store(0xf, Local3)
                    }
                    And(PIDC, 0xf0, PIDC)
                    Or(PIDC, Local3, PIDC)
                }
            }
            Device(LNKD) {
                Name(_HID, 0x0f0cd041)
                Name(_UID, 0x4)
                Method(_STA) {
                    And(PIDC, 0xf0, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Return(0x9)
                    }
                    Else {
                        Return(0xb)
                    }
                }
                Method(_PRS) {
                    Name(BUFD, Buffer(0x6) {0x23, 0xfa, 0xdc, 0x18, 0x79, 0=
x0 })
                    Return(BUFD)
                }
                Method(_DIS) {
                    And(PIDC, 0xf, PIDC)
                }
                Method(_CRS) {
                    Name(BUFD, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0=
 })
                    CreateByteField(BUFD, 0x1, IRD1)
                    CreateByteField(BUFD, 0x2, IRD2)
                    And(PIDC, 0xf0, Local1)
                    ShiftRight(Local1, 0x4, Local1)
                    If(LNot(LEqual(Local1, 0x0))) {
                        If(LEqual(Local1, 0x1)) {
                            Store(0x3, Local3)
                        }
                        If(LEqual(Local1, 0x2)) {
                            Store(0x8, Local3)
                        }
                        If(LEqual(Local1, 0x3)) {
                            Store(0x5, Local3)
                        }
                        If(LEqual(Local1, 0x4)) {
                            Store(0x10, Local3)
                        }
                        If(LEqual(Local1, 0x5)) {
                            Store(0x20, Local3)
                        }
                        If(LEqual(Local1, 0x6)) {
                            Store(0x80, Local3)
                        }
                        If(LEqual(Local1, 0x7)) {
                            Store(0x40, Local3)
                        }
                        If(LEqual(Local1, 0x8)) {
                            Store(0x2, Local3)
                        }
                        If(LEqual(Local1, 0x9)) {
                            Store(0x9, Local3)
                        }
                        If(LEqual(Local1, 0xb)) {
                            Store(0x11, Local3)
                        }
                        If(LEqual(Local1, 0xd)) {
                            Store(0x41, Local3)
                        }
                        If(LEqual(Local1, 0xf)) {
                            Store(0x81, Local3)
                        }
                        And(Local3, 0x1, Local2)
                        If(LEqual(Local2, 0x1)) {
                            And(Local3, 0xfe, Local3)
                            Store(Local3, IRD2)
                        }
                        Else {
                            Store(Local3, IRD1)
                        }
                    }
                    Return(BUFD)
                }
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x1, IRD1)
                    CreateByteField(Arg0, 0x2, IRD2)
                    Or(ELC1, IRD1, ELC1)
                    Or(ELC2, IRD2, ELC2)
                    ShiftLeft(IRD2, 0x8, Local0)
                    Or(Local0, IRD1, Local0)
                    FindSetLeftBit(Local0, Local1)
                    Subtract(Local1, 0x1, Local1)
                    If(LEqual(Local1, 0x1)) {
                        Store(0x8, Local3)
                    }
                    If(LEqual(Local1, 0x3)) {
                        Store(0x2, Local3)
                    }
                    If(LEqual(Local1, 0x4)) {
                        Store(0x4, Local3)
                    }
                    If(LEqual(Local1, 0x5)) {
                        Store(0x5, Local3)
                    }
                    If(LEqual(Local1, 0x6)) {
                        Store(0x7, Local3)
                    }
                    If(LEqual(Local1, 0x7)) {
                        Store(0x6, Local3)
                    }
                    If(LEqual(Local1, 0x9)) {
                        Store(0x1, Local3)
                    }
                    If(LEqual(Local1, 0xa)) {
                        Store(0x3, Local3)
                    }
                    If(LEqual(Local1, 0xb)) {
                        Store(0x9, Local3)
                    }
                    If(LEqual(Local1, 0xc)) {
                        Store(0xb, Local3)
                    }
                    If(LEqual(Local1, 0xe)) {
                        Store(0xd, Local3)
                    }
                    If(LEqual(Local1, 0xf)) {
                        Store(0xf, Local3)
                    }
                    And(PIDC, 0xf, PIDC)
                    ShiftLeft(Local3, 0x4, Local3)
                    Or(PIDC, Local3, PIDC)
                }
            }
            Device(LNKE) {
                Name(_HID, 0x0f0cd041)
                Name(_UID, 0x5)
                Method(_STA) {
                    And(UPIA, 0xf, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Return(0x9)
                    }
                    Else {
                        Return(0xb)
                    }
                }
                Method(_PRS) {
                    Name(BUFE, Buffer(0x6) {0x23, 0xfa, 0xdc, 0x18, 0x79, 0=
x0 })
                    Return(BUFE)
                }
                Method(_DIS) {
                    And(UPIA, 0xf0, UPIA)
                }
                Method(_CRS) {
                    Name(BUFE, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0=
 })
                    CreateByteField(BUFE, 0x1, IRE1)
                    CreateByteField(BUFE, 0x2, IRE2)
                    And(UPIA, 0xf, Local1)
                    If(LNot(LEqual(Local1, 0x0))) {
                        If(LEqual(Local1, 0x1)) {
                            Store(0x3, Local3)
                        }
                        If(LEqual(Local1, 0x2)) {
                            Store(0x8, Local3)
                        }
                        If(LEqual(Local1, 0x3)) {
                            Store(0x5, Local3)
                        }
                        If(LEqual(Local1, 0x4)) {
                            Store(0x10, Local3)
                        }
                        If(LEqual(Local1, 0x5)) {
                            Store(0x20, Local3)
                        }
                        If(LEqual(Local1, 0x6)) {
                            Store(0x80, Local3)
                        }
                        If(LEqual(Local1, 0x7)) {
                            Store(0x40, Local3)
                        }
                        If(LEqual(Local1, 0x8)) {
                            Store(0x2, Local3)
                        }
                        If(LEqual(Local1, 0x9)) {
                            Store(0x9, Local3)
                        }
                        If(LEqual(Local1, 0xb)) {
                            Store(0x11, Local3)
                        }
                        If(LEqual(Local1, 0xd)) {
                            Store(0x41, Local3)
                        }
                        If(LEqual(Local1, 0xf)) {
                            Store(0x81, Local3)
                        }
                        And(Local3, 0x1, Local2)
                        If(LEqual(Local2, 0x1)) {
                            And(Local3, 0xfe, Local3)
                            Store(Local3, IRE2)
                        }
                        Else {
                            Store(Local3, IRE1)
                        }
                    }
                    Return(BUFE)
                }
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x1, IRE1)
                    CreateByteField(Arg0, 0x2, IRE2)
                    Or(ELC1, IRE1, ELC1)
                    Or(ELC2, IRE2, ELC2)
                    ShiftLeft(IRE2, 0x8, Local0)
                    Or(Local0, IRE1, Local0)
                    FindSetLeftBit(Local0, Local1)
                    Subtract(Local1, 0x1, Local1)
                    If(LEqual(Local1, 0x1)) {
                        Store(0x8, Local3)
                    }
                    If(LEqual(Local1, 0x3)) {
                        Store(0x2, Local3)
                    }
                    If(LEqual(Local1, 0x4)) {
                        Store(0x4, Local3)
                    }
                    If(LEqual(Local1, 0x5)) {
                        Store(0x5, Local3)
                    }
                    If(LEqual(Local1, 0x6)) {
                        Store(0x7, Local3)
                    }
                    If(LEqual(Local1, 0x7)) {
                        Store(0x6, Local3)
                    }
                    If(LEqual(Local1, 0x9)) {
                        Store(0x1, Local3)
                    }
                    If(LEqual(Local1, 0xa)) {
                        Store(0x3, Local3)
                    }
                    If(LEqual(Local1, 0xb)) {
                        Store(0x9, Local3)
                    }
                    If(LEqual(Local1, 0xc)) {
                        Store(0xb, Local3)
                    }
                    If(LEqual(Local1, 0xe)) {
                        Store(0xd, Local3)
                    }
                    If(LEqual(Local1, 0xf)) {
                        Store(0xf, Local3)
                    }
                    And(UPIA, 0xf0, UPIA)
                    Or(UPIA, Local3, UPIA)
                }
            }
            Device(SYSR) {
                Name(_HID, 0x020cd041)
                Name(_UID, 0x1)
                Name(_CRS, Buffer(0x5a) {0x47, 0x1, 0x10, 0x0, 0x10, 0x0, 0=
x1, 0x10, 0x47, 0x1, 0x22, 0x0, 0x22, 0x0, 0x1, 0x1e, 0x47, 0x1, 0x44, 0x0,=
 0x44, 0x0, 0x1, 0x1c, 0x47, 0x1, 0x62, 0x0, 0x62, 0x0, 0x1, 0x2, 0x47, 0x1=
, 0x65, 0x0, 0x65, 0x0, 0x1, 0xb, 0x47, 0x1, 0x74, 0x0, 0x74, 0x0, 0x1, 0xc=
, 0x47, 0x1, 0x91, 0x0, 0x91, 0x0, 0x1, 0x3, 0x47, 0x1, 0xa2, 0x0, 0xa2, 0x=
0, 0x1, 0x1e, 0x47, 0x1, 0xe0, 0x0, 0xe0, 0x0, 0x1, 0x10, 0x47, 0x1, 0xf0, =
0x3, 0xf0, 0x3, 0x1, 0x2, 0x47, 0x1, 0xd0, 0x4, 0xd0, 0x4, 0x1, 0x2, 0x79, =
0x0 })
            }
            Device(PIC_) {
                Name(_HID, 0xd041)
                Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x20, 0x0, 0x20, 0x0, 0=
x1, 0x2, 0x47, 0x1, 0xa0, 0x0, 0xa0, 0x0, 0x1, 0x2, 0x22, 0x4, 0x0, 0x79, 0=
x0 })
            }
            Device(DMA1) {
                Name(_HID, 0x0002d041)
                Name(_CRS, Buffer(0x25) {0x2a, 0x10, 0x4, 0x47, 0x1, 0x0, 0=
x0, 0x0, 0x0, 0x1, 0x10, 0x47, 0x1, 0x80, 0x0, 0x80, 0x0, 0x1, 0x11, 0x47, =
0x1, 0x94, 0x0, 0x94, 0x0, 0x1, 0xc, 0x47, 0x1, 0xc0, 0x0, 0xc0, 0x0, 0x1, =
0x20, 0x79, 0x0 })
            }
            Device(TMR_) {
                Name(_HID, 0x0001d041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x40, 0x0, 0x40, 0x0, 0x=
1, 0x4, 0x22, 0x1, 0x0, 0x79, 0x0 })
            }
            Device(RTC_) {
                Name(_HID, 0x000bd041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x70, 0x0, 0x70, 0x0, 0x=
0, 0x4, 0x22, 0x0, 0x1, 0x79, 0x0 })
            }
            Device(SPKR) {
                Name(_HID, 0x0008d041)
                Name(_CRS, Buffer(0xa) {0x47, 0x1, 0x61, 0x0, 0x61, 0x0, 0x=
1, 0x1, 0x79, 0x0 })
            }
            Device(COPR) {
                Name(_HID, 0x040cd041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0xf0, 0x0, 0xf0, 0x0, 0x=
1, 0x10, 0x22, 0x0, 0x20, 0x79, 0x0 })
            }
            OperationRegion(POR1, SystemIO, 0xb3, 0x1)
            Field(POR1, ByteAcc, NoLock, Preserve) {
                POB3,	8
            }
            OperationRegion(ALI1, SystemIO, 0x03f0, 0x2)
            Field(ALI1, ByteAcc, NoLock, Preserve) {
                INDX,	8,
                DATA,	8
            }
            IndexField(INDX, DATA, ByteAcc, NoLock, Preserve) {
                Offset(0x7),
                LDN_,	8,
                Offset(0x22),
                POWC,	8,
                AUTP,	8,
                Offset(0x2d),
                SWAP,	8,
                Offset(0x30),
                ACTR,	8,
                Offset(0x60),
                IOAH,	8,
                IOAL,	8,
                Offset(0x70),
                INTR,	8,
                Offset(0x72),
                INT1,	8,
                Offset(0x74),
                DMCH,	8,
                Offset(0xf0),
                OPT1,	8,
                OPT2,	8,
                OPT3,	8
            }
            Method(ENFG) {
                Store(0x51, INDX)
                Store(0x23, INDX)
            }
            Method(EXFG) {
                Store(0xbb, INDX)
            }
            Device(FDC0) {
                Name(_HID, 0x0007d041)
                Method(_STA) {
                    ENFG
                    Store(Zero, LDN_)
                    If(ACTR) {
                        EXFG
                        Return(0xf)
                    }
                    Else {
                        If(LOr(IOAH, IOAL)) {
                            EXFG
                            Return(0xd)
                        }
                        Else {
                            EXFG
                            Return(0x0)
                        }
                    }
                }
                Method(_DIS) {
                    ENFG
                    Store(0x0, LDN_)
                    Store(Zero, ACTR)
                    EXFG
                }
                Method(_CRS) {
                    Name(BUF0, Buffer(0x18) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0,=
 0x0, 0x4, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x22, 0x0, 0x0, 0x2a, 0=
x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF0, 0x2, IOLO)
                    CreateByteField(BUF0, 0x3, IOHI)
                    CreateByteField(BUF0, 0x4, IORL)
                    CreateByteField(BUF0, 0x5, IORH)
                    CreateByteField(BUF0, 0xa, ILO1)
                    CreateByteField(BUF0, 0xb, IHI1)
                    CreateByteField(BUF0, 0xc, IRL1)
                    CreateByteField(BUF0, 0xd, IRH1)
                    CreateByteField(BUF0, 0x11, IRQL)
                    CreateByteField(BUF0, 0x14, DMAV)
                    ENFG
                    Store(Zero, LDN_)
                    Store(One, ACTR)
                    Add(IOAL, 0x2, Local2)
                    Store(Local2, IOLO)
                    Store(Local2, IORL)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    Add(IOAL, 0x7, Local2)
                    Store(Local2, ILO1)
                    Store(Local2, IRL1)
                    Store(IOAH, IHI1)
                    Store(IOAH, IRH1)
                    Store(One, Local0)
                    ShiftLeft(Local0, INTR, IRQL)
                    Store(One, Local0)
                    ShiftLeft(Local0, DMCH, DMAV)
                    EXFG
                    Return(BUF0)
                }
                Name(_PRS, Buffer(0x1a) {0x30, 0x47, 0x1, 0xf2, 0x3, 0xf2, =
0x3, 0x0, 0x4, 0x47, 0x1, 0xf7, 0x3, 0xf7, 0x3, 0x0, 0x1, 0x22, 0x40, 0x0, =
0x2a, 0x4, 0x0, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateWordField(Arg0, 0x11, IRQL)
                    CreateByteField(Arg0, 0x14, DMAV)
                    ENFG
                    Store(Zero, LDN_)
                    Store(0xf0, IOAL)
                    Store(IOHI, IOAH)
                    FindSetRightBit(IRQL, Local0)
                    Subtract(Local0, 0x1, INTR)
                    FindSetRightBit(DMAV, Local0)
                    Subtract(Local0, 0x1, DMCH)
                    Store(One, ACTR)
                    EXFG
                }
            }
            Device(UAR1) {
                Name(_HID, 0x0105d041)
                Name(_UID, 0x1)
                Method(_STA) {
                    ENFG
                    Store(0x4, LDN_)
                    And(POWC, 0x10, Local0)
                    If(LEqual(Local0, 0x0)) {
                        EXFG
                        Return(0xf)
                    }
                    Else {
                        If(LOr(IOAH, IOAL)) {
                            EXFG
                            Return(0xd)
                        }
                        Else {
                            EXFG
                            Return(0x0)
                        }
                    }
                }
                Method(_DIS) {
                    ENFG
                    Store(0x4, LDN_)
                    Or(POWC, 0x10, POWC)
                    EXFG
                }
                Method(_CRS) {
                    Name(BUF1, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, =
0x0, 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF1, 0x2, IOLO)
                    CreateByteField(BUF1, 0x3, IOHI)
                    CreateByteField(BUF1, 0x4, IORL)
                    CreateByteField(BUF1, 0x5, IORH)
                    CreateByteField(BUF1, 0x9, IRQL)
                    ENFG
                    Store(0x4, LDN_)
                    Store(IOAL, IOLO)
                    Store(IOAL, IORL)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    Store(One, Local0)
                    ShiftLeft(Local0, INTR, IRQL)
                    EXFG
                    Return(BUF1)
                }
                Name(_PRS, Buffer(0x33) {0x30, 0x47, 0x1, 0xf8, 0x3, 0xf8, =
0x3, 0x0, 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0,=
 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x2=
2, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x22, 0xb8, =
0x0, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x9, IRQL)
                    ENFG
                    Store(0x4, LDN_)
                    And(POWC, 0xef, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    FindSetRightBit(IRQL, Local0)
                    Subtract(Local0, 0x1, INTR)
                    EXFG
                }
            }
            Device(UAR2) {
                Name(_HID, 0x0105d041)
                Name(_UID, 0x2)
                Method(_STA) {
                    ENFG
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        Store(0xb, LDN_)
                        And(POWC, 0x40, Local1)
                    }
                    Else {
                        Store(0x5, LDN_)
                        And(POWC, 0x20, Local1)
                    }
                    If(LEqual(Local1, 0x0)) {
                        EXFG
                        Return(0xf)
                    }
                    Else {
                        If(LOr(IOAH, IOAL)) {
                            EXFG
                            Return(0xd)
                        }
                        Else {
                            EXFG
                            Return(0x0)
                        }
                    }
                }
                Method(_DIS) {
                    ENFG
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        Store(0xb, LDN_)
                        Store(0x40, Local1)
                    }
                    Else {
                        Store(0x5, LDN_)
                        Store(0x20, Local1)
                    }
                    Store(0x0, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Or(POWC, Local1, POWC)
                    }
                    EXFG
                }
                Method(_CRS) {
                    Name(BUF2, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, =
0x0, 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF2, 0x2, IOLO)
                    CreateByteField(BUF2, 0x3, IOHI)
                    CreateByteField(BUF2, 0x4, IORL)
                    CreateByteField(BUF2, 0x5, IORH)
                    CreateByteField(BUF2, 0x9, IRQL)
                    ENFG
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        Store(0xb, LDN_)
                    }
                    Else {
                        Store(0x5, LDN_)
                    }
                    Store(IOAL, IOLO)
                    Store(IOAL, IORL)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    Store(One, Local0)
                    ShiftLeft(Local0, INTR, IRQL)
                    EXFG
                    Return(BUF2)
                }
                Name(_PRS, Buffer(0x33) {0x30, 0x47, 0x1, 0xf8, 0x3, 0xf8, =
0x3, 0x0, 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0,=
 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x2=
2, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x22, 0xb8, =
0x0, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x9, IRQL)
                    ENFG
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        Store(0xb, LDN_)
                        Store(0xbf, Local1)
                    }
                    Else {
                        Store(0x5, LDN_)
                        Store(0xdf, Local1)
                    }
                    And(POWC, Local1, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    FindSetRightBit(IRQL, Local0)
                    Subtract(Local0, 0x1, INTR)
                    EXFG
                }
            }
            Device(IRDC) {
                Name(_HID, 0x1005d041)
                Name(_UID, 0x3)
                Method(_STA) {
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        ENFG
                        Store(0x5, LDN_)
                        And(ACTR, 0x81, Local0)
                        If(LEqual(Local0, 0x1)) {
                            And(POWC, 0x20, Local1)
                            If(LEqual(Local1, 0x0)) {
                                EXFG
                                Return(0xf)
                            }
                            Else {
                                If(LOr(IOAH, IOAL)) {
                                    EXFG
                                    Return(0xd)
                                }
                                Else {
                                    EXFG
                                    Return(0x0)
                                }
                            }
                        }
                        Else {
                            EXFG
                            Return(0x0)
                        }
                    }
                    Else {
                        Return(0x0)
                    }
                }
                Method(_DIS) {
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        ENFG
                        Store(0x5, LDN_)
                        And(ACTR, 0x80, Local0)
                        If(LEqual(Local0, 0x0)) {
                            Or(POWC, 0x20, POWC)
                        }
                        EXFG
                    }
                }
                Method(_CRS) {
                    Name(BUF3, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, =
0x0, 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF3, 0x2, IOLO)
                    CreateByteField(BUF3, 0x3, IOHI)
                    CreateByteField(BUF3, 0x4, IORL)
                    CreateByteField(BUF3, 0x5, IORH)
                    CreateByteField(BUF3, 0x9, IRQL)
                    CreateByteField(BUF3, 0xa, IRQH)
                    ENFG
                    Store(0x5, LDN_)
                    Store(IOAL, IOLO)
                    Store(IOAL, IORL)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    If(LLess(INTR, 0x8)) {
                        Store(One, Local0)
                        ShiftLeft(Local0, INTR, IRQL)
                        Store(0x0, IRQH)
                    }
                    Else {
                        Subtract(INTR, 0x8, Local1)
                        Store(One, Local0)
                        ShiftLeft(Local0, Local1, IRQH)
                        Store(0x0, IRQL)
                    }
                    EXFG
                    Return(BUF3)
                }
                Name(_PRS, Buffer(0x33) {0x30, 0x47, 0x1, 0xf8, 0x3, 0xf8, =
0x3, 0x0, 0x8, 0x22, 0xb8, 0xc, 0x30, 0x47, 0x1, 0xf8, 0x2, 0xf8, 0x2, 0x0,=
 0x8, 0x22, 0xb8, 0xc, 0x30, 0x47, 0x1, 0xe8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x2=
2, 0xb8, 0xc, 0x30, 0x47, 0x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x22, 0xb8, =
0xc, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x9, IRQL)
                    CreateByteField(Arg0, 0xa, IRQH)
                    ENFG
                    Store(0x5, LDN_)
                    And(POWC, 0xdf, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    If(IRQL) {
                        FindSetRightBit(IRQL, Local0)
                        Subtract(Local0, 0x1, INTR)
                    }
                    Else {
                        FindSetRightBit(IRQH, Local0)
                        Add(Local0, 0x7, INTR)
                    }
                    EXFG
                }
            }
            Device(FIRA) {
                Name(_HID, 0x23518905)
                Name(_CID, 0x1005d041)
                Method(_STA) {
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        And(REV2, 0xe1, Local0)
                        If(LEqual(Local0, 0xe)) {
                            ENFG
                            Store(0x5, LDN_)
                            And(ACTR, 0x81, Local0)
                            If(LEqual(Local0, 0x81)) {
                                And(POWC, 0x20, Local1)
                                If(LEqual(Local1, 0x0)) {
                                    EXFG
                                    Return(0xf)
                                }
                                Else {
                                    If(LOr(IOAH, IOAL)) {
                                        EXFG
                                        Return(0xd)
                                    }
                                    Else {
                                        EXFG
                                        Return(0x0)
                                    }
                                }
                            }
                            Else {
                                EXFG
                                Return(0x0)
                            }
                        }
                        Else {
                            Return(0x0)
                        }
                    }
                    Else {
                        Return(0x0)
                    }
                }
                Method(_DIS) {
                    And(REV1, 0xf0, Local0)
                    If(LEqual(Local0, 0xc0)) {
                        And(REV2, 0xe1, Local0)
                        If(LEqual(Local0, 0xe)) {
                            ENFG
                            Store(0x5, LDN_)
                            And(ACTR, 0x80, Local0)
                            If(LEqual(Local0, 0x80)) {
                                Or(POWC, 0x20, POWC)
                            }
                            EXFG
                        }
                    }
                }
                Method(_CRS) {
                    Name(BUF4, Buffer(0x10) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0,=
 0x0, 0x8, 0x22, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF4, 0x2, IOLO)
                    CreateByteField(BUF4, 0x3, IOHI)
                    CreateByteField(BUF4, 0x4, IORL)
                    CreateByteField(BUF4, 0x5, IORH)
                    CreateByteField(BUF4, 0x9, IRQL)
                    CreateByteField(BUF4, 0xa, IRQH)
                    CreateByteField(BUF4, 0xc, DMAC)
                    ENFG
                    Store(0x5, LDN_)
                    Store(IOAL, IOLO)
                    Store(IOAH, IOHI)
                    Store(IOAL, IORL)
                    Store(IOAH, IORH)
                    If(LLess(INTR, 0x8)) {
                        Store(One, Local0)
                        ShiftLeft(Local0, INTR, IRQL)
                        Store(0x0, IRQH)
                    }
                    Else {
                        Subtract(INTR, 0x8, Local1)
                        Store(One, Local0)
                        ShiftLeft(Local0, Local1, IRQH)
                        Store(0x0, IRQL)
                    }
                    Store(One, Local0)
                    ShiftLeft(Local0, DMCH, DMAC)
                    EXFG
                    Return(BUF4)
                }
                Name(_PRS, Buffer(0x3f) {0x30, 0x47, 0x1, 0xf8, 0x3, 0xf8, =
0x3, 0x0, 0x8, 0x22, 0xb8, 0xc, 0x2a, 0xa, 0x0, 0x30, 0x47, 0x1, 0xf8, 0x2,=
 0xf8, 0x2, 0x0, 0x8, 0x22, 0xb8, 0xc, 0x2a, 0xa, 0x0, 0x30, 0x47, 0x1, 0xe=
8, 0x3, 0xe8, 0x3, 0x0, 0x8, 0x22, 0xb8, 0xc, 0x2a, 0xa, 0x0, 0x30, 0x47, 0=
x1, 0xe8, 0x2, 0xe8, 0x2, 0x0, 0x8, 0x22, 0xb8, 0xc, 0x2a, 0xa, 0x0, 0x38, =
0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x4, IORL)
                    CreateByteField(Arg0, 0x5, IORH)
                    CreateByteField(Arg0, 0x9, IRQL)
                    CreateByteField(Arg0, 0xa, IRQH)
                    CreateByteField(Arg0, 0xc, DMAC)
                    ENFG
                    Store(0x5, LDN_)
                    And(POWC, 0xdf, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    If(IRQL) {
                        FindSetRightBit(IRQL, Local0)
                        Subtract(Local0, 0x1, INTR)
                    }
                    Else {
                        FindSetRightBit(IRQH, Local0)
                        Add(Local0, 0x7, INTR)
                    }
                    FindSetRightBit(DMAC, Local1)
                    Subtract(Local1, 0x1, DMCH)
                    EXFG
                }
            }
            Device(LPT_) {
                Name(_HID, 0x0004d041)
                Method(_STA) {
                    ENFG
                    Store(0x3, LDN_)
                    And(OPT1, 0x2, Local0)
                    If(LEqual(Local0, 0x0)) {
                        And(POWC, 0x8, Local1)
                        If(LEqual(Local1, 0x0)) {
                            EXFG
                            Return(0xf)
                        }
                        Else {
                            If(LOr(IOAH, IOAL)) {
                                EXFG
                                Return(0xd)
                            }
                            Else {
                                EXFG
                                Return(0x0)
                            }
                        }
                    }
                    Else {
                        EXFG
                        Return(0x0)
                    }
                }
                Method(_DIS) {
                    ENFG
                    Store(0x3, LDN_)
                    And(OPT1, 0x2, Local0)
                    If(LEqual(Local0, 0x0)) {
                        Or(POWC, 0x8, POWC)
                    }
                    EXFG
                }
                Method(_CRS) {
                    Name(BUF5, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, =
0x0, 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF5, 0x2, IOLO)
                    CreateByteField(BUF5, 0x3, IOHI)
                    CreateByteField(BUF5, 0x4, IORL)
                    CreateByteField(BUF5, 0x5, IORH)
                    CreateByteField(BUF5, 0x7, IOLN)
                    CreateByteField(BUF5, 0x9, IRQL)
                    ENFG
                    Store(0x3, LDN_)
                    Store(IOAL, IOLO)
                    Store(IOAL, IORL)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    If(LEqual(IOLO, 0xbc)) {
                        Store(0x4, IOLN)
                    }
                    Else {
                        Store(0x8, IOLN)
                    }
                    Store(One, Local0)
                    ShiftLeft(Local0, INTR, IRQL)
                    EXFG
                    Return(BUF5)
                }
                Name(_PRS, Buffer(0x27) {0x30, 0x47, 0x1, 0x78, 0x3, 0x78, =
0x3, 0x0, 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0x78, 0x2, 0x78, 0x2, 0x0,=
 0x8, 0x22, 0xb8, 0x0, 0x30, 0x47, 0x1, 0xbc, 0x3, 0xbc, 0x3, 0x0, 0x4, 0x2=
2, 0xb8, 0x0, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x4, IORL)
                    CreateByteField(Arg0, 0x5, IORH)
                    CreateByteField(Arg0, 0x9, IRQL)
                    ENFG
                    Store(0x3, LDN_)
                    And(POWC, 0xf7, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    FindSetLeftBit(IRQL, Local0)
                    Subtract(Local0, 0x1, INTR)
                    EXFG
                }
            }
            Device(ECP_) {
                Name(_HID, 0x0104d041)
                Method(_STA) {
                    ENFG
                    Store(0x3, LDN_)
                    And(OPT1, 0x2, Local0)
                    If(LEqual(Local0, 0x2)) {
                        And(POWC, 0x8, Local1)
                        If(LEqual(Local1, 0x0)) {
                            EXFG
                            Return(0xf)
                        }
                        Else {
                            If(LOr(IOAH, IOAL)) {
                                EXFG
                                Return(0xd)
                            }
                            Else {
                                EXFG
                                Return(0x0)
                            }
                        }
                    }
                    Else {
                        EXFG
                        Return(0x0)
                    }
                }
                Method(_DIS) {
                    ENFG
                    Store(0x3, LDN_)
                    And(OPT1, 0x2, Local0)
                    If(LEqual(Local0, 0x2)) {
                        Or(POWC, 0x8, POWC)
                    }
                    EXFG
                }
                Method(_CRS) {
                    Name(BUF6, Buffer(0x18) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0,=
 0x0, 0x0, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x2a, 0=
x0, 0x0, 0x79, 0x0 })
                    CreateByteField(BUF6, 0x2, IOLO)
                    CreateByteField(BUF6, 0x3, IOHI)
                    CreateByteField(BUF6, 0x4, IORL)
                    CreateByteField(BUF6, 0x5, IORH)
                    CreateByteField(BUF6, 0x7, IOLN)
                    CreateByteField(BUF6, 0xa, IOEL)
                    CreateByteField(BUF6, 0xb, IOEH)
                    CreateByteField(BUF6, 0xc, IOML)
                    CreateByteField(BUF6, 0xd, IOMH)
                    CreateByteField(BUF6, 0xf, IOHN)
                    CreateByteField(BUF6, 0x11, IRQL)
                    CreateByteField(BUF6, 0x14, DMAC)
                    ENFG
                    Store(0x3, LDN_)
                    Store(IOAL, IOLO)
                    Store(IOAL, IORL)
                    Store(IOAL, IOEL)
                    Store(IOAL, IOML)
                    Store(IOAH, IOHI)
                    Store(IOAH, IORH)
                    Store(IOAH, Local3)
                    Or(Local3, 0x4, Local3)
                    Store(Local3, IOEH)
                    Store(Local3, IOMH)
                    If(LEqual(IOLO, 0xbc)) {
                        Store(0x4, IOLN)
                        Store(0x4, IOHN)
                    }
                    Else {
                        Store(0x8, IOLN)
                        Store(0x4, IOHN)
                    }
                    Store(One, Local0)
                    ShiftLeft(Local0, INTR, IRQL)
                    Store(One, Local0)
                    ShiftLeft(Local0, DMCH, DMAC)
                    EXFG
                    Return(BUF6)
                }
                Name(_PRS, Buffer(0x48) {0x30, 0x47, 0x1, 0x78, 0x3, 0x78, =
0x3, 0x0, 0x8, 0x47, 0x1, 0x78, 0x7, 0x78, 0x7, 0x0, 0x4, 0x22, 0xb8, 0x0, =
0x2a, 0xa, 0x0, 0x30, 0x47, 0x1, 0x78, 0x2, 0x78, 0x2, 0x0, 0x8, 0x47, 0x1,=
 0x78, 0x6, 0x78, 0x6, 0x0, 0x4, 0x22, 0xb8, 0x0, 0x2a, 0xa, 0x0, 0x30, 0x4=
7, 0x1, 0xbc, 0x3, 0xbc, 0x3, 0x0, 0x4, 0x47, 0x1, 0xbc, 0x7, 0xbc, 0x7, 0x=
0, 0x4, 0x22, 0xb8, 0x0, 0x2a, 0xa, 0x0, 0x38, 0x79, 0x0 })
                Method(_SRS, 1) {
                    CreateByteField(Arg0, 0x2, IOLO)
                    CreateByteField(Arg0, 0x3, IOHI)
                    CreateByteField(Arg0, 0x11, IRQL)
                    CreateByteField(Arg0, 0x14, DMAC)
                    ENFG
                    Store(0x3, LDN_)
                    And(POWC, 0xf7, POWC)
                    Store(IOLO, IOAL)
                    Store(IOHI, IOAH)
                    FindSetLeftBit(IRQL, Local0)
                    Subtract(Local0, 0x1, INTR)
                    FindSetLeftBit(DMAC, Local1)
                    Subtract(Local1, 0x1, DMCH)
                    EXFG
                }
            }
            Device(PS2M) {
                Name(_HID, 0x130fd041)
                Method(_STA) {
                    And(FLG0, 0x4, Local0)
                    If(LEqual(Local0, 0x4)) {
                        Return(0xf)
                    }
                    Else {
                        Return(0x0)
                    }
                }
                Name(_CRS, Buffer(0x5) {0x22, 0x0, 0x10, 0x79, 0x0 })
            }
            Device(PS2K) {
                Name(_HID, 0x0303d041)
                Method(_STA) {
                    If(LEqual(KBDI, 0x1)) {
                        Return(0x0)
                    }
                    Else {
                        Return(0xf)
                    }
                }
                Name(_CRS, Buffer(0x15) {0x47, 0x1, 0x60, 0x0, 0x60, 0x0, 0=
x1, 0x1, 0x47, 0x1, 0x64, 0x0, 0x64, 0x0, 0x1, 0x1, 0x22, 0x2, 0x0, 0x79, 0=
x0 })
            }
        }
    }
}

--MGYHOYXEY6WxJCY8--
