Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Nov 2000 04:20:19 -0600
From:      "Michael C . Wu" <keichii@iteration.net>
To:        Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org>
Cc:        n_hibma@qubesoft.com, mobile@freebsd.org
Subject:   Re: usb0 not resuming and APM/ACPI weirdness
Message-ID:  <20001119042019.A19018@peorth.iteration.net>
In-Reply-To: <20001119105525E.iwasaki@jp.FreeBSD.org>; from iwasaki@jp.FreeBSD.org on Sun, Nov 19, 2000 at 10:55:25AM %2B0900
References:  <20001028051133.A409@peorth.iteration.net> <Pine.BSF.4.20.0011181740430.68638-100000@henny.webweaving.org> <20001119105525E.iwasaki@jp.FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

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

On Sun, Nov 19, 2000 at 10:55:25AM +0900, Mitsuru IWASAKI scribbled:
| > > The old "usb0: host controller halted" problem has returned
| > > to my laptop after resume for suspend-to-disk on the latest current
| > > for some time.  After resume, usb0 floods my /var/log/messages
| > > with thousands of the same messages.
| >
| > This is most probably a problem related to ACPI, it suspending the USB
| > host controller when suspending and the USB driver getting it wrong when
| > unsuspending. I have no idea how to fix this.
|
| Yes, most of modern laptops has power management related methods on
| various devices (including USB host controller) in ACPI Machine
| Language format.  And these methods should to be executed by AML
| interpreter in order to maintain (or re-initialize?) the devices when
| the machine is going to sleep/wakeup.
|
| I guess that the problem is
|  - When suspend-to-{RAM|disk} by APM, any AML methods won't be executed.
|  - Currently, our ACPI code supports limited sleep state only
|    (suspend/hibernation in APM haven't supported yet).
|
| so I think that implement sleep/wakeup code in device driver which
| equivalent to AML methods would be a short-term solution...
| # acpidump(8) and amldb(8) maybe help us.
| Of course I know that ACPI support improvement is better solution.
|
| BTW Michael, what laptop are you using?  and could you send me ACPI
| data?
| # please see acpidump(8)

Hi,

My laptop is a Sony VAIOZ505JS Superslim

I booted a kernel with
device          acpica
options         ACPI_DEBUG
# ACPI Experimental Driver
device         acpi

And enabled ACPI in the BIOS.

The ACPI kernel hangs on acpi probe, would you like a ddb dump?

Attached is acpidump output

Thanks,


--
+------------------------------------------------------------------+
| keichii@peorth.iteration.net         | keichii@bsdconspiracy.net |
| http://peorth.iteration.net/~keichii | Yes, BSD is a conspiracy. |
+------------------------------------------------------------------+

--2oS5YaxWCcQjTEyO
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="acpidump.txt"
Content-Transfer-Encoding: quoted-printable

RSD PTR: Checksum=3D2, OEMID=3DSONY, RsdtAddress=3D0x0fffc088
RSDT: Lenth=3D44, Revision=3D1, Checksum=3D52,
	OEMID=3DSONY, OEM Table ID=3DZ1, OEM Revision=3D0x20000511,
	Creator ID=3DPTL, Creator Revision=3D0x0
	Entries=3D{ 0x0ffff765, 0x0ffff7d9 }
	DSDT=3D0xfffc0b4
	INT_MODEL=3DPIC
	SCI_INT=3D9
	SMI_CMD=3D0xb2, ACPI_ENABLE=3D0xf0, ACPI_DISABLE=3D0xf1, S4BIOS_REQ=3D0xf2
	PM1a_EVT_BLK=3D0x8000-0x8003
	PM1a_CNT_BLK=3D0x8042-0x8043
	PM2_CNT_BLK=3D0x22-0x22
	PM2_TMR_BLK=3D0x8008-0x800b
	PM2_GPE0_BLK=3D0x800c-0x800f
	P_LVL2_LAT=3D10ms, P_LVL3_LAT=3D4097ms
	FLUSH_SIZE=3D0, FLUSH_STRIDE=3D0
	DUTY_OFFSET=3D1, DUTY_WIDTH=3D3
	DAY_ALRM=3D13, MON_ALRM=3D0, CENTURY=3D50
	Flags=3D{WBINVD,PWR_BUTTON,SLP_BUTTON,RTC_S4}
DSDT: Lenth=3D14001, Revision=3D1, Checksum=3D62,
	OEMID=3DSONY, OEM Table ID=3DZ1, OEM Revision=3D0x20000511,
	Creator ID=3DMSFT, Creator Revision=3D0x100000c
Scope(_PR_) {
    Processor(CPU0, 0, 0x8010, 0x6) {
    }
}
Name(_S0_, Package(0x4) {
    0x5,
    0x5,
    0x0,
    0x0,
})
Name(_S1_, Package(0x4) {
    0x4,
    0x4,
    0x0,
    0x0,
})
Name(_S3_, Package(0x4) {
    0x1,
    0x1,
    0x0,
    0x0,
})
Name(_S4_, Package(0x4) {
    0x0,
    0x0,
    0x0,
    0x0,
})
Name(_S5_, Package(0x4) {
    0x0,
    0x0,
    0x0,
    0x0,
})
OperationRegion(GPO_, SystemIO, 0x8034, 0x4)
Field(GPO_, DWordAcc, NoLock, Preserve) {
    GO00,	1,
    GO01,	1,
    GO02,	1,
    GO03,	1,
    GO04,	1,
    GO05,	1,
    GO06,	1,
    GO07,	1,
    GO08,	1,
    GO09,	1,
    GO10,	1,
    GO11,	1,
    GO12,	1,
    GO13,	1,
    GO14,	1,
    GO15,	1,
    GO16,	1,
    GO17,	1,
    GO18,	1,
    GO19,	1,
    GO20,	1,
    GO21,	1,
    GO22,	1,
    GO23,	1,
    GO24,	1,
    GO25,	1,
    GO26,	1,
    GO27,	1,
    GO28,	1,
    GO29,	1,
    GO30,	1,
    GO31,	1
}
OperationRegion(GLBL, SystemIO, 0x8028, 0x4)
Field(GLBL, DWordAcc, NoLock, Preserve) {
    Offset(0x3),
    ,	1,
    LPOL,	1
}
OperationRegion(SMI0, SystemMemory, 0x0ffffba7, 0x00000415)
Field(SMI0, AnyAcc, NoLock, Preserve) {
    BCMD,	8,
    DID_,	32,
    INFO,	4096
}
Field(SMI0, AnyAcc, NoLock, Preserve) {
    Offset(0x5),
    INFB,	8
}
Field(SMI0, AnyAcc, NoLock, Preserve) {
    Offset(0x5),
    INFD,	32
}
Field(SMI0, AnyAcc, NoLock, Preserve) {
    Offset(0x5),
    SXBF,	8320
}
OperationRegion(SMI1, SystemIO, 0x00008040, 0x00000002)
Field(SMI1, AnyAcc, NoLock, Preserve) {
    SMIC,	8
}
Mutex(MPHS, 0)
Method(PHS0, 1) {
    Store(Arg0, BCMD)
    Store(Zero, SMIC)
    While(LEqual(BCMD, Arg0)) {
    }
    Store(0x0, BCMD)
}
Method(PHS_, 1, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(0x0, DID_)
    PHS0
    Arg0
    Store(INFD, Local0)
    Release(MPHS)
    Return(Local0)
}
Method(PHSD, 2, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(0x0, DID_)
    Store(Arg1, INFD)
    PHS0
    Arg0
    Store(INFD, Local0)
    Release(MPHS)
    Return(Local0)
}
Method(PHSB, 2, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(0x0, DID_)
    Store(Arg1, INFB)
    PHS0
    Arg0
    Store(INFB, Local0)
    Release(MPHS)
    Return(Local0)
}
Method(PSCS, 1, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(Arg0, DID_)
    PHS0
    0x0
    Store(INFO, Local0)
    Release(MPHS)
    Return(Local0)
}
Method(PSSS, 2, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(Arg0, DID_)
    Store(Arg1, INFO)
    PHS0
    0x1
    Release(MPHS)
}
Method(PSPS, 1, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(Arg0, DID_)
    PHS0
    0x2
    Store(INFO, Local0)
    Release(MPHS)
    Return(Local0)
}
Method(PSDI, 1, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(Arg0, DID_)
    PHS0
    0x3
    Release(MPHS)
}
Method(PSST, 1, Serialized) {
    Acquire(MPHS, 0xffff)
    Store(Arg0, DID_)
    PHS0
    0x4
    Store(INFB, Local0)
    Release(MPHS)
    Return(Local0)
}
Scope(\_GPE) {
    Method(_L0B) {
        Notify(\_SB_.PWRB, 0x2)
    }
    Method(_L0A) {
        Notify(\_SB_.PCI0, 0x2)
    }
    Method(_L08) {
        Notify(\_SB_.PCI0.USB0, 0x2)
    }
}
Method(MIN_, 2) {
    If(LLess(Arg0, Arg1)) {
        Return(Arg0)
    }
    Else {
        Return(Arg1)
    }
}
Method(SLEN, 1) {
    Return(Sizeof(Arg0))
}
Method(S2BF, 1, Serialized) {
    Add(SLEN, Arg0, One)
    Local0
    Name(BUFF, Buffer(Local0) { })
    Store(Arg0, BUFF)
    Return(BUFF)
}
Method(SCMP, 2) {
    Store(S2BF, Arg0)
    Local0
    Store(S2BF, Arg1)
    Local1
    Store(Zero, Local4)
    Store(SLEN, Arg0)
    Local5
    Store(SLEN, Arg1)
    Local6
    Store(MIN_, Local5)
    Local6
    Local7
    While(LLess(Local4, Local7)) {
        Store(DerefOf(Index(Local0, Local4, )), Local2)
        Store(DerefOf(Index(Local1, Local4, )), Local3)
        If(LGreater(Local2, Local3)) {
            Return(One)
        }
        Else {
            If(LLess(Local2, Local3)) {
                Return(Ones)
            }
        }
        Increment(Local4)
    }
    If(LLess(Local4, Local5)) {
        Return(One)
    }
    Else {
        If(LLess(Local4, Local6)) {
            Return(Ones)
        }
        Else {
            Return(Zero)
        }
    }
}
Method(_PTS, 1) {
    If(LNot(LLess(Arg0, 0x2))) {
        Store(0x1, \_SB_.PCI0.CRST)
    }
    Else {
        Store(0x0, \_SB_.PCI0.CRST)
    }
    If(LEqual(Arg0, 0x4)) {
        Store(\_SB_.PCI0.ISA_.SPIC._CRS, \_SB_.PCI0.ISA_.SPIC.SSRC)
        If(LEqual(SCMP, \_OS_)) {
            "Microsoft Windows NT"
            Zero
            PHS_
            0xe3
            PHS_
            0xe5
        }
        Else {
            If(LNot(LEqual(SCMP, \_OS_))) {
                "Microsoft Windows"
                Zero
                PHS_
                0xe3
                PHS_
                0xe5
            }
        }
    }
    Return(0x0)
}
Scope(_SB_) {
    Device(PWRB) {
        Name(_HID, 0x0c0cd041)
        Name(_PRW, Package(0x2) {
            0xb,
            0x4,
        })
        Method(_STA) {
            Return(0xf)
        }
    }
    Device(PCI0) {
        Name(_HID, 0x030ad041)
        OperationRegion(BXRS, PCI_Config, 0x7a, 0x1)
        Field(BXRS, ByteAcc, NoLock, Preserve) {
            CRST,	1,
            Offset(0x1)
        }
        Device(H2PB) {
            Name(_ADR, 0x0)
            OperationRegion(NRBR, PCI_Config, 0x0, 0x0100)
            Field(NRBR, DWordAcc, NoLock, Preserve) {
                Offset(0x51),
                ,	1,
                AAGE,	1,
                Offset(0xb0),
                ,	7,
                GTEN,	1
            }
        }
        Device(VID0) {
            Name(_ADR, 0x00010000)
            Name(_PSC, 0x0)
            Method(_STA) {
                Return(0xf)
            }
            Method(_PS0) {
                Store(Zero, \_SB_.PCI0.H2PB.AAGE)
                Store(Zero, \_SB_.PCI0.H2PB.GTEN)
                Store(0x0, _PSC)
            }
            Method(_PS3) {
                Store(0x3, _PSC)
            }
            Name(VIDS, Package(0x3) {
                0x0100,
                0x00010110,
                0x0200,
            })
            Method(_DOD) {
                Return(VIDS)
            }
            Device(LCD_) {
                Name(_ADR, 0x0110)
                Name(ACTV, 0x1)
                Method(_DCS) {
                    If(ACTV) {
                        Return(0x1f)
                    }
                    Else {
                        Return(0x1b)
                    }
                }
                Name(_DGS, 0x1)
                Name(IDSS, 0x0)
                Method(_DSS, 1) {
                    Store(Arg0, IDSS)
                    If(And(Arg0, 0x80000000, )) {
                        If(LNot(And(Arg0, 0x40000000, ))) {
                            ^SET_
                        }
                        ^NEXT
                    }
                }
            }
            Device(TV__) {
                Name(_ADR, 0x0200)
                Name(ACTV, 0x1)
                Method(_DCS) {
                    If(ACTV) {
                        Return(0x1f)
                    }
                    Else {
                        Return(0x1b)
                    }
                }
                Name(_DGS, 0x1)
                Name(IDSS, 0x0)
                Method(_DSS, 1) {
                    Store(Arg0, IDSS)
                    If(And(Arg0, 0x80000000, )) {
                        If(LNot(And(Arg0, 0x40000000, ))) {
                            ^SET_
                        }
                        ^NEXT
                    }
                }
            }
            Method(SET_) {
                And(TV__.IDSS, 0x1, TV__.ACTV)
                And(LCD_.IDSS, 0x1, LCD_.ACTV)
                If(TV__.ACTV) {
                    Store(0x4, Local0)
                }
                If(TV__.ACTV) {
                    Or(Local0, 0x1, Local0)
                }
                PHSB
                0xe4
                Local0
            }
            Method(NEXT) {
                If(LAnd(LCD_._DGS, LNot(TV__._DGS))) {
                    Store(One, LCD_._DGS)
                    Store(One, TV__._DGS)
                }
                Else {
                    Store(One, LCD_._DGS)
                    Store(Zero, TV__._DGS)
                }
            }
        }
        Name(_ADR, 0x0)
        Name(_PRT, Package(0xb) {
            Package(0x4) {
                0x0001ffff,
                0x0,
                LNKA,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x1,
                LNKB,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x2,
                LNKC,
                0x0,
            },
            Package(0x4) {
                0x0001ffff,
                0x3,
                LNKD,
                0x0,
            },
            Package(0x4) {
                0x0007ffff,
                0x3,
                LNKD,
                0x0,
            },
            Package(0x4) {
                0x0008ffff,
                0x0,
                LNKD,
                0x0,
            },
            Package(0x4) {
                0x0009ffff,
                0x0,
                LNKC,
                0x0,
            },
            Package(0x4) {
                0x000affff,
                0x0,
                LNKB,
                0x0,
            },
            Package(0x4) {
                0x000bffff,
                0x0,
                LNKA,
                0x0,
            },
            Package(0x4) {
                0x000cffff,
                0x0,
                LNKB,
                0x0,
            },
            Package(0x4) {
                0x000dffff,
                0x0,
                LNKB,
                0x0,
            },
        })
        OperationRegion(REGS, PCI_Config, 0x40, 0xc0)
        Field(REGS, DWordAcc, NoLock, Preserve) {
            Offset(0x19),
            PAM0,	8,
            PAM1,	8,
            PAM2,	8,
            PAM3,	8,
            PAM4,	8,
            PAM5,	8,
            PAM6,	8,
            DRB0,	8,
            DRB1,	8,
            DRB2,	8,
            DRB3,	8,
            DRB4,	8,
            DRB5,	8,
            DRB6,	8,
            DRB7,	8,
            ,	6,
            HEN_,	2,
            Offset(0x33),
            T_EN,	1,
            T_SZ,	2
        }
        Name(RSRC, Buffer(0x01d2) {0x88, 0xe, 0x0, 0x2, 0xc, 0x0, 0x0, 0x0,=
 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0=
x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0xff, 0xff, 0xb, 0x0, 0x0, 0x0,=
 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x=
0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0xff, 0x3f, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, =
0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x=
0, 0x0, 0x40, 0xc, 0x0, 0xff, 0x7f, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40=
, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0=
x80, 0xc, 0x0, 0xff, 0xbf, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x=
0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xc,=
 0x0, 0xff, 0xff, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0=
x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0x0, 0xff=
, 0x3f, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18,=
 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0xd, 0x0, 0xff, 0x7f, 0=
xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0=
, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xd, 0x0, 0xff, 0xbf, 0xd, 0x0, =
0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x=
3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xd, 0x0, 0xff, 0xff, 0xd, 0x0, 0x0, 0x0,=
 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0=
x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0xff, 0x3f, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0,=
 0x0, 0x40, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0=
x0, 0x0, 0x40, 0xe, 0x0, 0xff, 0x7f, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4=
0, 0x0, 0x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, =
0x80, 0xe, 0x0, 0xff, 0xbf, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0=
x0, 0x0, 0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xe=
, 0x0, 0xff, 0xff, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, =
0x87, 0x18, 0x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0=
, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x87, 0x18, 0=
x0, 0x0, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0=
x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x47, 0x1, 0xf8, 0xc, 0xf8=
, 0xc, 0x1, 0x8, 0x88, 0xe, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x0, 0x0, 0xf7, 0=
xc, 0x0, 0x0, 0xf8, 0xc, 0x0, 0x88, 0xe, 0x0, 0x1, 0xc, 0x3, 0x0, 0x0, 0x0,=
 0xd, 0xff, 0xff, 0x0, 0x0, 0x0, 0xf3, 0x0, 0x79, 0x0 })
        Method(_CRS, 0, Serialized) {
            Store(Zero, Local1)
            If(T_EN) {
                ShiftLeft(0x1, Add(T_SZ, 0x11, ), Local1)
            }
            CreateDWordField(RSRC, 0x017a, BTMN)
            CreateDWordField(RSRC, 0x017e, BTMX)
            CreateDWordField(RSRC, 0x0186, BTLN)
            Multiply(DRB7, 0x00800000, Local0)
            If(T_EN) {
                Subtract(Local0, Local1, Local2)
                Store(Local2, BTMN)
                Subtract(Add(Local0, 0x10000000, ), BTMN, BTLN)
            }
            Else {
                Store(Local0, BTMN)
                Subtract(0xffe00000, Local0, BTLN)
                Subtract(Add(BTMN, BTLN, ), 0x1, BTMX)
            }
            CreateDWordField(RSRC, 0x0195, ATMN)
            CreateDWordField(RSRC, 0x0199, ATMX)
            CreateDWordField(RSRC, 0x01a1, ATLN)
            If(T_EN) {
                Add(Add(BTMN, BTLN, ), Local1, ATMN)
                Subtract(0xffe00000, ATMN, ATLN)
                Subtract(Add(ATMN, ATLN, ), 0x1, ATMX)
            }
            Else {
                Store(Zero, ATLN)
            }
            CreateBitField(RSRC, 0x0188, C0RW)
            CreateDWordField(RSRC, 0x36, C0MN)
            CreateDWordField(RSRC, 0x3a, C0MX)
            CreateDWordField(RSRC, 0x42, C0LN)
            Store(One, C0RW)
            If(LEqual(And(PAM1, 0x3, ), 0x1)) {
                Store(Zero, C0RW)
            }
            Store(Zero, C0LN)
            If(LNot(And(PAM1, 0x3, ))) {
                Store(0x4000, C0LN)
            }
            CreateBitField(RSRC, 0x0260, C4RW)
            CreateDWordField(RSRC, 0x51, C4MN)
            CreateDWordField(RSRC, 0x55, C4MX)
            CreateDWordField(RSRC, 0x5d, C4LN)
            Store(One, C4RW)
            If(LEqual(And(PAM1, 0x30, ), 0x10)) {
                Store(Zero, C4RW)
            }
            Store(Zero, C4LN)
            If(LNot(And(PAM1, 0x30, ))) {
                Store(0x4000, C4LN)
            }
            CreateBitField(RSRC, 0x0338, C8RW)
            CreateDWordField(RSRC, 0x6c, C8MN)
            CreateDWordField(RSRC, 0x70, C8MX)
            CreateDWordField(RSRC, 0x78, C8LN)
            Store(One, C8RW)
            If(LEqual(And(PAM2, 0x3, ), 0x1)) {
                Store(Zero, C8RW)
            }
            Store(Zero, C8LN)
            If(LNot(And(PAM2, 0x3, ))) {
                Store(0x4000, C8LN)
            }
            CreateBitField(RSRC, 0x0410, CCRW)
            CreateDWordField(RSRC, 0x87, CCMN)
            CreateDWordField(RSRC, 0x8b, CCMX)
            CreateDWordField(RSRC, 0x93, CCLN)
            Store(One, CCRW)
            If(LEqual(And(PAM2, 0x30, ), 0x10)) {
                Store(Zero, CCRW)
            }
            Store(Zero, CCLN)
            If(LNot(And(PAM2, 0x30, ))) {
                Store(0x4000, CCLN)
            }
            CreateBitField(RSRC, 0x04e8, D0RW)
            CreateDWordField(RSRC, 0xa2, D0MN)
            CreateDWordField(RSRC, 0xa6, D0MX)
            CreateDWordField(RSRC, 0xae, D0LN)
            Store(One, D0RW)
            If(LEqual(And(PAM3, 0x3, ), 0x1)) {
                Store(Zero, D0RW)
            }
            Store(Zero, D0LN)
            If(LNot(And(PAM3, 0x3, ))) {
                Store(0x4000, D0LN)
            }
            CreateBitField(RSRC, 0x05c0, D4RW)
            CreateDWordField(RSRC, 0xbd, D4MN)
            CreateDWordField(RSRC, 0xc1, D4MX)
            CreateDWordField(RSRC, 0xc9, D4LN)
            Store(One, D4RW)
            If(LEqual(And(PAM3, 0x30, ), 0x10)) {
                Store(Zero, D4RW)
            }
            Store(Zero, D4LN)
            If(LNot(And(PAM3, 0x30, ))) {
                Store(0x4000, D4LN)
            }
            CreateBitField(RSRC, 0x0698, D8RW)
            CreateDWordField(RSRC, 0xd8, D8MN)
            CreateDWordField(RSRC, 0xdc, D8MX)
            CreateDWordField(RSRC, 0xe4, D8LN)
            Store(One, D8RW)
            If(LEqual(And(PAM4, 0x3, ), 0x1)) {
                Store(Zero, D8RW)
            }
            Store(Zero, D8LN)
            If(LNot(And(PAM4, 0x3, ))) {
                Store(0x4000, D8LN)
            }
            CreateBitField(RSRC, 0x0770, DCRW)
            CreateDWordField(RSRC, 0xf3, DCMN)
            CreateDWordField(RSRC, 0xf7, DCMX)
            CreateDWordField(RSRC, 0xff, DCLN)
            Store(Zero, DCRW)
            Store(0x4000, DCLN)
            CreateBitField(RSRC, 0x0848, E0RW)
            CreateDWordField(RSRC, 0x010e, E0MN)
            CreateDWordField(RSRC, 0x0112, E0MX)
            CreateDWordField(RSRC, 0x011a, E0LN)
            Store(One, E0RW)
            If(LEqual(And(PAM5, 0x3, ), 0x1)) {
                Store(Zero, E0RW)
            }
            Store(Zero, E0LN)
            If(LNot(And(PAM5, 0x3, ))) {
                Store(0x4000, E0LN)
            }
            CreateBitField(RSRC, 0x0920, E4RW)
            CreateDWordField(RSRC, 0x0129, E4MN)
            CreateDWordField(RSRC, 0x012d, E4MX)
            CreateDWordField(RSRC, 0x0135, E4LN)
            Store(One, E4RW)
            If(LEqual(And(PAM5, 0x30, ), 0x10)) {
                Store(Zero, E4RW)
            }
            Store(Zero, E4LN)
            If(LNot(And(PAM5, 0x30, ))) {
                Store(0x4000, E4LN)
            }
            CreateBitField(RSRC, 0x09f8, E8RW)
            CreateDWordField(RSRC, 0x0144, E8MN)
            CreateDWordField(RSRC, 0x0148, E8MX)
            CreateDWordField(RSRC, 0x0150, E8LN)
            Store(One, E8RW)
            If(LEqual(And(PAM6, 0x3, ), 0x1)) {
                Store(Zero, E8RW)
            }
            Store(Zero, E8LN)
            If(LNot(And(PAM6, 0x3, ))) {
                Store(0x4000, E8LN)
            }
            CreateBitField(RSRC, 0x0ad0, ECRW)
            CreateDWordField(RSRC, 0x015f, ECMN)
            CreateDWordField(RSRC, 0x0163, ECMX)
            CreateDWordField(RSRC, 0x016b, ECLN)
            Store(One, ECRW)
            If(LEqual(And(PAM6, 0x30, ), 0x10)) {
                Store(Zero, ECRW)
            }
            Store(Zero, ECLN)
            If(LNot(And(PAM6, 0x30, ))) {
                Store(0x4000, ECLN)
            }
            Return(RSRC)
        }
        Device(USB0) {
            Name(_ADR, 0x00070002)
            OperationRegion(CFG2, PCI_Config, 0x0, 0x0100)
            Field(CFG2, DWordAcc, NoLock, Preserve) {
                Offset(0x20),
                USBB,	16
            }
            Method(_STA) {
                And(USBB, 0xffe0, Local0)
                If(LEqual(Local0, 0x0)) {
                    Return(0x0)
                }
                Else {
                    Return(0xf)
                }
            }
            Name(_PSC, 0x0)
            Method(_PS0) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    Noop
                }
                Else {
                    If(LEqual(_PSC, 0x3)) {
                        PHS_
                        0xc3
                        Store(0x0, _PSC)
                    }
                }
            }
            Method(_PS3) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    Noop
                }
                Else {
                    If(LEqual(_PSC, 0x0)) {
                        PHS_
                        0xc2
                        Store(0x3, _PSC)
                    }
                }
            }
            Method(_PRW) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    Return(Package(0x2) {
                        0x8,
                        0x1,
                    })
                }
                Else {
                    If(LNot(LEqual(SCMP, \_OS_))) {
                        "Microsoft Windows"
                        Zero
                        Return(Package(0x2) {
                            0x8,
                            0x1,
                        })
                    }
                    Else {
                        Return(Package(0x2) {
                            0x8,
                            0x4,
                        })
                    }
                }
            }
        }
        Device(PWR_) {
            Name(_ADR, 0x00070003)
            OperationRegion(PCI_, PCI_Config, 0x50, 0x28)
            Field(PCI_, DWordAcc, NoLock, Preserve) {
                Offset(0x1),
                ,	4,
                FDCM,	1,
                ,	1,
                U1M_,	1,
                Offset(0x2),
                U2M_,	1,
                ,	1,
                LPTM,	1,
                Offset(0xc),
                MDIE,	1,
                MDIA,	2,
                SBE_,	1,
                GME_,	1,
                SBA_,	2,
                MSSE,	1,
                MSSA,	2,
                Offset(0xf),
                ,	1,
                AUDM,	1,
                ,	2,
                KBCM,	1,
                G12M,	1,
                G13M,	1,
                LPTE,	1,
                G09A,	16,
                G09L,	4,
                ,	1,
                G09M,	1,
                G09E,	1,
                Offset(0x13),
                ,	1,
                LPTA,	2,
                ,	1,
                FDCA,	1,
                FDCE,	1,
                KBCE,	1,
                GMM_,	1,
                G10A,	16,
                G10L,	4,
                ,	1,
                G10M,	1,
                G10E,	1,
                G10C,	1,
                U1A_,	3,
                U1E_,	1,
                U2A_,	3,
                U2E_,	1,
                G12A,	16,
                G12L,	4,
                G12E,	1,
                Offset(0x20),
                G13A,	16,
                G13L,	4,
                G13E,	1
            }
        }
        Device(IDE_) {
            Name(_ADR, 0x00070001)
            OperationRegion(PCI_, PCI_Config, 0x40, 0x10)
            Field(PCI_, DWordAcc, NoLock, Preserve) {
                Offset(0x3),
                ,	7,
                SIDE,	1
            }
            Field(PCI_, DWordAcc, NoLock, Preserve) {
                R40_,	32,
                Offset(0x8),
                R48_,	32
            }
            Device(PRIM) {
                Name(_ADR, 0x0)
                Name(_PSC, 0x0)
                Name(IDET, 0x0)
                Name(UDMA, 0x0)
                Method(_STA) {
                    Return(0xf)
                }
                Device(MAST) {
                    Name(_ADR, 0x0)
                }
                Method(_PS0) {
                    If(LEqual(_PSC, 0x3)) {
                        Store(IDET, R40_)
                        Store(UDMA, R48_)
                        PHS_
                        0xcd
                    }
                    Store(0x0, _PSC)
                }
                Method(_PS3) {
                    Store(R40_, IDET)
                    Store(R48_, UDMA)
                    Store(0x3, _PSC)
                }
            }
            Device(SECN) {
                Name(_ADR, 0x1)
                Name(_PSC, 0x0)
                Name(IDET, 0x0)
                Name(UDMA, 0x0)
                Method(_STA) {
                    Return(0xf)
                }
                Device(MAST) {
                    Name(_ADR, 0x0)
                }
                Method(_PS0) {
                    Store(0x0, _PSC)
                }
                Method(_PS3) {
                    Store(0x3, _PSC)
                }
            }
        }
        Device(SD94) {
            Name(_ADR, 0x00080000)
            Name(_STA, 0xf)
            OperationRegion(SPCI, PCI_Config, 0x0, 0x0100)
            Field(SPCI, DWordAcc, NoLock, Preserve) {
                Offset(0xc),
                CALS,	8,
                LATI,	8,
                Offset(0xe0),
                PWST,	8
            }
            Name(_PSC, 0x0)
            Method(_PS0) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    Noop
                }
                Else {
                    Store(0x0, PWST)
                    Sleep(0x1)
                    Store(0x8, CALS)
                    Store(0x40, LATI)
                }
                PHS_
                0xd6
                Store(0x0, _PSC)
            }
            Method(_PS3) {
                Store(0x3, _PSC)
            }
        }
        Device(CRD0) {
            Name(_ADR, 0x000c0000)
            Name(_PRW, Package(0x2) {
                0xa,
                0x3,
            })
            OperationRegion(CCRD, PCI_Config, 0x0, 0xe4)
            Field(CCRD, DWordAcc, NoLock, Preserve) {
                Offset(0x4),
                CD04,	32,
                Offset(0x3e),
                CD3E,	32,
                Offset(0x44),
                CD44,	32,
                Offset(0xe0),
                CDE0,	8,
                CDE1,	8
            }
            OperationRegion(EXCA, SystemIO, 0x03e0, 0x2)
            Field(EXCA, ByteAcc, NoLock, Preserve) {
                INDX,	8,
                DATA,	8
            }
            IndexField(INDX, DATA, ByteAcc, NoLock, Preserve) {
                Offset(0x3),
                ,	7,
                ERIB,	1
            }
            Method(_INI) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    Store(Zero, CDE1)
                }
                Else {
                    Store(Zero, CDE0)
                    Store(Zero, CD04)
                    Store(Zero, CD3E)
                    Store(One, CD44)
                }
            }
            Name(_PSC, 0x0)
            Method(PSX_, 1) {
                Store(0x0, CDE0)
                Store(0x03e0, CD44)
                Store(One, ERIB)
                Store(0x0, CD44)
                Store(Arg0, CDE0)
                Store(Arg0, _PSC)
            }
            Method(_PS0) {
                Store(0x0, _PSC)
            }
            Method(_PS1) {
                PSX_
                0x1
                Or(CDE1, 0x1, CDE1)
            }
            Method(_PS2) {
                PSX_
                0x2
                Or(CDE1, 0x1, CDE1)
            }
            Method(_PS3) {
                PSX_
                0x3
                Or(CDE1, 0x1, CDE1)
            }
        }
        Device(MODE) {
            Name(_ADR, 0x000a0000)
            Name(_STA, 0xf)
            Method(_PRW) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows"
                    Zero
                    Return(Package(0x2) {
                        0xa,
                        0x4,
                    })
                }
                Else {
                    If(LNot(LEqual(SCMP, \_OS_))) {
                        "Microsoft Windows NT"
                        Zero
                        Return(Package(0x2) {
                            0xa,
                            0x3,
                        })
                    }
                    Else {
                        Return(Package(0x2) {
                            0xa,
                            0x3,
                        })
                    }
                }
            }
            Method(_PSW, 1) {
                If(LEqual(\_SB_.PCI0.ISA_.EC0_.ECOK, 0x0)) {
                    PHSB
                    0xdd
                    Arg0
                }
                Else {
                    Store(Arg0, \_SB_.PCI0.ISA_.EC0_.SMDM)
                }
            }
        }
        Device(ETHR) {
            Name(_ADR, 0x000b0000)
            Name(_STA, 0xf)
            Name(_PSC, 0x0)
            Method(_PRW) {
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows"
                    Zero
                    Return(Package(0x2) {
                        0xa,
                        0x4,
                    })
                }
                Else {
                    Return(Package(0x2) {
                        0xa,
                        0x3,
                    })
                }
            }
            OperationRegion(EPCI, PCI_Config, 0x0, 0x0100)
            Field(EPCI, DWordAcc, NoLock, Preserve) {
                Offset(0xe0),
                ETE0,	8,
                ETE1,	8
            }
            Method(_PS0) {
                Store(0x0, ETE0)
                PHS_
                0xe7
                If(LEqual(SCMP, \_OS_)) {
                    "Microsoft Windows NT"
                    Zero
                    And(ETE1, 0xfe, ETE1)
                }
                Else {
                }
                Store(0x0, _PSC)
            }
            Method(_PS3) {
                Store(0x3, _PSC)
            }
        }
        Device(MSCL) {
            Name(_ADR, 0x000d0000)
            Name(_STA, 0xf)
            Name(_PSC, 0x0)
            OperationRegion(MSCG, PCI_Config, 0x0, 0x0100)
            Field(MSCG, DWordAcc, NoLock, Preserve) {
                Offset(0x48),
                MS48,	24,
                Offset(0xe0),
                MSE0,	8,
                MSE1,	8
            }
            Method(_PS0) {
                Store(0x0, MSE0)
                Store(0x00050100, MS48)
                And(MSE1, 0x80, Local0)
                If(LEqual(Local0, 0x80)) {
                    Or(MSE1, 0x80, MSE1)
                }
                Store(0x0, _PSC)
            }
            Method(_PS3) {
                Store(0x3, _PSC)
            }
        }
        Device(ISA_) {
            Name(_ADR, 0x00070000)
            OperationRegion(PIRX, PCI_Config, 0x60, 0x4)
            Field(PIRX, ByteAcc, NoLock, Preserve) {
                PIRA,	8,
                PIRB,	8,
                PIRC,	8,
                PIRD,	8
            }
            Device(MOTH) {
                Name(_HID, 0x020cd041)
                Name(_CRS, Buffer(0x3a) {0x47, 0x1, 0x80, 0x0, 0x80, 0x0, 0=
x1, 0x1, 0x47, 0x1, 0xb2, 0x0, 0xb2, 0x0, 0x1, 0x2, 0x47, 0x1, 0x98, 0x3, 0=
x98, 0x3, 0x1, 0x2, 0x47, 0x1, 0xd0, 0x4, 0xd0, 0x4, 0x1, 0x2, 0x47, 0x1, 0=
x40, 0x10, 0x40, 0x10, 0x1, 0x10, 0x47, 0x1, 0x0, 0x80, 0x0, 0x80, 0x1, 0x5=
0, 0x47, 0x1, 0x72, 0x0, 0x72, 0x0, 0x1, 0x2, 0x79, 0x0 })
            }
            Device(MEM_) {
                Name(_HID, 0x010cd041)
                Name(MSRC, Buffer(0x4a) {0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x1=
0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x86, 0x9, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0=
x0, 0xa, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0, 0xc0, 0xd, 0x0, 0x0, 0x40, 0x0, 0x0=
, 0x86, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x2, 0x0, 0x86, 0x9, 0=
x0, 0x0, 0x0, 0x0, 0xf8, 0xff, 0x0, 0x0, 0x8, 0x0, 0x86, 0x9, 0x0, 0x0, 0x0=
, 0xf6, 0xf7, 0xff, 0x0, 0xa, 0x0, 0x0, 0x79, 0x0 })
                Method(_CRS) {
                    CreateDWordField(MSRC, 0x8, MEMS)
                    If(LNot(MEMS)) {
                        Store(PHS_, 0xc0)
                        MEMS
                    }
                    Return(MSRC)
                }
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(DMAC) {
                Name(_HID, 0x0002d041)
                Name(_CRS, Buffer(0x1d) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1=
, 0x10, 0x47, 0x1, 0x81, 0x0, 0x81, 0x0, 0x1, 0xf, 0x47, 0x1, 0xc0, 0x0, 0x=
c0, 0x0, 0x1, 0x20, 0x2a, 0x10, 0x0, 0x79, 0x0 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(RTC_) {
                Name(_HID, 0x000bd041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x70, 0x0, 0x70, 0x0, 0x=
1, 0x2, 0x22, 0x0, 0x1, 0x79, 0x0 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            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 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(FPU_) {
                Name(_HID, 0x040cd041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0xf0, 0x0, 0xf0, 0x0, 0x=
1, 0x10, 0x22, 0x0, 0x20, 0x79, 0x0 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(TMR_) {
                Name(_HID, 0x0001d041)
                Name(_CRS, Buffer(0xd) {0x47, 0x1, 0x40, 0x0, 0x40, 0x0, 0x=
1, 0x4, 0x22, 0x1, 0x0, 0x79, 0x0 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(SPKR) {
                Name(_HID, 0x0008d041)
                Name(_CRS, Buffer(0xa) {0x47, 0x1, 0x61, 0x0, 0x61, 0x0, 0x=
1, 0x1, 0x79, 0x0 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(KBC_) {
                Name(_HID, 0x0303d041)
                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 })
                Method(_STA) {
                    Return(0xf)
                }
            }
            Device(MOUE) {
                Name(_HID, 0x130fd041)
                Name(_CRS, Buffer(0x5) {0x22, 0x0, 0x10, 0x79, 0x0 })
            }
            Device(EC0_) {
                Name(_HID, 0x090cd041)
                Name(_CRS, Buffer(0x12) {0x47, 0x1, 0x62, 0x0, 0x62, 0x0, 0=
x1, 0x1, 0x47, 0x1, 0x66, 0x0, 0x66, 0x0, 0x1, 0x1, 0x79, 0x0 })
                Name(_GPE, 0x9)
                Name(ECOK, 0x0)
                Method(_REG, 2) {
                    If(LEqual(Arg0, 0x3)) {
                        Store(Arg1, ECOK)
                    }
                }
                OperationRegion(ECR_, EmbeddedControl, 0x0, 0xff)
                Field(ECR_, AnyAcc, Lock, Preserve) {
                    Offset(0x80),
                    MPBP,	1,
                    MPBD,	1,
                    DOKD,	1,
                    DFBP,	1,
                    Offset(0x81),
                    BT1A,	1,
                    BT2A,	1,
                    ACAT,	1,
                    Offset(0x82),
                    PWRB,	1,
                    JOGB,	1,
                    LIDS,	1,
                    Offset(0x83),
                    BT1P,	1,
                    BT2P,	1,
                    Offset(0x84),
                    B1ST,	8,
                    B2ST,	8,
                    Offset(0x90),
                    MASK,	8,
                    BT1S,	1,
                    BT2S,	1,
                    Offset(0x92),
                    BT1W,	1,
                    BT2W,	1,
                    Offset(0x93),
                    FAN0,	8,
                    CB0S,	1,
                    CB1S,	1,
                    Offset(0x95),
                    PHYO,	1,
                    Offset(0x96),
                    BRIT,	8,
                    CONT,	8,
                    SNDU,	1,
                    SNDD,	1,
                    Offset(0x99),
                    SMDM,	1,
                    Offset(0x9a),
                    Offset(0xa0),
                    B1RC,	16,
                    B1AB,	16,
                    B1RT,	16,
                    B1VO,	16,
                    B2RC,	16,
                    B2AB,	16,
                    B2RT,	16,
                    B2VO,	16,
                    B1DC,	16,
                    B1LF,	16,
                    B1DV,	16,
                    B1DL,	16,
                    B2DC,	16,
                    B2LF,	16,
                    B2DV,	16,
                    B2DL,	16,
                    A1TP,	16,
                    A1AT,	16,
                    A1PT,	16,
                    A1CT,	16,
                    A2TP,	16,
                    A2AT,	16,
                    A2PT,	16,
                    A2CT,	16
                }
                Method(_Q50) {
                    PHS_
                    0xe0
                    Notify(ACAD, 0x80)
                }
                Method(_Q51) {
                    If(BT1A) {
                        Notify(BAT1, 0x0)
                    }
                    Else {
                        Notify(BAT1, 0x1)
                    }
                    Notify(BAT1, 0x80)
                }
                Method(_Q52) {
                    Store("_Q52:Change Battery 2 Event", Debug)
                }
                Method(_Q53) {
                    Store("_Q53:Battery Selection", Debug)
                }
                Method(_Q58) {
                    Store("_Q58:ATF temperature trip point changd", Debug)
                    Notify(\_TZ_.ATF0, 0x81)
                }
                Method(_Q5E) {
                    Store("_Q5E:RI1 occurred", Debug)
                }
                Method(_Q5F) {
                    Store("_Q5F:ATF temperature reaches trip point", Debug)
                    Notify(\_TZ_.ATF0, 0x80)
                }
                Method(_Q60) {
                    Notify(\_SB_.PWRB, 0x80)
                }
                Device(BAT1) {
                    Name(_HID, 0x0a0cd041)
                    Name(_UID, 0x1)
                    Name(_PCL, Package(0x1) {
                        \_SB_,
                    })
                    Name(BATI, Package(0xd) {
                        0x0,
                        0x9650,
                        0x9650,
                        0x0,
                        0x39d0,
                        0x0,
                        0x78,
                        0x0,
                        0xa,
                        "",
                        "",
                        "LION",
                        "Sony Corp.",
                    })
                    Name(BATS, Package(0x4) {
                        0x2,
                        0xffffffff,
                        0x0d7a,
                        0x3840,
                    })
                    Method(_STA) {
                        And(PHSD, 0xdb, 0x80)
                        0x0100
                        Local1
                        If(Local1) {
                            Store(0x1f, Local0)
                        }
                        Else {
                            Store(0xf, Local0)
                        }
                        Return(Local0)
                    }
                    Method(_BIF) {
                        Store(PHSD, 0xdb)
                        0xb0
                        Local1
                        Multiply(Local1, 0xa, Index(BATI, 0x1, ))
                        Store(PHSD, 0xdb)
                        0xb2
                        Local1
                        Multiply(Local1, 0xa, Index(BATI, 0x2, ))
                        Store(PHSD, 0xdb)
                        0xb6
                        Index(BATI, 0x4, )
                        Return(BATI)
                    }
                    Method(_BST) {
                        Store(And(PHSD, 0xdb, 0x84), 0xff)
                        Local0
                        Index(BATS, 0x0, )
                        Store(PHSD, 0xdb)
                        0xa4
                        Local1
                        If(LLess(Local1, 0x8000)) {
                            If(Local1) {
                                Store(0xffffffff, Index(BATS, 0x1, ))
                            }
                            Else {
                                Store(Zero, Index(BATS, 0x1, ))
                            }
                        }
                        Else {
                            XOr(Local1, 0xffff, Local1)
                            Increment(Local1)
                            Multiply(Local1, 0xa, Index(BATS, 0x1, ))
                        }
                        Multiply(PHSD, 0xdb, 0xa2)
                        0xa
                        Index(BATS, 0x2, )
                        Store(PHSD, 0xdb)
                        0xa6
                        Index(BATS, 0x3, )
                        Return(BATS)
                    }
                }
                Device(ACAD) {
                    Name(_HID, "ACPI0003")
                    Name(_PCL, Package(0x1) {
                        \_SB_,
                    })
                    Method(_PSR) {
                        And(PHSD, 0xdb, 0x80)
                        0x0400
                        Local1
                        If(Local1) {
                            Return(One)
                        }
                        Else {
                            Return(Zero)
                        }
                    }
                    Method(_STA) {
                        Return(0xf)
                    }
                }
            }
            Device(SPIC) {
                Name(_HID, 0x0160d94d)
                Name(RSRC, Buffer(0x15) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1=
, 0x1, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x22, 0x0, 0x0, 0x79, 0x0 })
                Name(SSRC, Buffer(0x15) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1=
, 0x1, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x22, 0x0, 0x0, 0x79, 0x0 })
                Method(_CRS) {
                    CreateWordField(RSRC, 0x2, IOA1)
                    CreateWordField(RSRC, 0x4, IOA2)
                    CreateWordField(RSRC, 0xa, IOB1)
                    CreateWordField(RSRC, 0xc, IOB2)
                    CreateWordField(RSRC, 0x11, IRQV)
                    Store(\_SB_.PCI0.PWR_.G10A, IOA1)
                    Store(\_SB_.PCI0.PWR_.G10A, IOA2)
                    Or(\_SB_.PCI0.PWR_.G10A, \_SB_.PCI0.PWR_.G10L, IOB1)
                    Or(\_SB_.PCI0.PWR_.G10A, \_SB_.PCI0.PWR_.G10L, IOB2)
                    If(GO22) {
                        If(GO23) {
                            Store(Zero, IRQV)
                        }
                        Else {
                            ShiftLeft(0x1, 0xa, IRQV)
                        }
                    }
                    Else {
                        If(GO23) {
                            ShiftLeft(0x1, 0xb, IRQV)
                        }
                        Else {
                            ShiftLeft(0x1, 0x5, IRQV)
                        }
                    }
                    Return(RSRC)
                }
                Method(_SRS, 1) {
                    CreateWordField(Arg0, 0x2, IOA1)
                    CreateWordField(Arg0, 0xa, IOB1)
                    CreateWordField(Arg0, 0x11, IRQV)
                    Store(IOA1, \_SB_.PCI0.PWR_.G10A)
                    XOr(IOA1, IOB1, \_SB_.PCI0.PWR_.G10L)
                    FindSetRightBit(IRQV, Local0)
                    Decrement(Local0)
                    If(LEqual(Local0, Zero)) {
                        Store(0x1, GO22)
                        Store(0x1, GO23)
                    }
                    If(LEqual(Local0, 0x5)) {
                        Store(0x0, GO22)
                        Store(0x0, GO23)
                    }
                    If(LEqual(Local0, 0xa)) {
                        Store(0x1, GO22)
                        Store(0x0, GO23)
                    }
                    If(LEqual(Local0, 0xb)) {
                        Store(0x0, GO22)
                        Store(0x1, GO23)
                    }
                    Store(0x0, \_SB_.PCI0.PWR_.G10M)
                    Store(0x1, \_SB_.PCI0.PWR_.G10E)
                    Store(0x1, \_SB_.PCI0.PWR_.G10C)
                }
                Name(_PRS, Buffer(0x4a) {0x30, 0x47, 0x1, 0x80, 0x10, 0x80,=
 0x10, 0x1, 0x1, 0x47, 0x1, 0x84, 0x10, 0x84, 0x10, 0x1, 0x1, 0x30, 0x47, 0=
x1, 0x90, 0x10, 0x90, 0x10, 0x1, 0x1, 0x47, 0x1, 0x94, 0x10, 0x94, 0x10, 0x=
1, 0x1, 0x30, 0x47, 0x1, 0xa0, 0x10, 0xa0, 0x10, 0x1, 0x1, 0x47, 0x1, 0xa4,=
 0x10, 0xa4, 0x10, 0x1, 0x1, 0x30, 0x47, 0x1, 0xb0, 0x10, 0xb0, 0x10, 0x1, =
0x1, 0x47, 0x1, 0xb4, 0x10, 0xb4, 0x10, 0x1, 0x1, 0x38, 0x22, 0x20, 0xc, 0x=
79, 0x0 })
                Method(_DIS) {
                    Store(0x0, \_SB_.PCI0.PWR_.G10E)
                    Store(0x0, \_SB_.PCI0.PWR_.G10C)
                    Store(0x1, GO22)
                    Store(0x1, GO23)
                }
                Method(_STA) {
                    If(LAnd(GO22, GO23)) {
                        Return(0xd)
                    }
                    Else {
                        Return(0xf)
                    }
                }
            }
            Mutex(SLOK, 0)
            Device(COMA) {
                Name(_HID, 0x0105d041)
                Name(MCD_, 0xe)
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.COMA._STA) {
                        Acquire(SLOK, 0xffff)
                        Store(PSCS, 0xe)
                        Local0
                        Release(SLOK)
                        Return(Local0)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(_SRS, 1) {
                    Acquire(SLOK, 0xffff)
                    PSSS
                    0xe
                    Arg0
                    Release(SLOK)
                }
                Method(_PRS) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0xe)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(_DIS) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0xe
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0xe)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
                Method(_PS0) {
                    Store(One, GO13)
                    Stall(0xc8)
                    Store(0x0, _PSC)
                }
                Method(_PS3) {
                    Store(Zero, GO13)
                    Store(0x3, _PSC)
                }
                Name(_PRW, Package(0x2) {
                    0xa,
                    0x3,
                })
            }
            Device(FIR_) {
                Name(_HID, 0x0170d94d)
                Name(_CID, 0x0160633a)
                Name(MCD_, 0xf)
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.FIR_._STA) {
                        Acquire(SLOK, 0xffff)
                        Store(PSCS, 0xf)
                        Local0
                        Release(SLOK)
                        Return(Local0)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(B_SR, 1) {
                    Acquire(SLOK, 0xffff)
                    PSSS
                    0xf
                    Arg0
                    Release(SLOK)
                }
                Method(B_PR) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0xf)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(B_DI) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0xf
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0xf)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
            }
            Device(LPTA) {
                Name(_HID, 0x0004d041)
                Name(_UID, 0x1)
                Name(MCD_, 0x10)
                Name(CRSB, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1,=
 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.LPTA._STA) {
                        CreateWordField(CRSB, 0x2, IO1B)
                        CreateWordField(CRSB, 0x4, IO2B)
                        CreateWordField(CRSB, 0x6, IO3B)
                        CreateWordField(CRSB, 0x9, IRQB)
                        Acquire(SLOK, 0xffff)
                        ShiftRight(READ, 0x1b, 0xf0)
                        0x0
                        0x4
                        Local0
                        Store(Zero, IRQB)
                        If(Local0) {
                            ShiftLeft(0x1, Local0, IRQB)
                        }
                        Or(ShiftLeft(And(R430, 0xfc, ), 0x8, ), ShiftLeft(R=
420, 0x2, ), IO1B)
                        Store(IO1B, IO2B)
                        If(LEqual(IO1B, 0x03bc)) {
                            Store(0x0401, IO3B)
                        }
                        Store(CRSB, Local1)
                        Release(SLOK)
                        Return(Local1)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(B_SR, 1) {
                    Name(XRFI, Package(0x10) {
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x7,
                        0x0,
                        0x1,
                        0x0,
                        0x2,
                        0x3,
                        0x4,
                        0x0,
                        0x0,
                        0x5,
                        0x6,
                    })
                    CreateWordField(Arg0, 0x2, IO1A)
                    CreateWordField(Arg0, 0x9, IRQB)
                    Acquire(SLOK, 0xffff)
                    WRIT
                    0x0
                    0xfe
                    0x0
                    0x0
                    WRIT
                    0x42
                    0x0
                    ShiftRight(IO1A, 0x2, )
                    0x0
                    WRIT
                    0x43
                    0x3
                    ShiftRight(IO1A, 0x8, )
                    0x0
                    FindSetRightBit(IRQB, Local0)
                    If(Local0) {
                        Decrement(Local0)
                        WRIT
                        0x1b
                        0xf
                        ShiftLeft(Local0, 0x4, )
                        0x0
                        WRIT
                        0x1b
                        0xf8
                        DerefOf(Index(XRFI, Local0, ))
                        0x0
                    }
                    Else {
                        WRIT
                        0x1b
                        0x8
                        0x0
                        0x0
                    }
                    WRIT
                    0x0
                    0xfe
                    0x1
                    0x0
                    Release(SLOK)
                }
                Method(B_PR) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0x10)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(B_DI) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0x10
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0x10)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
            }
            Device(LPTB) {
                Name(_HID, 0x0004d041)
                Name(_UID, 0x2)
                Name(MCD_, 0x11)
                Name(CRSB, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1,=
 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.LPTB._STA) {
                        Acquire(SLOK, 0xffff)
                        CreateWordField(CRSB, 0x2, IO1B)
                        CreateWordField(CRSB, 0x4, IO2B)
                        CreateWordField(CRSB, 0x6, IO3B)
                        CreateWordField(CRSB, 0x9, IRQB)
                        Or(ShiftLeft(And(R430, 0xfc, ), 0x8, ), ShiftLeft(R=
420, 0x2, ), IO1B)
                        Store(IO1B, IO2B)
                        If(LEqual(IO1B, 0x03bc)) {
                            Store(0x0401, IO3B)
                        }
                        Store(Zero, IRQB)
                        ShiftRight(READ, 0x1b, 0xf0)
                        0x0
                        0x4
                        Local0
                        If(Local0) {
                            ShiftLeft(0x1, Local0, IRQB)
                        }
                        Store(CRSB, Local1)
                        Release(SLOK)
                        Return(Local1)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(B_SR, 1) {
                    Name(XRFI, Package(0x10) {
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x7,
                        0x0,
                        0x1,
                        0x0,
                        0x2,
                        0x3,
                        0x4,
                        0x0,
                        0x0,
                        0x5,
                        0x6,
                    })
                    CreateWordField(Arg0, 0x2, IO1A)
                    CreateWordField(Arg0, 0x9, IRQB)
                    Acquire(SLOK, 0xffff)
                    WRIT
                    0x0
                    0xfe
                    0x0
                    0x0
                    WRIT
                    0x42
                    0x0
                    ShiftRight(IO1A, 0x2, )
                    0x0
                    WRIT
                    0x43
                    0x3
                    ShiftRight(IO1A, 0x8, )
                    0x0
                    FindSetRightBit(IRQB, Local0)
                    If(Local0) {
                        Decrement(Local0)
                        WRIT
                        0x1b
                        0xf
                        ShiftLeft(Local0, 0x4, )
                        0x0
                        WRIT
                        0x1b
                        0xf8
                        DerefOf(Index(XRFI, Local0, ))
                        0x0
                    }
                    Else {
                        WRIT
                        0x1b
                        0x8
                        0x0
                        0x0
                    }
                    WRIT
                    0x0
                    0xfe
                    0x1
                    0x0
                    Release(SLOK)
                }
                Method(B_PR) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0x11)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(B_DI) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0x11
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0x11)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
            }
            Device(ECP_) {
                Name(_HID, 0x0104d041)
                Name(MCD_, 0x12)
                Name(CRSA, Buffer(0x18) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1=
, 0x8, 0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8, 0x22, 0x0, 0x0, 0x2a, 0x0, =
0x0, 0x79, 0x0 })
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.ECP_._STA) {
                        CreateWordField(CRSA, 0x2, IO1A)
                        CreateWordField(CRSA, 0x4, IO2A)
                        CreateWordField(CRSA, 0x6, IO3A)
                        CreateWordField(CRSA, 0xa, IO4A)
                        CreateWordField(CRSA, 0xc, IO5A)
                        CreateWordField(CRSA, 0xe, IO6A)
                        CreateWordField(CRSA, 0x11, IRQA)
                        CreateByteField(CRSA, 0x14, DMAA)
                        Acquire(SLOK, 0xffff)
                        Or(ShiftLeft(And(R430, 0xfc, ), 0x8, ), ShiftLeft(R=
420, 0x2, ), IO1A)
                        Store(IO1A, IO2A)
                        Add(IO1A, 0x0400, IO4A)
                        Add(IO1A, 0x0400, IO5A)
                        If(LEqual(IO1A, 0x03bc)) {
                            Store(0x0401, IO3A)
                            Store(0x0301, IO6A)
                        }
                        Else {
                            Store(0x0301, IO6A)
                        }
                        Store(Zero, IRQA)
                        ShiftRight(READ, 0x1b, 0xf0)
                        0x0
                        0x4
                        Local0
                        If(Local0) {
                            ShiftLeft(0x1, Local0, IRQA)
                        }
                        ShiftRight(READ, 0x18, 0x6)
                        0x0
                        0x1
                        DMAA
                        ShiftLeft(0x1, DMAA, DMAA)
                        Store(CRSA, Local1)
                        Release(SLOK)
                        Return(Local1)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(_SRS, 1) {
                    Name(XRFI, Package(0x10) {
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x7,
                        0x0,
                        0x1,
                        0x0,
                        0x2,
                        0x3,
                        0x4,
                        0x0,
                        0x0,
                        0x5,
                        0x6,
                    })
                    CreateWordField(Arg0, 0x2, IO1A)
                    CreateWordField(Arg0, 0x11, IRQA)
                    CreateByteField(Arg0, 0x14, DMAA)
                    Acquire(SLOK, 0xffff)
                    WRIT
                    0x0
                    0xfe
                    0x0
                    0x0
                    WRIT
                    0x42
                    0x0
                    ShiftRight(IO1A, 0x2, )
                    0x0
                    WRIT
                    0x43
                    0x3
                    ShiftRight(IO1A, 0x8, )
                    0x0
                    FindSetRightBit(IRQA, Local0)
                    If(Local0) {
                        Decrement(Local0)
                        WRIT
                        0x1b
                        0xf
                        ShiftLeft(Local0, 0x4, )
                        0x0
                        WRIT
                        0x1b
                        0xf8
                        DerefOf(Index(XRFI, Local0, ))
                        0x0
                    }
                    Else {
                        WRIT
                        0x1b
                        0x8
                        0x0
                        0x0
                    }
                    FindSetRightBit(DMAA, Local0)
                    WRIT
                    0x18
                    0xc7
                    ShiftLeft(Local0, 0x3, )
                    0x0
                    WRIT
                    0x0
                    0xfe
                    0x1
                    0x0
                    PHS_
                    0xda
                    Release(SLOK)
                }
                Method(_PRS) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0x12)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(_DIS) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0x12
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0x12)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
            }
            Device(EPP_) {
                Name(_HID, 0x0004d041)
                Name(_UID, 0x3)
                Name(MCD_, 0x13)
                Name(CRSB, Buffer(0xd) {0x47, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1,=
 0x8, 0x22, 0x0, 0x0, 0x79, 0x0 })
                Method(_CRS) {
                    If(\_SB_.PCI0.ISA_.EPP_._STA) {
                        CreateWordField(CRSB, 0x2, IO1B)
                        CreateWordField(CRSB, 0x4, IO2B)
                        CreateWordField(CRSB, 0x6, IO3B)
                        CreateWordField(CRSB, 0x9, IRQB)
                        Acquire(SLOK, 0xffff)
                        Or(ShiftLeft(And(R430, 0xfc, ), 0x8, ), ShiftLeft(R=
420, 0x2, ), IO1B)
                        Store(IO1B, IO2B)
                        Store(Zero, IRQB)
                        ShiftRight(READ, 0x1b, 0xf0)
                        0x0
                        0x4
                        Local0
                        If(Local0) {
                            ShiftLeft(0x1, Local0, IRQB)
                        }
                        Store(CRSB, Local1)
                        Release(SLOK)
                        Return(Local1)
                    }
                    Else {
                        Return(Buffer(0x2) {0x79, 0x0 })
                    }
                }
                Method(B_SR, 1) {
                    Name(XRFI, Package(0x10) {
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x0,
                        0x7,
                        0x0,
                        0x1,
                        0x0,
                        0x2,
                        0x3,
                        0x4,
                        0x0,
                        0x0,
                        0x5,
                        0x6,
                    })
                    CreateWordField(Arg0, 0x2, IO1A)
                    CreateWordField(Arg0, 0x9, IRQB)
                    Acquire(SLOK, 0xffff)
                    WRIT
                    0x0
                    0xfe
                    0x0
                    0x0
                    WRIT
                    0x42
                    0x0
                    ShiftRight(IO1A, 0x2, )
                    0x0
                    WRIT
                    0x43
                    0x3
                    ShiftRight(IO1A, 0x8, )
                    0x0
                    FindSetRightBit(IRQB, Local0)
                    If(Local0) {
                        Decrement(Local0)
                        WRIT
                        0x1b
                        0xf
                        ShiftLeft(Local0, 0x4, )
                        0x0
                        WRIT
                        0x1b
                        0xf8
                        DerefOf(Index(XRFI, Local0, ))
                        0x0
                    }
                    Else {
                        WRIT
                        0x1b
                        0x8
                        0x0
                        0x0
                    }
                    WRIT
                    0x0
                    0xfe
                    0x1
                    0x0
                    WRIT
                    0x4
                    0xfa
                    0x1
                    0x0
                    Release(SLOK)
                }
                Method(B_PR) {
                    Acquire(SLOK, 0xffff)
                    Store(PSPS, 0x13)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Method(B_DI) {
                    Acquire(SLOK, 0xffff)
                    PSDI
                    0x13
                    Release(SLOK)
                }
                Method(_STA) {
                    Acquire(SLOK, 0xffff)
                    Store(PSST, 0x13)
                    Local0
                    Release(SLOK)
                    Return(Local0)
                }
                Name(_PSC, 0x0)
            }
            OperationRegion(SIOR, SystemIO, 0x0398, 0x2)
            Field(SIOR, ByteAcc, NoLock, Preserve) {
                INDX,	8,
                DATA,	8
            }
            IndexField(INDX, DATA, ByteAcc, NoLock, Preserve) {
                R000,	8,
                Offset(0x2),
                R020,	8,
                Offset(0x4),
                R040,	8,
                Offset(0x42),
                R420,	8,
                R430,	8,
                R440,	8,
                R450,	8,
                R460,	8,
                R470,	8,
                R480,	8,
                R490,	8,
                Offset(0x4f),
                R4F0,	8
            }
            Method(READ, 3) {
                If(LNot(Arg2)) {
                    Store(Arg0, INDX)
                    Return(And(DATA, Arg1, ))
                }
            }
            Method(WRIT, 4) {
                If(LNot(Arg3)) {
                    Store(Arg0, INDX)
                    Or(And(DATA, Arg1, ), Arg2, Local0)
                    Store(Arg0, INDX)
                    Store(Local0, DATA)
                    Store(Local0, DATA)
                }
                Else {
                }
            }
            Device(SNC_) {
                Name(_HID, 0x0150d94d)
                Method(GPID) {
                    Return(PHSB)
                    0xc1
                    0x0
                }
                Method(GBRT) {
                    If(LEqual(\_SB_.PCI0.ISA_.EC0_.ECOK, 0x0)) {
                        Store(PHSD, 0xdb)
                        0x96
                        Local0
                    }
                    Else {
                        Store(\_SB_.PCI0.ISA_.EC0_.BRIT, Local0)
                    }
                    Return(PHSB)
                    0xd2
                    Local0
                }
                Method(SBRT, 1) {
                    Store(PHSB, 0xd0)
                    Arg0
                    Local0
                    If(LEqual(\_SB_.PCI0.ISA_.EC0_.ECOK, 0x0)) {
                        PHSB
                        0xde
                        Local0
                    }
                    Else {
                        Store(Local0, \_SB_.PCI0.ISA_.EC0_.BRIT)
                    }
                    Return(Zero)
                }
                Method(GPBR) {
                    Return(PHSB)
                    0xc6
                    0x0
                }
                Method(SPBR, 1) {
                    PHSB
                    0xc7
                    Arg0
                    Return(Zero)
                }
                Method(GCTR) {
                    If(LEqual(\_SB_.PCI0.ISA_.EC0_.ECOK, 0x0)) {
                        Store(PHSD, 0xdb)
                        0x97
                        Local0
                    }
                    Else {
                        Store(\_SB_.PCI0.ISA_.EC0_.CONT, Local0)
                    }
                    Return(PHSB)
                    0xd3
                    Local0
                }
                Method(SCTR, 1) {
                    Store(PHSB, 0xd1)
                    Arg0
                    Local0
                    If(LEqual(\_SB_.PCI0.ISA_.EC0_.ECOK, 0x0)) {
                        PHSB
                        0xdf
                        Local0
                    }
                    Else {
                        Store(Local0, \_SB_.PCI0.ISA_.EC0_.CONT)
                    }
                    Return(Zero)
                }
                Method(GPCR) {
                    Return(PHSB)
                    0xc8
                    0x0
                }
                Method(SPCR, 1) {
                    PHSB
                    0xc9
                    Arg0
                    Return(Zero)
                }
                Method(SLVT) {
                    Return(PHSB)
                    0xca
                    0x0
                }
                Method(SLTT) {
                    Return(PHSB)
                    0xcb
                    0x0
                }
                Method(SEVF) {
                    Return(PHSB)
                    0xcc
                    0x0
                }
                Method(GCMI, 1) {
                    Return(PHSD)
                    0xce
                    Arg0
                }
                Method(SCMI, 1) {
                    Return(PHSD)
                    0xcf
                    Arg0
                }
                Method(PWAK) {
                    Noop
                    Return(Zero)
                }
                Method(PWRN) {
                    Notify(\_SB_.PWRB, 0x80)
                }
                Method(CSXB, 1) {
                    Acquire(MPHS, 0xffff)
                    Store(Arg0, SXBF)
                    PHS0
                    0xe2
                    Store(SXBF, Local0)
                    Release(MPHS)
                    Return(Local0)
                }
                Method(CMGB, 1) {
                    If(Arg0) {
                        Store(0x0, GO12)
                    }
                    Else {
                        Store(0x1, GO12)
                    }
                    Return(Zero)
                }
            }
            OperationRegion(GENC, PCI_Config, 0xb0, 0x4)
            Field(GENC, DWordAcc, NoLock, Preserve) {
                ISAS,	1,
                POSD,	1,
                ,	9,
                ID0T,	1,
                ID1T,	1
            }
            OperationRegion(PCI_, PCI_Config, 0x60, 0x4)
            Field(PCI_, DWordAcc, NoLock, Preserve) {
                PIRQ,	32
            }
            Name(P1__, Buffer(0x4) {0x0 })
            Method(RESP) {
                Store(P1__, PIRQ)
            }
            Method(SAVP) {
                Store(PIRQ, P1__)
            }
        }
    }
}
Scope(\_SI_) {
    Method(_SST, 1) {
        If(LEqual(Arg0, 0x0)) {
        }
        If(LEqual(Arg0, 0x1)) {
        }
        If(LEqual(Arg0, 0x2)) {
        }
        If(LEqual(Arg0, 0x3)) {
        }
        If(LEqual(Arg0, 0x4)) {
        }
        If(LEqual(Arg0, 0x5)) {
        }
    }
}
Method(_WAK, 1) {
    Store(0x0, \_SB_.PCI0.CRST)
    If(LEqual(Arg0, 0x1)) {
        PHS_
        0xe0
    }
    If(LEqual(Arg0, 0x4)) {
        \_SB_.PCI0.ISA_.SPIC._SRS
        \_SB_.PCI0.ISA_.SPIC.SSRC
        If(LEqual(SCMP, \_OS_)) {
            "Microsoft Windows NT"
            Zero
            PHS_
            0xe6
        }
        Else {
            If(LNot(LEqual(SCMP, \_OS_))) {
                "Microsoft Windows"
                Zero
                PHS_
                0xe6
            }
        }
    }
    If(LEqual(SCMP, \_OS_)) {
        "Microsoft Windows NT"
        Zero
        Noop
    }
    Else {
        If(LNot(LEqual(SCMP, \_OS_))) {
            "Microsoft Windows"
            Zero
            Noop
        }
        Else {
            Notify(\_SB_.PWRB, 0x2)
        }
    }
    Return(Zero)
}
Scope(\_TZ_) {
    ThermalZone(ATF0) {
        Method(KELV, 1) {
            Store(Arg0, Local0)
            Multiply(Local0, 0xa, Local0)
            Add(Local0, 0x0aab, Local0)
            Return(Local0)
        }
        Method(_TMP) {
            ShiftRight(PHSD, 0xdb, 0xc0)
            0x8
            Local0
            Return(KELV)
            Local0
        }
        Method(_PSV) {
            ShiftRight(PHSD, 0xdb, 0xc4)
            0x8
            Local0
            Return(KELV)
            Local0
        }
        Name(_PSL, Package(0x1) {
            \_PR_.CPU0,
        })
        Method(_CRT) {
            ShiftRight(PHSD, 0xdb, 0xc6)
            0x8
            Local0
            Return(KELV)
            Local0
        }
        Name(_TC1, 0x1)
        Name(_TC2, 0x1)
        Name(_TSP, 0x32)
    }
}
Scope(_SB_) {
    Name(IRQP, Package(0x10) {
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0200,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
        0x0,
    })
    Device(LNKA) {
        Name(_HID, 0x0f0cd041)
        Name(_UID, 0x1)
        Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x2, 0x18, 0x79, 0x0 })
        Method(_DIS) {
            Or(\_SB_.PCI0.ISA_.PIRA, 0x80, \_SB_.PCI0.ISA_.PIRA)
        }
        Method(_CRS) {
            Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
            CreateWordField(BUFA, 0x1, IRA1)
            And(\_SB_.PCI0.ISA_.PIRA, 0x8f, Local0)
            If(LLess(Local0, 0x80)) {
                And(Local0, 0xf, Local0)
                Store(DerefOf(Index(IRQP, Local0, )), Local4)
                Store(Local4, IRA1)
            }
            Return(BUFA)
        }
        Method(_SRS, 1) {
            CreateWordField(Arg0, 0x1, IRA1)
            Store(IRA1, Local0)
            Store(Match(IRQP, MEQ, Local0, MTR, 0x0, 0x0), Local1)
            And(\_SB_.PCI0.ISA_.PIRA, 0x70, Local0)
            Or(Local1, Local0, \_SB_.PCI0.ISA_.PIRA)
        }
        Method(_STA) {
            If(LEqual(\_SB_.PCI0.ISA_.PIRA, 0x80)) {
                Return(0x9)
            }
            Else {
                Return(0xb)
            }
        }
    }
    Device(LNKB) {
        Name(_HID, 0x0f0cd041)
        Name(_UID, 0x2)
        Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x2, 0x18, 0x79, 0x0 })
        Method(_DIS) {
            Or(\_SB_.PCI0.ISA_.PIRB, 0x80, \_SB_.PCI0.ISA_.PIRB)
        }
        Method(_CRS) {
            Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
            CreateWordField(BUFA, 0x1, IRA1)
            And(\_SB_.PCI0.ISA_.PIRB, 0x8f, Local0)
            If(LLess(Local0, 0x80)) {
                And(Local0, 0xf, Local0)
                Store(DerefOf(Index(IRQP, Local0, )), Local4)
                Store(Local4, IRA1)
            }
            Return(BUFA)
        }
        Method(_SRS, 1) {
            CreateWordField(Arg0, 0x1, IRA1)
            Store(IRA1, Local0)
            Store(Match(IRQP, MEQ, Local0, MTR, 0x0, 0x0), Local1)
            And(\_SB_.PCI0.ISA_.PIRB, 0x70, Local0)
            Or(Local1, Local0, \_SB_.PCI0.ISA_.PIRB)
        }
        Method(_STA) {
            If(LEqual(\_SB_.PCI0.ISA_.PIRB, 0x80)) {
                Return(0x9)
            }
            Else {
                Return(0xb)
            }
        }
    }
    Device(LNKC) {
        Name(_HID, 0x0f0cd041)
        Name(_UID, 0x3)
        Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x2, 0x18, 0x79, 0x0 })
        Method(_DIS) {
            Or(\_SB_.PCI0.ISA_.PIRC, 0x80, \_SB_.PCI0.ISA_.PIRC)
        }
        Method(_CRS) {
            Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
            CreateWordField(BUFA, 0x1, IRA1)
            And(\_SB_.PCI0.ISA_.PIRC, 0x8f, Local0)
            If(LLess(Local0, 0x80)) {
                And(Local0, 0xf, Local0)
                Store(DerefOf(Index(IRQP, Local0, )), Local4)
                Store(Local4, IRA1)
            }
            Return(BUFA)
        }
        Method(_SRS, 1) {
            CreateWordField(Arg0, 0x1, IRA1)
            Store(IRA1, Local0)
            Store(Match(IRQP, MEQ, Local0, MTR, 0x0, 0x0), Local1)
            And(\_SB_.PCI0.ISA_.PIRC, 0x70, Local0)
            Or(Local1, Local0, \_SB_.PCI0.ISA_.PIRC)
        }
        Method(_STA) {
            If(LEqual(\_SB_.PCI0.ISA_.PIRC, 0x80)) {
                Return(0x9)
            }
            Else {
                Return(0xb)
            }
        }
    }
    Device(LNKD) {
        Name(_HID, 0x0f0cd041)
        Name(_UID, 0x4)
        Name(_PRS, Buffer(0x6) {0x23, 0x0, 0x2, 0x18, 0x79, 0x0 })
        Method(_DIS) {
            Or(\_SB_.PCI0.ISA_.PIRD, 0x80, \_SB_.PCI0.ISA_.PIRD)
        }
        Method(_CRS) {
            Name(BUFA, Buffer(0x6) {0x23, 0x0, 0x0, 0x18, 0x79, 0x0 })
            CreateWordField(BUFA, 0x1, IRA1)
            And(\_SB_.PCI0.ISA_.PIRD, 0x8f, Local0)
            If(LLess(Local0, 0x80)) {
                And(Local0, 0xf, Local0)
                Store(DerefOf(Index(IRQP, Local0, )), Local4)
                Store(Local4, IRA1)
            }
            Return(BUFA)
        }
        Method(_SRS, 1) {
            CreateWordField(Arg0, 0x1, IRA1)
            Store(IRA1, Local0)
            Store(Match(IRQP, MEQ, Local0, MTR, 0x0, 0x0), Local1)
            And(\_SB_.PCI0.ISA_.PIRD, 0x70, Local0)
            Or(Local1, Local0, \_SB_.PCI0.ISA_.PIRD)
        }
        Method(_STA) {
            If(LEqual(\_SB_.PCI0.ISA_.PIRD, 0x80)) {
                Return(0x9)
            }
            Else {
                Return(0xb)
            }
        }
    }
}
BOOT: Lenth=3D39, Revision=3D1, Checksum=3D84,
	OEMID=3DSONY, OEM Table ID=3DZ1, OEM Revision=3D0x20000511,
	Creator ID=3DPTL, Creator Revision=3D0x1

--2oS5YaxWCcQjTEyO--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001119042019.A19018>