On Thu, 2007-07-05 at 10:24 -0300, Henrique de Moraes Holschuh wrote:
> On Thu, 05 Jul 2007, Richard Hughes wrote:
> > On Wed, 2007-07-04 at 23:26 -0300, Henrique de Moraes Holschuh wrote:
> > > If it does nothing, that means the end of thinkpad-acpi brightness
> > > support for these thinkpads. Your only hope will be that the standard
> > > ACPI brightness interface works, or that someone reverse engineers
> > > whichever new interface Lenovo decided to use.
> >
> > If it's anything like my n100 (non-thinkpad lenovo) then you can write a
> > value to the ec address, but the value is only updated when you do a
> > manual brightness up on the keyboard.
>
> Argh.
Tell me about it.
> Does Windows have *any* way to set the brightness?
Nope. None whatsoever.
> If it does, it is a
> matter of someone that has such a thinkpad to reverse engineer and publish
> the *DOCS* on how to do it, clean-room style.
No, I've been through the ACPI with a fine tooth comb looking for
interesting stuff (all in my blog) but with no success. The CMOS
interface has completely changed.
I've attached the latest DSDT for your bedtime reading.
Richard.
/*
* Intel ACPI Component Architecture
* AML Disassembler version 20061109
*
* Disassembly of lenovo-36ww.dat, Sat Jun 16 21:13:32 2007
*
*
* Original Table Header:
* Signature "DSDT"
* Length 0x0000435A (17242)
* Revision 0x01
* OEM ID "LENOVO"
* OEM Table ID "TP-61 "
* OEM Revision 0x00000036 (54)
* Creator ID "INTL"
* Creator Revision 0x20050624 (537200164)
*/
DefinitionBlock ("lenovo-36ww.aml", "DSDT", 1, "LENOVO", "TP-61 ", 0x00000036)
{
External (PDC1)
External (PDC0)
External (CFGD)
Name (Z000, One)
Name (Z001, 0x02)
Name (Z002, 0x04)
Name (Z003, 0x08)
Name (Z004, Zero)
Name (Z005, 0x0F)
Name (Z006, 0x0D)
Name (Z007, 0x0B)
Name (Z008, 0x09)
Name (ECDY, 0x05)
OperationRegion (PRT0, SystemIO, 0x80, 0x04)
Field (PRT0, DWordAcc, Lock, Preserve)
{
P80H, 32
}
OperationRegion (IO_T, SystemIO, 0x0800, 0x10)
Field (IO_T, ByteAcc, NoLock, Preserve)
{
Offset (0x08),
TRP0, 8
}
OperationRegion (PMIO, SystemIO, 0x1000, 0x80)
Field (PMIO, ByteAcc, NoLock, Preserve)
{
PMS0, 8,
PMS1, 8,
PME0, 8,
PME1, 8,
Offset (0x2A),
, 10,
ACPW, 1,
Offset (0x42),
, 1,
GPEC, 1
}
OperationRegion (GPIO, SystemIO, 0x1180, 0x3C)
Field (GPIO, ByteAcc, NoLock, Preserve)
{
GU00, 8,
GU01, 8,
GU02, 8,
GU03, 8,
GIO0, 8,
GIO1, 8,
GIO2, 8,
GIO3, 8,
Offset (0x0C),
GL00, 8,
, 4,
GP12, 1,
Offset (0x0E),
GL02, 8,
GL03, 8,
Offset (0x18),
GB00, 8,
GB01, 8,
GB02, 8,
GB03, 8,
Offset (0x2C),
GIV0, 8,
, 5,
LPOL, 1,
Offset (0x2E),
GIV2, 8,
GIV3, 8,
GU04, 8,
GU05, 8,
GU06, 8,
GU07, 8,
GIO4, 8,
GIO5, 8,
GIO6, 8,
GIO7, 8,
, 7,
GP39, 1,
GL05, 8,
GL06, 8,
GL07, 8
}
OperationRegion (GNVS, SystemMemory, 0x5FE9ADBC, 0x0100)
Field (GNVS, AnyAcc, Lock, Preserve)
{
OSYS, 16,
SMIF, 8,
PRM0, 8,
PRM1, 8,
SCIF, 8,
PRM2, 8,
PRM3, 8,
LCKF, 8,
PRM4, 8,
PRM5, 8,
P80D, 32,
LIDS, 8,
PWRS, 8,
DBGS, 8,
LINX, 8,
Offset (0x14),
ACTT, 8,
PSVT, 8,
TC1V, 8,
TC2V, 8,
TSPV, 8,
CRTT, 8,
DTSE, 8,
DTS1, 8,
DTS2, 8,
Offset (0x1E),
BNUM, 8,
B0SC, 8,
B1SC, 8,
B2SC, 8,
B0SS, 8,
B1SS, 8,
B2SS, 8,
Offset (0x28),
APIC, 8,
MPEN, 8,
PPCS, 8,
PPCM, 8,
PCP0, 8,
PCP1, 8,
Offset (0x32),
NATP, 8,
CMAP, 8,
CMBP, 8,
LPTP, 8,
FDCP, 8,
CMCP, 8,
CIRP, 8,
Offset (0x3C),
IGDS, 8,
TLST, 8,
CADL, 8,
PADL, 8,
CSTE, 16,
NSTE, 16,
SSTE, 16,
NDID, 8,
DID1, 32,
DID2, 32,
DID3, 32,
DID4, 32,
DID5, 32,
Offset (0x67),
BLCS, 8,
BRTL, 8,
ALSE, 8,
ALAF, 8,
LLOW, 8,
LHIH, 8,
Offset (0x6E),
EMAE, 8,
EMAP, 16,
EMAL, 16,
Offset (0x74),
MEFE, 8,
Offset (0x78),
TPMP, 8,
TPME, 8,
Offset (0x82),
GTF0, 56,
GTF2, 56,
IDEM, 8,
Offset (0xC6),
MARK, 16,
BRAD, 8,
BTEN, 8,
VVEN, 8,
BGTL, 8,
TMEE, 1,
Offset (0xCD),
SCU0, 1,
SCU1, 1,
SCU2, 1,
SCU3, 1,
Offset (0xCE),
XKSP, 1,
XKIN, 1,
XKID, 1,
XKOK, 1,
Offset (0xCF),
BGU1, 8,
BST1, 8,
BFC1, 16,
WKLN, 8,
WAKF, 8,
DSMD, 8,
BAYS, 8,
HCPA, 1
}
OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000)
Field (RCRB, DWordAcc, Lock, Preserve)
{
Offset (0x1000),
Offset (0x3000),
Offset (0x3404),
HPAS, 2,
, 5,
HPAE, 1,
Offset (0x3418),
, 1,
PATD, 1,
SATD, 1,
SMBD, 1,
HDAD, 1,
A97D, 1,
Offset (0x341A),
RP1D, 1,
RP2D, 1,
RP3D, 1,
RP4D, 1,
RP5D, 1,
RP6D, 1
}
Mutex (MUTX, 0x00)
Name (_S0, Package (0x03)
{
Zero,
Zero,
Zero
})
Name (_S3, Package (0x03)
{
0x05,
0x05,
Zero
})
Name (_S4, Package (0x03)
{
0x06,
0x06,
Zero
})
Name (_S5, Package (0x03)
{
0x07,
0x07,
Zero
})
Scope (_PR)
{
Processor (CPU0, 0x00, 0x00001010, 0x06) {}
Processor (CPU1, 0x01, 0x00001010, 0x06) {}
}
Name (DSEN, One)
Name (ECON, Zero)
Name (GPIC, Zero)
Name (CTYP, Zero)
Name (L01C, Zero)
Name (VFN0, Zero)
Method (_PIC, 1, NotSerialized)
{
Store (Arg0, GPIC)
}
Method (_PTS, 1, NotSerialized)
{
Store (Zero, P80D)
Store (Arg0, Local0)
Add (Local0, 0x40, Local0)
P8XH (Zero, Local0)
Store (Zero, GPEC)
Store (Zero, PME0)
Store (Zero, PME1)
Store (0xFF, PMS0)
Store (0xFF, PMS1)
If (LEqual (Arg0, 0x03))
{
Store (One, \_SB.PCI0.LPCB.EC0.S3LD)
}
If (LEqual (Arg0, 0x04))
{
\_SB.PCI0.LPCB.PHSS (0x0E)
Store (One, \_SB.PCI0.LPCB.EC0.S4ST)
}
Store (Arg0, Local0)
Add (Local0, 0x50, Local0)
P8XH (Zero, Local0)
}
Method (_WAK, 1, NotSerialized)
{
P8XH (Zero, Zero)
If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04)))
{
If (And (CFGD, 0x01000000))
{
If (LAnd (And (CFGD, 0xF0), LAnd (LEqual (OSYS, 0x07D1),
LNot (And (PDC0, 0x10)))))
{
TRAP (0x3D)
}
}
}
Store (Arg0, Local0)
Add (Local0, 0xE0, Local0)
P8XH (Zero, Local0)
If (LEqual (Arg0, 0x03))
{
Notify (\_PR.CPU0, 0x81)
If (And (CFGD, 0x01000000))
{
Notify (\_PR.CPU1, 0x81)
}
TRAP (0x46)
TRAP (0x47)
Notify (\_TZ.TZ00, 0x80)
}
If (LEqual (Arg0, 0x04))
{
P8XH (Zero, 0x40)
\_SB.PCI0.LPCB.PHSS (0x0F)
Store (Zero, \_SB.PCI0.LPCB.EC0.S4ST)
Store (WAKF, Local0)
Store (Zero, WAKF)
And (Local0, 0x05, Local0)
If (LEqual (Local0, One))
{
P8XH (Zero, 0x41)
Notify (\_SB.PWRB, 0x02)
}
If (DTSE)
{
TRAP (0x47)
}
}
If (LAnd (LEqual (Arg0, 0x04), LEqual (OSYS, 0x07D2)))
{
If (And (CFGD, One))
{
If (LGreater (PPCS, Zero))
{
Subtract (PPCS, One, PPCS)
PNOT ()
Add (PPCS, One, PPCS)
PNOT ()
}
Else
{
Add (PPCS, One, PPCS)
PNOT ()
Subtract (PPCS, One, PPCS)
PNOT ()
}
}
}
Return (Package (0x02)
{
Zero,
Zero
})
}
Scope (_GPE)
{
Method (_L02, 0, NotSerialized)
{
Store (Zero, GPEC)
If (\_SB.PCI0.LPCB.ECOK ())
{
If (DTSE)
{
If (LGreaterEqual (DTS1, DTS2))
{
Store (DTS1, Local0)
}
Else
{
Store (DTS2, Local0)
}
Subtract (Local0, \_SB.PCI0.LPCB.EC0.CTMP, Local0)
If (LGreaterEqual (Local0, 0x32))
{
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS1)
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS2)
}
If (LGreaterEqual (DTS1, DTS2))
{
Store (DTS1, \_SB.PCI0.LPCB.EC0.DTMP)
}
Else
{
Store (DTS2, \_SB.PCI0.LPCB.EC0.DTMP)
}
}
Else
{
Store (\_SB.PCI0.LPCB.EC0.CTMP, \_SB.PCI0.LPCB.EC0.DTMP)
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS1)
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS2)
}
Notify (\_TZ.TZ00, 0x80)
}
Else
{
\_SB.PCI0.LPCB.PHSS (0x10)
Store (0x30, DTS1)
Store (0x30, DTS2)
}
}
Method (_L03, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB1, 0x02)
}
Method (_L04, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB2, 0x02)
}
Method (_L05, 0, NotSerialized)
{
Notify (\_SB.PCI0.HDEF, 0x02)
}
Method (_L08, 0, NotSerialized)
{
Notify (\_SB.PCI0.PCIB, 0x02)
}
Method (_L09, 0, NotSerialized)
{
Notify (\_SB.PCI0.PCIB, 0x02)
}
Method (_L0B, 0, NotSerialized)
{
Notify (\_SB.PCI0.PCIB, 0x02)
}
Method (_L0C, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB3, 0x02)
}
Method (_L0D, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB7, 0x02)
}
Method (_L0E, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB4, 0x02)
}
Method (_L1D, 0, NotSerialized)
{
If (LEqual (LPOL, One))
{
\_SB.PCI0.LPCB.PHSS (0x72)
}
Not (LPOL, LPOL)
Notify (\_SB.LID0, 0x80)
}
}
Method (BRTW, 1, Serialized)
{
Store (Arg0, Local1)
If (LEqual (ALSE, 0x02))
{
Store (Divide (Multiply (ALAF, Arg0), 0x64, ), Local1)
If (LGreater (Local1, 0x64))
{
Store (0x64, Local1)
}
}
Store (Divide (Multiply (0xFF, Local1), 0x64, ), Local0)
Store (Local0, PRM0)
If (LEqual (TRAP (0x12), Zero))
{
P8XH (0x02, Local0)
Store (Arg0, BRTL)
}
}
Method (GETB, 3, Serialized)
{
Multiply (Arg0, 0x08, Local0)
Multiply (Arg1, 0x08, Local1)
CreateField (Arg2, Local0, Local1, TBF3)
Return (TBF3)
}
Method (HKDS, 1, Serialized)
{
If (LEqual (Zero, DSEN))
{
If (LEqual (TRAP (Arg0), Zero))
{
If (LNotEqual (CADL, PADL))
{
Store (CADL, PADL)
If (LOr (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6)))
{
Notify (\_SB.PCI0, Zero)
}
Else
{
Notify (\_SB.PCI0.GFX0, Zero)
}
Sleep (0x02EE)
}
Notify (\_SB.PCI0.GFX0, 0x80)
}
}
If (LEqual (One, DSEN))
{
If (LEqual (TRAP (Increment (Arg0)), Zero))
{
Notify (\_SB.PCI0.GFX0, 0x81)
}
}
}
Method (LSDS, 1, Serialized)
{
If (Arg0)
{
HKDS (0x0C)
}
Else
{
HKDS (0x0E)
}
If (LNotEqual (DSEN, One))
{
Sleep (0x32)
While (LEqual (DSEN, 0x02))
{
Sleep (0x32)
}
}
}
Method (P8XH, 2, Serialized)
{
If (LEqual (Arg0, Zero))
{
Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)
}
If (LEqual (Arg0, One))
{
Store (Or (And (P80D, 0xFFFF00FF), ShiftLeft (Arg1, 0x08)
), P80D)
}
If (LEqual (Arg0, 0x02))
{
Store (Or (And (P80D, 0xFF00FFFF), ShiftLeft (Arg1, 0x10)
), P80D)
}
If (LEqual (Arg0, 0x03))
{
Store (Or (And (P80D, 0x00FFFFFF), ShiftLeft (Arg1, 0x18)
), P80D)
}
Store (P80D, P80H)
}
Method (PNOT, 0, Serialized)
{
If (MPEN)
{
If (And (PDC0, 0x08))
{
Notify (\_PR.CPU0, 0x80)
If (And (PDC0, 0x10))
{
Sleep (0x64)
Notify (\_PR.CPU0, 0x81)
}
}
If (And (PDC1, 0x08))
{
Notify (\_PR.CPU1, 0x80)
If (And (PDC1, 0x10))
{
Sleep (0x64)
Notify (\_PR.CPU1, 0x81)
}
}
}
Else
{
Notify (\_PR.CPU0, 0x80)
Sleep (0x64)
Notify (\_PR.CPU0, 0x81)
}
}
Method (TRAP, 1, Serialized)
{
Store (Arg0, SMIF)
Store (Zero, TRP0)
Return (SMIF)
}
Method (GETP, 1, Serialized)
{
If (LEqual (And (Arg0, 0x09), Zero))
{
Return (Ones)
}
If (LEqual (And (Arg0, 0x09), 0x08))
{
Return (0x0384)
}
ShiftRight (And (Arg0, 0x0300), 0x08, Local0)
ShiftRight (And (Arg0, 0x3000), 0x0C, Local1)
Return (Multiply (0x1E, Subtract (0x09, Add (Local0, Local1))
))
}
Method (GDMA, 5, Serialized)
{
If (Arg0)
{
If (LAnd (Arg1, Arg4))
{
Return (0x14)
}
If (LAnd (Arg2, Arg4))
{
Return (Multiply (Subtract (0x04, Arg3), 0x0F))
}
Return (Multiply (Subtract (0x04, Arg3), 0x1E))
}
Return (Ones)
}
Method (GETT, 1, Serialized)
{
Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02
), 0x03), And (Arg0, 0x03)))))
}
Method (GETF, 3, Serialized)
{
Name (TMPF, Zero)
If (Arg0)
{
Or (TMPF, One, TMPF)
}
If (And (Arg2, 0x02))
{
Or (TMPF, 0x02, TMPF)
}
If (Arg1)
{
Or (TMPF, 0x04, TMPF)
}
If (And (Arg2, 0x20))
{
Or (TMPF, 0x08, TMPF)
}
If (And (Arg2, 0x4000))
{
Or (TMPF, 0x10, TMPF)
}
Return (TMPF)
}
Method (SETP, 3, Serialized)
{
If (LGreater (Arg0, 0xF0))
{
Return (0x08)
}
Else
{
If (And (Arg1, 0x02))
{
If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
{
Return (0x2301)
}
If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
{
Return (0x2101)
}
}
Return (0x1001)
}
}
Method (SDMA, 1, Serialized)
{
If (LLessEqual (Arg0, 0x14))
{
Return (One)
}
If (LLessEqual (Arg0, 0x1E))
{
Return (0x02)
}
If (LLessEqual (Arg0, 0x2D))
{
Return (One)
}
If (LLessEqual (Arg0, 0x3C))
{
Return (0x02)
}
If (LLessEqual (Arg0, 0x5A))
{
Return (One)
}
Return (Zero)
}
Method (SETT, 3, Serialized)
{
If (And (Arg1, 0x02))
{
If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02)))
{
Return (0x0B)
}
If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One)))
{
Return (0x09)
}
}
Return (0x04)
}
Scope (_TZ)
{
ThermalZone (TZ00)
{
Method (_CRT, 0, Serialized)
{
Multiply (0x66, 0x0A, Local0)
Add (Local0, 0x0AAC, Local0)
Return (Local0)
}
Method (_TMP, 0, Serialized)
{
If (\_SB.PCI0.LPCB.ECOK ())
{
If (LGreaterEqual (DTS1, DTS2))
{
Store (DTS1, Local0)
}
Else
{
Store (DTS2, Local0)
}
Subtract (Local0, \_SB.PCI0.LPCB.EC0.CTMP, Local0)
If (LGreaterEqual (Local0, 0x32))
{
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS1)
Store (\_SB.PCI0.LPCB.EC0.CTMP, DTS2)
}
Store (DTS2, Local1)
If (LGreaterEqual (DTS1, DTS2))
{
Store (DTS1, Local1)
}
Multiply (Local1, 0x0A, Local0)
Add (Local0, 0x0AAC, Local0)
Return (Local0)
}
Else
{
Store (0x0BB8, Local0)
Return (Local0)
}
}
Method (_AC0, 0, Serialized)
{
Return (Add (0x0AAC, Multiply (ACTT, 0x0A)))
}
Method (_SCP, 1, Serialized)
{
Store (Arg0, CTYP)
}
Method (_PSL, 0, Serialized)
{
If (MPEN)
{
Return (Package (0x02)
{
\_PR.CPU0,
\_PR.CPU1
})
}
Return (Package (0x01)
{
\_PR.CPU0
})
}
Method (_PSV, 0, Serialized)
{
Return (Add (0x0AAC, Multiply (PSVT, 0x0A)))
}
Method (_TC1, 0, Serialized)
{
Return (TC1V)
}
Method (_TC2, 0, Serialized)
{
Return (TC2V)
}
Method (_TSP, 0, Serialized)
{
Return (TSPV)
}
}
}
Name (FWSO, "FWSO")
Name (_PSC, Zero)
Method (_PS0, 0, NotSerialized)
{
Store (_PSC, Local0)
Store (Zero, _PSC)
}
Method (_PS3, 0, NotSerialized)
{
Store (0x03, _PSC)
}
Scope (_SB)
{
Device (LID0)
{
Name (_HID, EisaId ("PNP0C0D"))
Method (_LID, 0, NotSerialized)
{
Return (LPOL)
}
}
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
}
Method (_INI, 0, NotSerialized)
{
If (DTSE)
{
TRAP (0x47)
}
Store (0x07D0, OSYS)
If (CondRefOf (_OSI, Local0))
{
If (_OSI ("Linux"))
{
Store (One, LINX)
Store (0x03E8, OSYS)
}
If (_OSI ("Windows 2001"))
{
Store (0x07D1, OSYS)
}
If (_OSI ("Windows 2001 SP1"))
{
Store (0x07D1, OSYS)
}
If (_OSI ("Windows 2001 SP2"))
{
Store (0x07D2, OSYS)
}
If (_OSI ("Windows 2006"))
{
Store (0x07D6, OSYS)
}
If (LAnd (MPEN, LEqual (OSYS, 0x07D1)))
{
TRAP (0x3D)
}
}
If (LGreaterEqual (OSYS, 0x07D0))
{
Store (One, PRM0)
If (LGreaterEqual (OSYS, 0x07D1))
{
Store (0x03, PRM0)
}
}
Else
{
Store (Zero, PRM0)
}
TRAP (0x32)
}
Device (PCI0)
{
Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}
Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, 0x030AD041)
Name (_ADR, Zero)
Name (_BBN, Zero)
OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
Field (HBUS, DWordAcc, NoLock, Preserve)
{
Offset (0x50),
, 4,
PM0H, 2,
Offset (0x51),
PM1L, 2,
, 2,
PM1H, 2,
Offset (0x52),
PM2L, 2,
, 2,
PM2H, 2,
Offset (0x53),
PM3L, 2,
, 2,
PM3H, 2,
Offset (0x54),
PM4L, 2,
, 2,
PM4H, 2,
Offset (0x55),
PM5L, 2,
, 2,
PM5H, 2,
Offset (0x56),
PM6L, 2,
, 2,
PM6H, 2,
Offset (0x57),
, 7,
HENA, 1,
Offset (0x5C),
, 3,
TOUD, 5
}
Name (BUF0, ResourceTemplate ()
{
WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
0x0000, // Granularity
0x0000, // Range Minimum
0x00FF, // Range Maximum
0x0000, // Translation Offset
0x0100, // Length
,, )
DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Granularity
0x00000000, // Range Minimum
0x00000CF7, // Range Maximum
0x00000000, // Translation Offset
0x00000CF8, // Length
,, , TypeStatic)
IO (Decode16,
0x0CF8, // Range Minimum
0x0CF8, // Range Maximum
0x01, // Alignment
0x08, // Length
)
DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Granularity
0x00000D00, // Range Minimum
0x0000FFFF, // Range Maximum
0x00000000, // Translation Offset
0x0000F300, // Length
,, , TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000A0000, // Range Minimum
0x000BFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00020000, // Length
,, , AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C0000, // Range Minimum
0x000C3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y00, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C4000, // Range Minimum
0x000C7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y01, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000C8000, // Range Minimum
0x000CBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y02, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000CC000, // Range Minimum
0x000CFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y03, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D0000, // Range Minimum
0x000D3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y04, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D4000, // Range Minimum
0x000D7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y05, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000D8000, // Range Minimum
0x000DBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y06, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000DC000, // Range Minimum
0x000DFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y07, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E0000, // Range Minimum
0x000E3FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y08, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E4000, // Range Minimum
0x000E7FFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y09, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000E8000, // Range Minimum
0x000EBFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y0A, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000EC000, // Range Minimum
0x000EFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00004000, // Length
,, _Y0B, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x000F0000, // Range Minimum
0x000FFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00010000, // Length
,, _Y0C, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0x00000000, // Range Minimum
0xFEBFFFFF, // Range Maximum
0x00000000, // Translation Offset
0x00000000, // Length
,, _Y0E, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Granularity
0xFED40000, // Range Minimum
0xFED44FFF, // Range Maximum
0x00000000, // Translation Offset
0x00000000, // Length
,, _Y0D, AddressRangeMemory, TypeStatic)
})
Method (_CRS, 0, Serialized)
{
If (PM1L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y00._LEN, C0LN)
Store (Zero, C0LN)
}
If (LEqual (PM1L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y00._RW, C0RW)
Store (Zero, C0RW)
}
If (PM1H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y01._LEN, C4LN)
Store (Zero, C4LN)
}
If (LEqual (PM1H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y01._RW, C4RW)
Store (Zero, C4RW)
}
If (PM2L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y02._LEN, C8LN)
Store (Zero, C8LN)
}
If (LEqual (PM2L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y02._RW, C8RW)
Store (Zero, C8RW)
}
If (PM2H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y03._LEN, CCLN)
Store (Zero, CCLN)
}
If (LEqual (PM2H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y03._RW, CCRW)
Store (Zero, CCRW)
}
If (PM3L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y04._LEN, D0LN)
Store (Zero, D0LN)
}
If (LEqual (PM3L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y04._RW, D0RW)
Store (Zero, D0RW)
}
If (PM3H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y05._LEN, D4LN)
Store (Zero, D4LN)
}
If (LEqual (PM3H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y05._RW, D4RW)
Store (Zero, D4RW)
}
If (PM4L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y06._LEN, D8LN)
Store (Zero, D8LN)
}
If (LEqual (PM4L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y06._RW, D8RW)
Store (Zero, D8RW)
}
If (PM4H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y07._LEN, DCLN)
Store (Zero, DCLN)
}
If (LEqual (PM4H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y07._RW, DCRW)
Store (Zero, DCRW)
}
If (PM5L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y08._LEN, E0LN)
Store (Zero, E0LN)
}
If (LEqual (PM5L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y08._RW, E0RW)
Store (Zero, E0RW)
}
If (PM5H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y09._LEN, E4LN)
Store (Zero, E4LN)
}
If (LEqual (PM5H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y09._RW, E4RW)
Store (Zero, E4RW)
}
If (PM6L)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0A._LEN, E8LN)
Store (Zero, E8LN)
}
If (LEqual (PM6L, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0A._RW, E8RW)
Store (Zero, E8RW)
}
If (PM6H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0B._LEN, ECLN)
Store (Zero, ECLN)
}
If (LEqual (PM6H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0B._RW, ECRW)
Store (Zero, ECRW)
}
If (PM0H)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0C._LEN, F0LN)
Store (Zero, F0LN)
}
If (LEqual (PM0H, One))
{
CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, F0RW)
Store (Zero, F0RW)
}
If (TPMP)
{
CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, TPML)
Store (0x5000, TPML)
}
CreateDWordField (BUF0, \_SB.PCI0._Y0E._MIN, M1MN)
CreateDWordField (BUF0, \_SB.PCI0._Y0E._MAX, M1MX)
CreateDWordField (BUF0, \_SB.PCI0._Y0E._LEN, M1LN)
ShiftLeft (TOUD, 0x1B, M1MN)
Add (Subtract (M1MX, M1MN), One, M1LN)
Return (BUF0)
}
Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x11)
{
Package (0x04)
{
0x0001FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0002FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0007FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x001BFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x001CFFFF,
Zero,
Zero,
0x11
},
Package (0x04)
{
0x001CFFFF,
One,
Zero,
0x10
},
Package (0x04)
{
0x001CFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x001CFFFF,
0x03,
Zero,
0x13
},
Package (0x04)
{
0x001DFFFF,
Zero,
Zero,
0x17
},
Package (0x04)
{
0x001DFFFF,
One,
Zero,
0x13
},
Package (0x04)
{
0x001DFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0x001DFFFF,
0x03,
Zero,
0x10
},
Package (0x04)
{
0x001EFFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x001EFFFF,
One,
Zero,
0x14
},
Package (0x04)
{
0x001FFFFF,
Zero,
Zero,
0x12
},
Package (0x04)
{
0x001FFFFF,
One,
Zero,
0x13
},
Package (0x04)
{
0x001FFFFF,
0x03,
Zero,
0x10
}
})
}
Else
{
Return (Package (0x11)
{
Package (0x04)
{
0x0001FFFF,
Zero,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x0002FFFF,
Zero,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x0007FFFF,
Zero,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x001BFFFF,
Zero,
^LPCB.LNKG,
Zero
},
Package (0x04)
{
0x001CFFFF,
Zero,
^LPCB.LNKB,
Zero
},
Package (0x04)
{
0x001CFFFF,
One,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x001CFFFF,
0x02,
^LPCB.LNKC,
Zero
},
Package (0x04)
{
0x001CFFFF,
0x03,
^LPCB.LNKD,
Zero
},
Package (0x04)
{
0x001DFFFF,
Zero,
^LPCB.LNKH,
Zero
},
Package (0x04)
{
0x001DFFFF,
One,
^LPCB.LNKD,
Zero
},
Package (0x04)
{
0x001DFFFF,
0x02,
^LPCB.LNKC,
Zero
},
Package (0x04)
{
0x001DFFFF,
0x03,
^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x001EFFFF,
Zero,
^LPCB.LNKG,
Zero
},
Package (0x04)
{
0x001EFFFF,
One,
^LPCB.LNKE,
Zero
},
Package (0x04)
{
0x001FFFFF,
Zero,
^LPCB.LNKC,
Zero
},
Package (0x04)
{
0x001FFFFF,
One,
^LPCB.LNKD,
Zero
},
Package (0x04)
{
0x001FFFFF,
0x03,
^LPCB.LNKA,
Zero
}
})
}
}
Device (PDRC)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, One)
Name (BUF0, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0xE0000000, // Address Base
0x10000000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED14000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED18000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED19000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED1C000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED20000, // Address Base
0x00020000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED40000, // Address Base
0x00005000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED45000, // Address Base
0x0004B000, // Address Length
)
})
Name (BUF1, ResourceTemplate ()
{
Memory32Fixed (ReadWrite,
0xE0000000, // Address Base
0x10000000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED14000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED18000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED19000, // Address Base
0x00001000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED1C000, // Address Base
0x00004000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED20000, // Address Base
0x00020000, // Address Length
)
Memory32Fixed (ReadWrite,
0xFED45000, // Address Base
0x0004B000, // Address Length
)
})
Method (_CRS, 0, Serialized)
{
If (LNot (TPMP))
{
Return (BUF0)
}
Return (BUF1)
}
}
Device (PEGP)
{
Name (_ADR, 0x00010000)
Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
^^LPCB.LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
^^LPCB.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
^^LPCB.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
^^LPCB.LNKD,
Zero
}
})
}
}
Device (VGA)
{
Name (_ADR, Zero)
Name (SWIT, One)
Name (CRTA, One)
Name (LCDA, One)
Name (TVAA, One)
Name (VLDF, One)
OperationRegion (VIDS, PCI_Config, Zero, 0xC8)
Field (VIDS, DWordAcc, NoLock, Preserve)
{
VDID, 32
}
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Name (_PSC, Zero)
Method (_PS0, 0, NotSerialized)
{
Store (Zero, _PSC)
}
Method (_PS1, 0, NotSerialized)
{
Store (One, _PSC)
}
Method (_PS3, 0, NotSerialized)
{
Store (0x03, _PSC)
}
Method (_DOS, 1, NotSerialized)
{
Store (And (Arg0, 0x03), SWIT)
}
Method (_DOD, 0, NotSerialized)
{
Return (Package (0x03)
{
0x00010100,
0x00010110,
0x0200
})
}
Device (CRT)
{
Method (_ADR, 0, NotSerialized)
{
Return (0x0100)
}
Method (_DCS, 0, NotSerialized)
{
^^^^LPCB.PHSS (0x0C)
Store (CADL, Local0)
Store (CSTE, Local1)
And (Local0, 0x02, Local0)
And (Local1, 0x02, Local1)
If (Local0)
{
Store (One, CRTA)
}
Else
{
Store (Zero, CRTA)
}
If (CRTA)
{
If (LEqual (Local1, 0x02))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Else
{
If (LEqual (Local1, 0x02))
{
Return (0x0F)
}
Else
{
Return (0x0D)
}
}
}
Method (_DGS, 0, NotSerialized)
{
If (CRTA)
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (LCD)
{
Method (_ADR, 0, NotSerialized)
{
Return (0x0110)
}
Method (_DCS, 0, NotSerialized)
{
^^^^LPCB.PHSS (0x0C)
Store (CADL, Local0)
Store (CSTE, Local1)
And (Local0, One, Local0)
And (Local1, One, Local1)
If (Local0)
{
Store (One, LCDA)
}
Else
{
Store (Zero, LCDA)
}
If (LCDA)
{
If (LEqual (Local1, One))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Else
{
If (LEqual (Local1, One))
{
Return (0x0F)
}
Else
{
Return (0x0D)
}
}
}
Method (_DGS, 0, NotSerialized)
{
If (LCDA)
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
}
}
Device (TV)
{
Method (_ADR, 0, NotSerialized)
{
Return (0x0200)
}
Method (_DCS, 0, NotSerialized)
{
^^^^LPCB.PHSS (0x0C)
Store (CADL, Local0)
Store (CSTE, Local1)
And (Local0, 0x04, Local0)
And (Local1, 0x04, Local1)
If (Local0)
{
Store (One, TVAA)
}
Else
{
Store (Zero, TVAA)
}
If (TVAA)
{
If (LEqual (Local1, 0x04))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Else
{
If (LEqual (Local1, 0x04))
{
Return (0x0F)
}
Else
{
Return (0x0D)
}
}
}
Method (_DGS, 0, NotSerialized)
{
If (TVAA)
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
}
}
Method (DSSW, 0, NotSerialized)
{
If (LEqual (SWIT, Zero))
{
^^^LPCB.PHSS (0x0C)
Store (CADL, Local0)
Store (CSTE, Local1)
If (LGreater (Local1, One))
{
And (Local0, Local1, VLDF)
And (VLDF, 0xFE, VLDF)
}
If (VLDF)
{
If (LEqual (Local0, 0x03))
{
If (LEqual (Local1, One))
{
STBL (0x02)
}
If (LEqual (Local1, 0x03))
{
STBL (One)
}
If (LEqual (Local1, 0x02))
{
STBL (0x04)
}
}
If (LEqual (Local0, 0x05))
{
If (LEqual (Local1, One))
{
STBL (0x06)
}
If (LEqual (Local1, 0x05))
{
STBL (0x03)
}
If (LEqual (Local1, 0x04))
{
STBL (One)
}
}
If (LEqual (Local0, 0x07))
{
If (LEqual (Local1, One))
{
STBL (0x02)
}
If (LEqual (Local1, 0x03))
{
STBL (0x06)
}
If (LEqual (Local1, 0x02))
{
STBL (0x04)
}
If (LEqual (Local1, 0x05))
{
STBL (0x03)
}
If (LEqual (Local1, 0x04))
{
STBL (One)
}
}
}
Else
{
Store (One, VLDF)
STBL (One)
}
}
Else
{
If (LEqual (SWIT, One))
{
^^^LPCB.PHSS (One)
}
}
}
Method (STBL, 1, NotSerialized)
{
If (LEqual (Arg0, One))
{
Store (Zero, CRTA)
Store (One, LCDA)
Store (Zero, TVAA)
}
If (LEqual (Arg0, 0x02))
{
Store (One, CRTA)
Store (Zero, LCDA)
Store (Zero, TVAA)
}
If (LEqual (Arg0, 0x03))
{
Store (Zero, CRTA)
Store (Zero, LCDA)
Store (One, TVAA)
}
If (LEqual (Arg0, 0x04))
{
Store (One, CRTA)
Store (One, LCDA)
Store (Zero, TVAA)
}
If (LEqual (Arg0, 0x05))
{
Store (One, CRTA)
Store (Zero, LCDA)
Store (One, TVAA)
}
If (LEqual (Arg0, 0x06))
{
Store (Zero, CRTA)
Store (One, LCDA)
Store (One, TVAA)
}
If (LEqual (Arg0, 0x07))
{
Store (One, CRTA)
Store (One, LCDA)
Store (One, TVAA)
}
Notify (VGA, 0x80)
}
}
}
Device (GFX0)
{
Name (_ADR, 0x00020000)
Method (_DOS, 1, NotSerialized)
{
Store (And (Arg0, 0x03), DSEN)
}
Method (_DOD, 0, NotSerialized)
{
Return (Package (0x03)
{
0x00010100,
0x00010400,
0x00010200
})
}
Device (LCD)
{
Method (_ADR, 0, NotSerialized)
{
Return (0x0400)
}
Method (_DCS, 0, NotSerialized)
{
^^^LPCB.PHSS (0x0C)
If (And (CSTE, 0x0808))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x0808))
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
Method (_BCL, 0, NotSerialized)
{
Return (Package (0x08)
{
0x50,
0x3C,
Zero,
0x14,
0x28,
0x3C,
0x50,
0x64
})
}
Method (_BCM, 1, NotSerialized)
{
Store (Arg0, P80H)
}
}
Device (CRT1)
{
Name (_ADR, 0x0100)
Method (_DCS, 0, NotSerialized)
{
^^^LPCB.PHSS (0x0C)
If (And (CSTE, 0x0101))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x0101))
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}
Device (DTV1)
{
Name (_ADR, 0x0200)
Method (_DCS, 0, NotSerialized)
{
^^^LPCB.PHSS (0x0C)
If (And (CSTE, 0x0202))
{
Return (0x1F)
}
Else
{
Return (0x1D)
}
}
Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x0202))
{
Return (One)
}
Else
{
Return (Zero)
}
}
Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}
Method (DSSW, 0, NotSerialized)
{
^^LPCB.PHSS (0x0C)
DSSM ()
}
Method (DSSM, 0, NotSerialized)
{
If (LEqual (Zero, DSEN))
{
Store (CADL, PADL)
If (LGreaterEqual (OSYS, 0x07D1))
{
Notify (PCI0, Zero)
}
Else
{
Notify (GFX0, Zero)
}
Sleep (0x03E8)
Notify (GFX0, 0x80)
}
If (LEqual (One, DSEN))
{
^^LPCB.PHSS (One)
Notify (GFX0, 0x81)
}
}
Method (STBL, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0x07), Zero))
{
Store (0x0800, NSTE)
}
Else
{
If (LEqual (Arg0, One))
{
Store (0x0800, NSTE)
}
If (LEqual (Arg0, 0x02))
{
Store (One, NSTE)
}
If (LEqual (Arg0, 0x03))
{
Store (0x0801, NSTE)
}
If (LEqual (Arg0, 0x04))
{
Store (0x02, NSTE)
}
If (LEqual (Arg0, 0x05))
{
Store (0x0802, NSTE)
}
If (LEqual (Arg0, 0x06))
{
Store (0x03, NSTE)
}
If (LEqual (Arg0, 0x07))
{
Store (0x0803, NSTE)
}
}
DSSM ()
}
}
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Name (_PRW, Package (0x02)
{
0x05,
0x04
})
}
Device (RP01)
{
Name (_ADR, 0x001C0000)
OperationRegion (P1CS, PCI_Config, 0x40, 0x0100)
Field (P1CS, AnyAcc, NoLock, WriteAsZeros)
{
Offset (0x1A),
ABP1, 1,
, 2,
PDC1, 1,
, 2,
PDS1, 1,
Offset (0x20),
Offset (0x22),
PSP1, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS1)
{
Name (_ADR, Zero)
OperationRegion (P1FG, PCI_Config, Zero, 0x08)
Field (P1FG, DWordAcc, NoLock, Preserve)
{
P1ID, 32
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (P1ID, Ones))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
Method (_PRW, 0, NotSerialized)
{
If (WKLN)
{
Return (Package (0x02)
{
0x09,
0x05
})
}
Else
{
Return (Package (0x02)
{
0x09,
Zero
})
}
}
}
Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x13
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
^^LPCB.LNKA,
Zero
},
Package (0x04)
{
0xFFFF,
One,
^^LPCB.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
^^LPCB.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
^^LPCB.LNKD,
Zero
}
})
}
}
}
Device (RP02)
{
Name (_ADR, 0x001C0001)
OperationRegion (P2CS, PCI_Config, 0x40, 0x0100)
Field (P2CS, AnyAcc, NoLock, WriteAsZeros)
{
Offset (0x1A),
ABP2, 1,
, 2,
PDC2, 1,
, 2,
PDS2, 1,
Offset (0x20),
Offset (0x22),
PSP2, 1,
Offset (0x9C),
, 30,
HPCS, 1,
PMCS, 1
}
Device (PXS2)
{
Name (_ADR, Zero)
OperationRegion (P2FG, PCI_Config, Zero, 0x08)
Field (P2FG, DWordAcc, NoLock, Preserve)
{
P2ID, 32
}
Method (_STA, 0, NotSerialized)
{
If (LEqual (P2ID, Ones))
{
Return (Zero)
}
Else
{
Return (0x0F)
}
}
}
Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
Zero,
0x11
},
Package (0x04)
{
0xFFFF,
One,
Zero,
0x12
},
Package (0x04)
{
0xFFFF,
0x02,
Zero,
0x13
},
Package (0x04)
{
0xFFFF,
0x03,
Zero,
0x10
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0xFFFF,
Zero,
^^LPCB.LNKB,
Zero
},
Package (0x04)
{
0xFFFF,
One,
^^LPCB.LNKC,
Zero
},
Package (0x04)
{
0xFFFF,
0x02,
^^LPCB.LNKD,
Zero
},
Package (0x04)
{
0xFFFF,
0x03,
^^LPCB.LNKA,
Zero
}
})
}
}
}
Device (USB1)
{
Name (_ADR, 0x001D0000)
OperationRegion (U1CS, PCI_Config, 0xC4, 0x04)
Field (U1CS, DWordAcc, NoLock, Preserve)
{
U1EN, 2
}
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U1EN)
}
Else
{
Store (Zero, U1EN)
}
}
Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}
Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}
}
Device (USB2)
{
Name (_ADR, 0x001D0001)
OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
Field (U2CS, DWordAcc, NoLock, Preserve)
{
U2EN, 2
}
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U2EN)
}
Else
{
Store (Zero, U2EN)
}
}
Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}
Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}
}
Device (USB3)
{
Name (_ADR, 0x001D0002)
OperationRegion (U2CS, PCI_Config, 0xC4, 0x04)
Field (U2CS, DWordAcc, NoLock, Preserve)
{
U3EN, 2
}
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U3EN)
}
Else
{
Store (Zero, U3EN)
}
}
Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}
Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}
}
Device (USB4)
{
Name (_ADR, 0x001D0003)
OperationRegion (U4CS, PCI_Config, 0xC4, 0x04)
Field (U4CS, DWordAcc, NoLock, Preserve)
{
U4EN, 2
}
Method (_PSW, 1, NotSerialized)
{
If (Arg0)
{
Store (0x03, U4EN)
}
Else
{
Store (Zero, U4EN)
}
}
Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}
Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}
}
Device (USB7)
{
Name (_ADR, 0x001D0007)
}
Device (PCIB)
{
Name (_ADR, 0x001E0000)
Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x04)
{
Package (0x04)
{
0x0001FFFF,
Zero,
Zero,
0x15
},
Package (0x04)
{
0x0004FFFF,
Zero,
Zero,
0x10
},
Package (0x04)
{
0x0006FFFF,
Zero,
Zero,
0x16
},
Package (0x04)
{
0x0006FFFF,
One,
Zero,
0x17
}
})
}
Else
{
Return (Package (0x04)
{
Package (0x04)
{
0x0001FFFF,
Zero,
^^LPCB.LNKF,
Zero
},
Package (0x04)
{
0x0004FFFF,
Zero,
^^LPCB.LNKA,
Zero
},
Package (0x04)
{
0x0006FFFF,
Zero,
^^LPCB.LNKG,
Zero
},
Package (0x04)
{
0x0006FFFF,
One,
^^LPCB.LNKH,
Zero
}
})
}
}
}
Device (LPCB)
{
Name (_ADR, 0x001F0000)
OperationRegion (LPC0, PCI_Config, 0x40, 0xC0)
Field (LPC0, AnyAcc, NoLock, Preserve)
{
Offset (0x20),
PARC, 8,
PBRC, 8,
PCRC, 8,
PDRC, 8,
Offset (0x28),
PERC, 8,
PFRC, 8,
PGRC, 8,
PHRC, 8,
Offset (0x40),
CMAR, 3,
, 1,
CMBR, 3,
Offset (0x41),
LPTR, 2,
Offset (0x42),
CMAD, 1,
CMBD, 1,
LPTD, 1,
FDDD, 1,
Offset (0x48),
IOR2, 16,
, 2,
LGRM, 6
}
Device (ACAD)
{
Name (_HID, "ACPI0003")
Name (_PCL, Package (0x01)
{
_SB
})
Method (_PSR, 0, NotSerialized)
{
If (ECOK ())
{
Return (^^EC0.ADPT)
}
Else
{
Return (One)
}
}
}
Device (LNKA)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, One)
Method (_DIS, 0, Serialized)
{
Store (0x80, PARC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,10,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLA, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLA, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PARC, 0x0F), IRQ0)
Return (RTLA)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PARC)
}
Method (_STA, 0, Serialized)
{
If (And (PARC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKB)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x02)
Method (_DIS, 0, Serialized)
{
Store (0x80, PBRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,11,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLB, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLB, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PBRC, 0x0F), IRQ0)
Return (RTLB)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PBRC)
}
Method (_STA, 0, Serialized)
{
If (And (PBRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKC)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x03)
Method (_DIS, 0, Serialized)
{
Store (0x80, PCRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,10,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLC, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLC, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PCRC, 0x0F), IRQ0)
Return (RTLC)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PCRC)
}
Method (_STA, 0, Serialized)
{
If (And (PCRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKD)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x04)
Method (_DIS, 0, Serialized)
{
Store (0x80, PDRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,11,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLD, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLD, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PDRC, 0x0F), IRQ0)
Return (RTLD)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PDRC)
}
Method (_STA, 0, Serialized)
{
If (And (PDRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKE)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x05)
Method (_DIS, 0, Serialized)
{
Store (0x80, PERC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,10,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLE, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLE, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PERC, 0x0F), IRQ0)
Return (RTLE)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PERC)
}
Method (_STA, 0, Serialized)
{
If (And (PERC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKF)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x06)
Method (_DIS, 0, Serialized)
{
Store (0x80, PFRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,11,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLF, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLF, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PFRC, 0x0F), IRQ0)
Return (RTLF)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PFRC)
}
Method (_STA, 0, Serialized)
{
If (And (PFRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKG)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x07)
Method (_DIS, 0, Serialized)
{
Store (0x80, PGRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,10,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLG, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLG, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PGRC, 0x0F), IRQ0)
Return (RTLG)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PGRC)
}
Method (_STA, 0, Serialized)
{
If (And (PGRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Device (LNKH)
{
Name (_HID, EisaId ("PNP0C0F"))
Name (_UID, 0x08)
Method (_DIS, 0, Serialized)
{
Store (0x80, PHRC)
}
Name (_PRS, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{1,3,4,5,6,7,11,12,14,15}
})
Method (_CRS, 0, Serialized)
{
Name (RTLH, ResourceTemplate ()
{
IRQ (Level, ActiveLow, Shared, )
{}
})
CreateWordField (RTLH, One, IRQ0)
Store (Zero, IRQ0)
ShiftLeft (One, And (PHRC, 0x0F), IRQ0)
Return (RTLH)
}
Method (_SRS, 1, Serialized)
{
CreateWordField (Arg0, One, IRQ0)
FindSetRightBit (IRQ0, Local0)
Decrement (Local0)
Store (Local0, PHRC)
}
Method (_STA, 0, Serialized)
{
If (And (PHRC, 0x80))
{
Return (0x09)
}
Else
{
Return (0x0B)
}
}
}
Method (ECOK, 0, NotSerialized)
{
If (LEqual (^EC0.Z009, One))
{
Return (One)
}
Else
{
Return (Zero)
}
}
Device (EC0)
{
Name (_HID, EisaId ("PNP0C09"))
Name (_GPE, 0x19)
Name (Z009, Zero)
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0062, // Range Minimum
0x0062, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0066, // Range Minimum
0x0066, // Range Maximum
0x01, // Alignment
0x01, // Length
)
})
Method (_REG, 2, NotSerialized)
{
If (LEqual (Arg0, 0x03))
{
Store (Arg1, Z009)
}
}
OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF)
Field (ERAM, ByteAcc, Lock, Preserve)
{
Offset (0x60),
SMPR, 8,
SMST, 8,
SMAD, 8,
SMCM, 8,
SMD0, 256,
BCNT, 8,
SMAA, 24,
Offset (0x90),
CHGM, 16,
CHGS, 16,
ENID, 8,
ENIB, 8,
ENDD, 8,
CHGV, 8,
CHGA, 16,
BAL0, 1,
BAL1, 1,
BAL2, 1,
BAL3, 1,
BBC0, 1,
BBC1, 1,
BBC2, 1,
BBC3, 1,
Offset (0x9C),
PHDD, 1,
IFDD, 1,
IODD, 1,
SHDD, 1,
S120, 1,
EFDD, 1,
CRTD, 1,
SPWR, 1,
SBTN, 1,
VIDO, 1,
VOLD, 1,
VOLU, 1,
MUTE, 1,
CONT, 1,
BRGT, 1,
HBTN, 1,
S4ST, 1,
SKEY, 1,
BKEY, 1,
TOUP, 1,
FNBN, 1,
LIDF, 1,
DIGM, 1,
CDLK, 1,
Offset (0xA0),
DKSP, 1,
DKIN, 1,
DKID, 1,
DKOK, 1,
Offset (0xA1),
DKPW, 1,
Offset (0xA2),
BTNS, 8,
S1LD, 1,
S3LD, 1,
VGAQ, 1,
PCMQ, 1,
PCMR, 1,
ADPT, 1,
SLLS, 1,
SYS7, 1,
PWAK, 1,
MWAK, 1,
LWAK, 1,
Offset (0xA5),
Offset (0xAA),
TCNL, 8,
TMPI, 8,
TMSD, 8,
FASN, 4,
FASU, 4,
PCVL, 4,
, 2,
SWTO, 1,
HWTO, 1,
MODE, 1,
FANS, 2,
INIT, 1,
FAN1, 1,
FAN2, 1,
FANT, 1,
SKNM, 1,
CTMP, 8,
LIDE, 1,
PMEE, 1,
PWBE, 1,
RNGE, 1,
BTWE, 1,
DCKE, 1,
Offset (0xB2),
SK90, 8,
SK92, 8,
Offset (0xB5),
DTMP, 8,
Offset (0xB7),
HCPL, 2,
HCPR, 1,
Offset (0xB8),
BTDT, 1,
BTPW, 1,
BTDS, 1,
BTPS, 1,
BTSW, 1,
BTWK, 1,
BTLD, 1,
Offset (0xB9),
BRTS, 8,
CNTS, 8,
WLAT, 1,
BTAT, 1,
WLEX, 1,
BTEX, 1,
KLSW, 1,
WLOK, 1,
Offset (0xBC),
PTID, 8,
CPUT, 8,
EPKT, 8,
Offset (0xC0),
, 4,
BMF0, 3,
BTY0, 1,
BST0, 8,
BRC0, 16,
BSN0, 16,
BPV0, 16,
BDV0, 16,
BDC0, 16,
BFC0, 16,
GAU0, 8,
CYC0, 8,
BPC0, 16,
BAC0, 16,
BAT0, 8,
BTW0, 16,
BDN0, 8,
Offset (0xE0),
, 4,
BMF1, 3,
BTY1, 1,
BST1, 8,
BRC1, 16,
BSN1, 16,
BPV1, 16,
BDV1, 16,
BDC1, 16,
BFC1, 16,
GAU1, 8,
CYC1, 8,
BPC1, 16,
BAC1, 16,
BAT1, 8,
BTW1, 16
}
Method (_Q11, 0, NotSerialized)
{
}
Method (_Q1C, 0, NotSerialized)
{
Store ("=====QUERY_1C=====", Debug)
If (VIDO)
{
If (IGDS)
{
^^^GFX0.DSSW ()
}
Else
{
^^^PEGP.VGA.DSSW ()
}
Store (Zero, VIDO)
}
}
Method (_Q1D, 0, NotSerialized)
{
Store ("=====QUERY_1D=====", Debug)
PCLK ()
}
Method (_Q1E, 0, NotSerialized)
{
Store ("=====QUERY_1E=====", Debug)
PCLK ()
}
Method (_Q25, 0, NotSerialized)
{
Store ("=====QUERY_25=====", Debug)
Sleep (0x03E8)
Notify (^^BAT1, 0x81)
Sleep (0x03E8)
Notify (^^BAT1, 0x80)
}
Method (_Q34, 0, NotSerialized)
{
Store ("=====QUERY_34=====", Debug)
If (BKEY)
{
PHSS (0x71)
Store (Zero, BKEY)
}
}
Method (_Q37, 0, NotSerialized)
{
Store ("=====QUERY_37=====", Debug)
PHSS (0x0D)
Notify (ACAD, 0x80)
Sleep (0x03E8)
Notify (\_PR.CPU0, 0x81)
If (And (CFGD, 0x01000000))
{
Notify (\_PR.CPU1, 0x81)
}
Notify (^^BAT1, 0x80)
}
Method (_Q38, 0, NotSerialized)
{
Store ("=====QUERY_38=====", Debug)
PHSS (0x0D)
Notify (ACAD, 0x80)
Sleep (0x03E8)
Notify (\_PR.CPU0, 0x81)
If (And (CFGD, 0x01000000))
{
Notify (\_PR.CPU1, 0x81)
}
Notify (^^BAT1, 0x80)
}
OperationRegion (CCLK, SystemIO, 0x1010, 0x04)
Field (CCLK, DWordAcc, NoLock, Preserve)
{
, 1,
DUTY, 3,
THEN, 1,
Offset (0x01),
FTT, 1,
, 8,
TSTS, 1
}
OperationRegion (ECRM, EmbeddedControl, Zero, 0xFF)
Field (ECRM, ByteAcc, Lock, Preserve)
{
Offset (0x94),
ERIB, 16,
ERBD, 8,
Offset (0xAC),
SDTM, 8,
FSSN, 4,
FANU, 4,
PTVL, 3,
, 4,
TTHR, 1,
Offset (0xBC),
PJID, 8,
Offset (0xBE),
Offset (0xF9),
RFRD, 16
}
Mutex (FAMX, 0x00)
Method (FANG, 1, NotSerialized)
{
Acquire (FAMX, 0xFFFF)
Store (Arg0, ERIB)
Store (ERBD, Local0)
Release (FAMX)
Return (Local0)
}
Method (FANW, 2, NotSerialized)
{
Acquire (FAMX, 0xFFFF)
Store (Arg0, ERIB)
Store (Arg1, ERBD)
Release (FAMX)
Return (Arg1)
}
Method (TUVR, 1, NotSerialized)
{
Return (0x03)
}
Method (THRO, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Return (THEN)
}
Else
{
If (LEqual (Arg0, One))
{
Return (DUTY)
}
Else
{
If (LEqual (Arg0, 0x02))
{
Return (TTHR)
}
Else
{
Return (0xFF)
}
}
}
}
Method (CLCK, 1, NotSerialized)
{
If (LEqual (Arg0, Zero))
{
Store (Zero, THEN)
Store (Zero, FTT)
}
Else
{
Store (Arg0, DUTY)
Store (One, THEN)
}
Return (THEN)
}
Method (PCLK, 0, NotSerialized)
{
Store (PTVL, Local0)
If (LEqual (Local0, Zero))
{
Store (Zero, THEN)
Store (Zero, FTT)
}
Else
{
Decrement (Local0)
Store (Not (Local0), Local1)
And (Local1, 0x07, Local1)
Store (Local1, DUTY)
Store (One, THEN)
}
}
}
Device (DMAC)
{
Name (_HID, EisaId ("PNP0200"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0000, // Range Minimum
0x0000, // Range Maximum
0x01, // Alignment
0x20, // Length
)
IO (Decode16,
0x0081, // Range Minimum
0x0081, // Range Maximum
0x01, // Alignment
0x11, // Length
)
IO (Decode16,
0x0093, // Range Minimum
0x0093, // Range Maximum
0x01, // Alignment
0x0D, // Length
)
IO (Decode16,
0x00C0, // Range Minimum
0x00C0, // Range Maximum
0x01, // Alignment
0x20, // Length
)
DMA (Compatibility, NotBusMaster, Transfer8_16, )
{4}
})
}
Device (FWHD)
{
Name (_HID, EisaId ("INT0800"))
Name (_CRS, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFF000000, // Address Base
0x01000000, // Address Length
)
})
}
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (BUF0, ResourceTemplate ()
{
Memory32Fixed (ReadOnly,
0xFED00000, // Address Base
0x00000400, // Address Length
_Y0F)
})
Method (_STA, 0, NotSerialized)
{
If (LGreaterEqual (OSYS, 0x07D1))
{
If (HPAE)
{
Return (0x0F)
}
}
Else
{
If (HPAE)
{
Return (0x0B)
}
}
Return (Zero)
}
Method (_CRS, 0, Serialized)
{
If (HPAE)
{
CreateDWordField (BUF0, \_SB.PCI0.LPCB.HPET._Y0F._BAS, HPT0)
If (LEqual (HPAS, One))
{
Store (0xFED01000, HPT0)
}
If (LEqual (HPAS, 0x02))
{
Store (0xFED02000, HPT0)
}
If (LEqual (HPAS, 0x03))
{
Store (0xFED03000, HPT0)
}
}
Return (BUF0)
}
}
Device (IPIC)
{
Name (_HID, EisaId ("PNP0000"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0020, // Range Minimum
0x0020, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0024, // Range Minimum
0x0024, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0028, // Range Minimum
0x0028, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x002C, // Range Minimum
0x002C, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0030, // Range Minimum
0x0030, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0034, // Range Minimum
0x0034, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0038, // Range Minimum
0x0038, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x003C, // Range Minimum
0x003C, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A0, // Range Minimum
0x00A0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A4, // Range Minimum
0x00A4, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00A8, // Range Minimum
0x00A8, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00AC, // Range Minimum
0x00AC, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B0, // Range Minimum
0x00B0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B4, // Range Minimum
0x00B4, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00B8, // Range Minimum
0x00B8, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x00BC, // Range Minimum
0x00BC, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x04D0, // Range Minimum
0x04D0, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IRQNoFlags ()
{2}
})
}
Device (MATH)
{
Name (_HID, EisaId ("PNP0C04"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x00F0, // Range Minimum
0x00F0, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQNoFlags ()
{13}
})
}
Device (LDRC)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x02)
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x002E, // Range Minimum
0x002E, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0061, // Range Minimum
0x0061, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0063, // Range Minimum
0x0063, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0065, // Range Minimum
0x0065, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0067, // Range Minimum
0x0067, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0080, // Range Minimum
0x0080, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0092, // Range Minimum
0x0092, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x00B2, // Range Minimum
0x00B2, // Range Maximum
0x01, // Alignment
0x02, // Length
)
IO (Decode16,
0x0680, // Range Minimum
0x0680, // Range Maximum
0x01, // Alignment
0x20, // Length
)
IO (Decode16,
0x0800, // Range Minimum
0x0800, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x1000, // Range Minimum
0x1000, // Range Maximum
0x01, // Alignment
0x80, // Length
)
IO (Decode16,
0x1180, // Range Minimum
0x1180, // Range Maximum
0x01, // Alignment
0x40, // Length
)
IO (Decode16,
0x1640, // Range Minimum
0x1640, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0xFE00, // Range Minimum
0xFE00, // Range Maximum
0x01, // Alignment
0x80, // Length
)
IO (Decode16,
0xFF00, // Range Minimum
0xFF00, // Range Maximum
0x01, // Alignment
0x80, // Length
)
})
}
Device (CDRC)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x03)
Name (BUF0, ResourceTemplate ()
{
IO (Decode16,
0x06B0, // Range Minimum
0x06B0, // Range Maximum
0x01, // Alignment
0x40, // Length
)
})
Name (BUF1, ResourceTemplate ()
{
IO (Decode16,
0x06B0, // Range Minimum
0x06B0, // Range Maximum
0x01, // Alignment
0x50, // Length
)
})
Name (BUF2, ResourceTemplate ()
{
IO (Decode16,
0x06A0, // Range Minimum
0x06A0, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x06B0, // Range Minimum
0x06B0, // Range Maximum
0x01, // Alignment
0x40, // Length
)
})
Name (BUF3, ResourceTemplate ()
{
IO (Decode16,
0x06A0, // Range Minimum
0x06A0, // Range Maximum
0x01, // Alignment
0x10, // Length
)
IO (Decode16,
0x06B0, // Range Minimum
0x06B0, // Range Maximum
0x01, // Alignment
0x50, // Length
)
})
Method (_CRS, 0, Serialized)
{
If (EMAE)
{
If (CIRP)
{
Return (BUF0)
}
Return (BUF1)
}
Else
{
If (CIRP)
{
Return (BUF2)
}
Return (BUF3)
}
}
}
Device (RTC)
{
Name (_HID, EisaId ("PNP0B00"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0070, // Range Minimum
0x0070, // Range Maximum
0x01, // Alignment
0x08, // Length
)
IRQNoFlags ()
{8}
})
}
Device (TIMR)
{
Name (_HID, EisaId ("PNP0100"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0040, // Range Minimum
0x0040, // Range Maximum
0x01, // Alignment
0x04, // Length
)
IO (Decode16,
0x0050, // Range Minimum
0x0050, // Range Maximum
0x10, // Alignment
0x04, // Length
)
IRQNoFlags ()
{0}
})
}
OperationRegion (SMI0, SystemIO, 0x0000FE00, 0x00000002)
Field (SMI0, AnyAcc, NoLock, Preserve)
{
SMIC, 8
}
OperationRegion (SMI1, SystemMemory, 0x5FE9AEBD, 0x00000090)
Field (SMI1, AnyAcc, NoLock, Preserve)
{
BCMD, 8,
DID, 32,
INFO, 1024
}
Field (SMI1, AnyAcc, NoLock, Preserve)
{
AccessAs (ByteAcc, 0x00),
Offset (0x05),
INF, 8,
INF1, 32
}
Mutex (PSMX, 0x00)
Method (PHSS, 1, NotSerialized)
{
Acquire (PSMX, 0xFFFF)
Store (0x80, BCMD)
Store (Arg0, DID)
Store (Zero, SMIC)
Release (PSMX)
}
Device (BAT1)
{
Name (_HID, EisaId ("PNP0C0A"))
Name (_UID, One)
Name (_PCL, Package (0x01)
{
_SB
})
Method (_STA, 0, NotSerialized)
{
If (LAnd (ECOK (), LEqual (ECDY, Zero)))
{
If (^^EC0.BAL0)
{
Sleep (0x14)
Return (0x1F)
}
Else
{
Sleep (0x14)
Return (0x0F)
}
}
Else
{
Sleep (0x14)
Return (0x1F)
}
}
Method (_BIF, 0, NotSerialized)
{
Name (STAT, Package (0x0D)
{
One,
0x0FA0,
0x0FA0,
One,
0x2B5C,
0x01A4,
0x9C,
0x0108,
0x0EC4,
"PABAS024",
"3658Q",
"LION",
"COMPAL"
})
If (ECOK ())
{
Store (^^EC0.BDN0, Local0)
If (LEqual (BRAD, One))
{
If (LEqual (Local0, 0x02))
{
Store ("PA3421U ", Index (STAT, 0x09))
}
If (LEqual (Local0, 0x08))
{
Store ("PA3395U ", Index (STAT, 0x09))
}
}
Else
{
If (LEqual (Local0, 0x02))
{
Store ("PA3421U ", Index (STAT, 0x09))
}
If (LEqual (Local0, 0x08))
{
Store ("PA3395U ", Index (STAT, 0x09))
}
}
Sleep (0x14)
Store (^^EC0.BDC0, BFC1)
Sleep (0x14)
Store (^^EC0.BMF0, Local1)
Sleep (0x14)
If (LEqual (Local1, One))
{
Store ("SANYO ", Index (STAT, 0x0C))
}
Else
{
If (LEqual (Local1, 0x02))
{
Store ("SONY ", Index (STAT, 0x0C))
}
Else
{
If (LEqual (Local1, 0x04))
{
Store ("PANASONIC ", Index (STAT, 0x0C))
}
Else
{
If (LEqual (Local1, 0x05))
{
Store ("SAMSUNG ", Index (STAT, 0x0C))
}
Else
{
Store ("COMPAL ", Index (STAT, 0x0C))
}
}
}
}
}
Else
{
Store ("Li-Ion", Index (STAT, 0x0B))
}
If (BFC1)
{
Divide (BFC1, 0x64, Local0, Local1)
Multiply (Local1, 0x64, Local1)
Store (Local1, BFC1)
Store (Local1, Index (STAT, One))
Store (Local1, Index (STAT, 0x02))
}
Return (STAT)
}
Method (_BST, 0, NotSerialized)
{
Name (PBST, Package (0x04)
{
Zero,
Ones,
Ones,
0x2B5C
})
Store (0x2B5C, Local3)
If (LAnd (ECOK (), LEqual (ECDY, Zero)))
{
Sleep (0x14)
Store (^^EC0.BST0, BST1)
Sleep (0x14)
Store (^^EC0.GAU0, BGU1)
Sleep (0x14)
}
If (BFC1)
{
Multiply (BGU1, BFC1, Local2)
Divide (Local2, 0x64, Local4, Local2)
}
Else
{
Multiply (BGU1, 0x28, Local2)
}
Store (BST1, Index (PBST, Zero))
Store (Zero, Index (PBST, One))
Store (Local2, Index (PBST, 0x02))
Store (Local3, Index (PBST, 0x03))
If (LGreater (ECDY, Zero))
{
Decrement (ECDY)
If (LEqual (ECDY, Zero))
{
Notify (BAT1, 0x81)
}
}
Return (PBST)
}
}
Device (PS2K)
{
Name (_HID, EisaId ("PNP0303"))
Name (_CRS, ResourceTemplate ()
{
IO (Decode16,
0x0060, // Range Minimum
0x0060, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IO (Decode16,
0x0064, // Range Minimum
0x0064, // Range Maximum
0x01, // Alignment
0x01, // Length
)
IRQ (Edge, ActiveHigh, Exclusive, )
{1}
})
}
Device (PS2M)
{
Name (_HID, EisaId ("PNP0F13"))
Name (_CRS, ResourceTemplate ()
{
IRQ (Edge, ActiveHigh, Exclusive, )
{12}
})
}
}
Device (PATA)
{
Name (_ADR, 0x001F0001)
OperationRegion (PACS, PCI_Config, 0x40, 0xC0)
Field (PACS, DWordAcc, NoLock, Preserve)
{
PRIT, 16,
Offset (0x04),
PSIT, 4,
Offset (0x08),
SYNC, 4,
Offset (0x0A),
SDT0, 2,
, 2,
SDT1, 2,
Offset (0x14),
ICR0, 4,
ICR1, 4,
ICR2, 4,
ICR3, 4,
ICR4, 4,
ICR5, 4
}
Device (PRID)
{
Name (_ADR, Zero)
Method (_GTM, 0, NotSerialized)
{
Name (PBUF, Buffer (0x14)
{
/* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0010 */ 0x00, 0x00, 0x00, 0x00
})
CreateDWordField (PBUF, Zero, PIO0)
CreateDWordField (PBUF, 0x04, DMA0)
CreateDWordField (PBUF, 0x08, PIO1)
CreateDWordField (PBUF, 0x0C, DMA1)
CreateDWordField (PBUF, 0x10, FLAG)
Store (GETP (PRIT), PIO0)
Store (GDMA (And (SYNC, One), And (ICR3, One),
And (ICR0, One), SDT0, And (ICR1, One)), DMA0)
If (LEqual (DMA0, Ones))
{
Store (PIO0, DMA0)
}
If (And (PRIT, 0x4000))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x0384, PIO1)
}
Else
{
Store (GETT (PSIT), PIO1)
}
}
Else
{
Store (Ones, PIO1)
}
Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02),
And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1)
If (LEqual (DMA1, Ones))
{
Store (PIO1, DMA1)
}
Store (GETF (And (SYNC, One), And (SYNC, 0x02),
PRIT), FLAG)
If (And (LEqual (PIO0, Ones), LEqual (DMA0, Ones)))
{
Store (0x78, PIO0)
Store (0x14, DMA0)
Store (0x03, FLAG)
}
Return (PBUF)
}
Method (_STM, 3, NotSerialized)
{
CreateDWordField (Arg0, Zero, PIO0)
CreateDWordField (Arg0, 0x04, DMA0)
CreateDWordField (Arg0, 0x08, PIO1)
CreateDWordField (Arg0, 0x0C, DMA1)
CreateDWordField (Arg0, 0x10, FLAG)
If (LEqual (SizeOf (Arg1), 0x0200))
{
And (PRIT, 0xC0F0, PRIT)
And (SYNC, 0x02, SYNC)
Store (Zero, SDT0)
And (ICR0, 0x02, ICR0)
And (ICR1, 0x02, ICR1)
And (ICR3, 0x02, ICR3)
And (ICR5, 0x02, ICR5)
CreateWordField (Arg1, 0x62, W490)
CreateWordField (Arg1, 0x6A, W530)
CreateWordField (Arg1, 0x7E, W630)
CreateWordField (Arg1, 0x80, W640)
CreateWordField (Arg1, 0xB0, W880)
CreateWordField (Arg1, 0xBA, W930)
Or (PRIT, 0x8004, PRIT)
If (LAnd (And (FLAG, 0x02), And (W490, 0x0800)))
{
Or (PRIT, 0x02, PRIT)
}
Or (PRIT, SETP (PIO0, W530, W640), PRIT)
If (And (FLAG, One))
{
Or (SYNC, One, SYNC)
Store (SDMA (DMA0), SDT0)
If (LLess (DMA0, 0x1E))
{
Or (ICR3, One, ICR3)
}
If (LLess (DMA0, 0x3C))
{
Or (ICR0, One, ICR0)
}
If (And (W930, 0x2000))
{
Or (ICR1, One, ICR1)
}
}
}
If (LEqual (SizeOf (Arg2), 0x0200))
{
And (PRIT, 0xBF0F, PRIT)
Store (Zero, PSIT)
And (SYNC, One, SYNC)
Store (Zero, SDT1)
And (ICR0, One, ICR0)
And (ICR1, One, ICR1)
And (ICR3, One, ICR3)
And (ICR5, One, ICR5)
CreateWordField (Arg2, 0x62, W491)
CreateWordField (Arg2, 0x6A, W531)
CreateWordField (Arg2, 0x7E, W631)
CreateWordField (Arg2, 0x80, W641)
CreateWordField (Arg2, 0xB0, W881)
CreateWordField (Arg2, 0xBA, W931)
Or (PRIT, 0x8040, PRIT)
If (LAnd (And (FLAG, 0x08), And (W491, 0x0800)))
{
Or (PRIT, 0x20, PRIT)
}
If (And (FLAG, 0x10))
{
Or (PRIT, 0x4000, PRIT)
If (LGreater (PIO1, 0xF0))
{
Or (PRIT, 0x80, PRIT)
}
Else
{
Or (PRIT, 0x10, PRIT)
Store (SETT (PIO1, W531, W641), PSIT)
}
}
If (And (FLAG, 0x04))
{
Or (SYNC, 0x02, SYNC)
Store (SDMA (DMA1), SDT1)
If (LLess (DMA1, 0x1E))
{
Or (ICR3, 0x02, ICR3)
}
If (LLess (DMA1, 0x3C))
{
Or (ICR0, 0x02, ICR0)
}
If (And (W931, 0x2000))
{
Or (ICR1, 0x02, ICR1)
}
}
}
}
Device (P_D0)
{
Name (_ADR, Zero)
Method (_GTF, 0, NotSerialized)
{
Name (PIB0, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
})
CreateByteField (PIB0, One, PMD0)
CreateByteField (PIB0, 0x08, DMD0)
If (And (PRIT, 0x02))
{
If (LEqual (And (PRIT, 0x09), 0x08))
{
Store (0x08, PMD0)
}
Else
{
Store (0x0A, PMD0)
ShiftRight (And (PRIT, 0x0300), 0x08, Local0)
ShiftRight (And (PRIT, 0x3000), 0x0C, Local1)
Add (Local0, Local1, Local2)
If (LEqual (0x03, Local2))
{
Store (0x0B, PMD0)
}
If (LEqual (0x05, Local2))
{
Store (0x0C, PMD0)
}
}
}
Else
{
Store (One, PMD0)
}
If (And (SYNC, One))
{
Store (Or (SDT0, 0x40), DMD0)
If (And (ICR1, One))
{
If (And (ICR0, One))
{
Add (DMD0, 0x02, DMD0)
}
If (And (ICR3, One))
{
Store (0x45, DMD0)
}
}
}
Else
{
Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0)
}
Return (PIB0)
}
}
Device (P_D1)
{
Name (_ADR, One)
Method (_GTF, 0, NotSerialized)
{
Name (PIB1, Buffer (0x0E)
{
/* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03,
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF
})
CreateByteField (PIB1, One, PMD1)
CreateByteField (PIB1, 0x08, DMD1)
If (And (PRIT, 0x20))
{
If (LEqual (And (PRIT, 0x90), 0x80))
{
Store (0x08, PMD1)
}
Else
{
Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C),
0x02), Local0)
If (LEqual (0x05, Local0))
{
Store (0x0C, PMD1)
}
Else
{
If (LEqual (0x03, Local0))
{
Store (0x0B, PMD1)
}
Else
{
Store (0x0A, PMD1)
}
}
}
}
Else
{
Store (One, PMD1)
}
If (And (SYNC, 0x02))
{
Store (Or (SDT1, 0x40), DMD1)
If (And (ICR1, 0x02))
{
If (And (ICR0, 0x02))
{
Add (DMD1, 0x02, DMD1)
}
If (And (ICR3, 0x02))
{
Store (0x45, DMD1)
}
}
}
Else
{
Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1)
}
Return (PIB1)
}
}
}
}
Device (SATA)
{
Name (_ADR, 0x001F0002)
OperationRegion (SACS, PCI_Config, 0x40, 0xC0)
Field (SACS, DWordAcc, NoLock, Preserve)
{
PRIT, 16,
SECT, 16,
PSIT, 4,
SSIT, 4,
Offset (0x08),
SYNC, 4,
Offset (0x0A),
SDT0, 2,
, 2,
SDT1, 2,
Offset (0x0B),
SDT2, 2,
, 2,
SDT3, 2,
Offset (0x14),
ICR0, 4,
ICR1, 4,
ICR2, 4,
ICR3, 4,
ICR4, 4,
ICR5, 4,
Offset (0x50),
MAPV, 2,
Offset (0x53),
PCSR, 8
}
}
Device (SBUS)
{
Name (_ADR, 0x001F0003)
OperationRegion (SMBP, PCI_Config, 0x40, 0xC0)
Field (SMBP, DWordAcc, NoLock, Preserve)
{
, 2,
I2CE, 1
}
OperationRegion (SMBI, SystemIO, 0x18C0, 0x10)
Field (SMBI, ByteAcc, NoLock, Preserve)
{
HSTS, 8,
Offset (0x02),
HCON, 8,
HCOM, 8,
TXSA, 8,
DAT0, 8,
DAT1, 8,
HBDR, 8,
PECR, 8,
RXSA, 8,
SDAT, 16
}
Method (SSXB, 2, Serialized)
{
If (STRT ())
{
Return (Zero)
}
Store (Zero, I2CE)
Store (0xBF, HSTS)
Store (Arg0, TXSA)
Store (Arg1, HCOM)
Store (0x48, HCON)
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (One)
}
Return (Zero)
}
Method (SRXB, 1, Serialized)
{
If (STRT ())
{
Return (0xFFFF)
}
Store (Zero, I2CE)
Store (0xBF, HSTS)
Store (Or (Arg0, One), TXSA)
Store (0x44, HCON)
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (DAT0)
}
Return (0xFFFF)
}
Method (SWRB, 3, Serialized)
{
If (STRT ())
{
Return (Zero)
}
Store (Zero, I2CE)
Store (0xBF, HSTS)
Store (Arg0, TXSA)
Store (Arg1, HCOM)
Store (Arg2, DAT0)
Store (0x48, HCON)
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (One)
}
Return (Zero)
}
Method (SRDB, 2, Serialized)
{
If (STRT ())
{
Return (0xFFFF)
}
Store (Zero, I2CE)
Store (0xBF, HSTS)
Store (Or (Arg0, One), TXSA)
Store (Arg1, HCOM)
Store (0x48, HCON)
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (DAT0)
}
Return (0xFFFF)
}
Method (SBLW, 4, Serialized)
{
If (STRT ())
{
Return (Zero)
}
Store (Arg3, I2CE)
Store (0xBF, HSTS)
Store (Arg0, TXSA)
Store (Arg1, HCOM)
Store (SizeOf (Arg2), DAT0)
Store (Zero, Local1)
Store (DerefOf (Index (Arg2, Zero)), HBDR)
Store (0x54, HCON)
While (LGreater (SizeOf (Arg2), Local1))
{
Store (0x0FA0, Local0)
While (LAnd (LNot (And (HSTS, 0x80)), Local0))
{
Decrement (Local0)
Stall (0x32)
}
If (LNot (Local0))
{
KILL ()
Return (Zero)
}
Store (0x80, HSTS)
Increment (Local1)
If (LGreater (SizeOf (Arg2), Local1))
{
Store (DerefOf (Index (Arg2, Local1)), HBDR)
}
}
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (One)
}
Return (Zero)
}
Method (SBLR, 3, Serialized)
{
Name (TBUF, Buffer (0x0100) {})
If (STRT ())
{
Return (Zero)
}
Store (Arg2, I2CE)
Store (0xBF, HSTS)
Store (Or (Arg0, One), TXSA)
Store (Arg1, HCOM)
Store (0x54, HCON)
Store (0x0FA0, Local0)
While (LAnd (LNot (And (HSTS, 0x80)), Local0))
{
Decrement (Local0)
Stall (0x32)
}
If (LNot (Local0))
{
KILL ()
Return (Zero)
}
Store (DAT0, Index (TBUF, Zero))
Store (0x80, HSTS)
Store (One, Local1)
While (LLess (Local1, DerefOf (Index (TBUF, Zero))))
{
Store (0x0FA0, Local0)
While (LAnd (LNot (And (HSTS, 0x80)), Local0))
{
Decrement (Local0)
Stall (0x32)
}
If (LNot (Local0))
{
KILL ()
Return (Zero)
}
Store (HBDR, Index (TBUF, Local1))
Store (0x80, HSTS)
Increment (Local1)
}
If (COMP ())
{
Or (HSTS, 0xFF, HSTS)
Return (TBUF)
}
Return (Zero)
}
Method (STRT, 0, Serialized)
{
Store (0xC8, Local0)
While (Local0)
{
If (And (HSTS, 0x40))
{
Decrement (Local0)
Sleep (One)
If (LEqual (Local0, Zero))
{
Return (One)
}
}
Else
{
Store (Zero, Local0)
}
}
Store (0x0FA0, Local0)
While (Local0)
{
If (And (HSTS, One))
{
Decrement (Local0)
Stall (0x32)
If (LEqual (Local0, Zero))
{
KILL ()
}
}
Else
{
Return (Zero)
}
}
Return (One)
}
Method (COMP, 0, Serialized)
{
Store (0x0FA0, Local0)
While (Local0)
{
If (And (HSTS, 0x02))
{
Return (One)
}
Else
{
Decrement (Local0)
Stall (0x32)
If (LEqual (Local0, Zero))
{
KILL ()
}
}
}
Return (Zero)
}
Method (KILL, 0, Serialized)
{
Or (HCON, 0x02, HCON)
Or (HSTS, 0xFF, HSTS)
}
}
}
}
}
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
ibm-acpi-devel mailing list
ibm-acpi-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/ibm-acpi-devel