Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[原创] Acer TravelMate3001解决ACPI电池问题的方法
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index 中文 (Chinese)
View previous topic :: View next topic  
Author Message
MACHINE
Tux's lil' helper
Tux's lil' helper


Joined: 30 Mar 2004
Posts: 141
Location: Earth

PostPosted: Sun Sep 25, 2005 3:32 am    Post subject: [原创] Acer TravelMate3001解决ACPI电池问题的方法 Reply with quote

1. emerge iasl
2. Copy the following code to ./acer.dsl
3. iasl -tc acer.asl
4. in kernel configuration
ACPI----------------->
Custom DSDT
< acer.dsl >
5. compile and reboot


[code:1:e836bc23c5]

DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL ", "ALVISO ", 100925440)
{
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 (0x02),
Offset (0x04),
Offset (0x06),
Offset (0x08),
TRP0, 8,
Offset (0x0A),
Offset (0x0B),
Offset (0x0C),
Offset (0x0D),
Offset (0x0E),
Offset (0x0F),
Offset (0x10)
}

OperationRegion (PMIO, SystemIO, 0x1000, 0x3C)
Field (PMIO, ByteAcc, NoLock, Preserve)
{
Offset (0x28),
, 1,
HOTS, 1,
Offset (0x2A),
BAYS, 2,
Offset (0x2B),
, 3,
LIDS, 1,
Z000, 1,
Offset (0x2C),
, 1,
HOTP, 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,
GL01, 8,
BAYO, 1,
, 4,
GP21, 1,
, 1,
BAYR, 1,
, 1,
GP25, 1,
Offset (0x10),
Offset (0x18),
GB00, 8,
GB01, 8,
GB02, 8,
GB03, 8,
Offset (0x2C),
GIV0, 8,
, 3,
LIDP, 1,
Z001, 1,
Offset (0x2E),
GIV2, 8,
GIV3, 8,
GU04, 8,
GU05, 8,
GU06, 8,
GU07, 8,
GIO4, 8,
GIO5, 8,
GIO6, 8,
GIO7, 8,
, 1,
GP33, 1,
Offset (0x39),
GL05, 8,
GL06, 8,
GL07, 8
}

OperationRegion (MNVS, SystemMemory, 0x3F685D2C, 0x0100)
Field (MNVS, AnyAcc, Lock, Preserve)
{
OSYS, 16,
SMIF, 8,
PRM0, 8,
PRM1, 8,
SCIF, 8,
PRM2, 8,
PRM3, 8,
Offset (0x09),
Offset (0x0A),
Offset (0x0B),
P80D, 32,
Offset (0x10),
Offset (0x11),
Offset (0x12),
Offset (0x14),
Offset (0x1E),
Offset (0x28),
APIC, 8,
CPUL, 8,
CPUH, 8,
GV3E, 8,
HTTE, 8,
WTHT, 8,
Offset (0x32),
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),
Offset (0x69),
Offset (0x6E),
Offset (0x78),
D400, 8,
Offset (0x82),
GTF0, 56,
GTF2, 56,
IDEM, 8
}

OperationRegion (RCRB, SystemMemory, 0xF0008000, 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,
AZAD, 1,
A97D, 1,
Offset (0x341A),
RP1D, 1,
RP2D, 1,
RP3D, 1,
RP4D, 1
}

Mutex (MUTX, 0x00)
Name (_S0, Package (0x03)
{
0x00,
0x00,
0x00
})
Name (_S3, Package (0x03)
{
0x05,
0x05,
0x00
})
Name (_S4, Package (0x03)
{
0x06,
0x06,
0x00
})
Name (_S5, Package (0x03)
{
0x07,
0x07,
0x00
})
Scope (\_PR)
{
Processor (CPU0, 0x00, 0x00001010, 0x06) {}
Processor (CPU1, 0x01, 0x00001010, 0x06) {}
}

Name (\DSEN, 0x00)
Name (\ECON, 0x00)
Name (\GPIC, 0x00)
Name (\CTYP, 0x00)
Name (\L01C, 0x00)
Name (\INSX, 0x00)
Method (\_PIC, 1, NotSerialized)
{
Store (Arg0, GPIC)
}

Method (_PTS, 1, NotSerialized)
{
Store (0x00, P80D)
P8XH (0x00, Arg0)
If (LEqual (Arg0, 0x04))
{
Store (0x01, INS4)
Acquire (\_SB.PCI0.LPCB.EC0.MUT1, 0xFFFF)
Store (0x01, \_SB.PCI0.LPCB.EC0.FLS4)
Release (\_SB.PCI0.LPCB.EC0.MUT1)
}

If (\_SB.ECOK)
{
Acquire (\_SB.PCI0.LPCB.EC0.MUT1, 0xFFFF)
If (LEqual (\_SB.PCI0.PCIB.LANC.LANP, 0x00))
{
Store (0x00, \_SB.PCI0.LPCB.EC0.VAUX)
}
Else
{
Store (0x01, \_SB.PCI0.LPCB.EC0.VAUX)
}

Release (\_SB.PCI0.LPCB.EC0.MUT1)
}

\_SB.PHSR (0x08, 0x00)
Store (0x00, HOTP)
}

Method (_WAK, 1, NotSerialized)
{
P8XH (0x00, 0x00)
If (LEqual (Arg0, 0x03))
{
\_SB.PHSR (0x00, 0x00)
Store (0x01, INSX)
}

If (LEqual (Arg0, 0x04))
{
\_SB.PHSR (0x09, 0x00)
Store (0x00, INS4)
}

\_SB.PHSR (0x08, 0x01)
If (Z001)
{
If (LEqual (\_SB.PCI0.DOCK.DCKS, 0x00))
{
XOr (Z001, 0x01, Z001)
Store (0x00, Z001)
}
}
Else
{
If (LEqual (\_SB.PCI0.DOCK.DCKS, 0x01))
{
XOr (Z001, 0x01, Z001)
Store (0x01, Z001)
}
}

If (LOr (LEqual (Arg0, 0x04), LEqual (Arg0, 0x03)))
{
Store (\_SB.BTEN, \_SB.PCI0.LPCB.EC0.BLTH)
Store (\_SB.WLAN, \_SB.PCI0.LPCB.EC0.WLAN)
Store (0x01, \_SB.PCI0.LPCB.EC0.CPLE)
}

Return (Package (0x02)
{
0x00,
0x00
})
}

Scope (\_GPE)
{
Method (_L01, 0, NotSerialized)
{
Add (L01C, 0x01, L01C)
P8XH (0x00, 0x01)
P8XH (0x01, L01C)
Sleep (0x64)
If (\_SB.PCI0.RP01.HPCS)
{
If (\_SB.PCI0.RP01.PDC1)
{
Store (0x01, \_SB.PCI0.RP01.PDC1)
}

Store (0x01, \_SB.PCI0.RP01.HPCS)
Sleep (0x64)
Notify (\_SB.PCI0.RP01, 0x00)
Sleep (0x64)
}

If (\_SB.PCI0.RP02.HPCS)
{
If (\_SB.PCI0.RP02.PDC2)
{
Store (0x01, \_SB.PCI0.RP02.PDC2)
}

Store (0x01, \_SB.PCI0.RP02.HPCS)
Sleep (0x64)
Notify (\_SB.PCI0.RP02, 0x00)
Sleep (0x64)
}

If (\_SB.PCI0.RP03.HPCS)
{
If (\_SB.PCI0.RP03.PDC3)
{
Sleep (0x01F4)
\_SB.PHSR (0x07, 0x00)
Sleep (0x01F4)
Store (0x00, INSX)
Store (0x01, \_SB.PCI0.RP03.PDC3)
}

Store (0x01, \_SB.PCI0.RP03.HPCS)
}

If (\_SB.PCI0.RP04.HPCS)
{
If (\_SB.PCI0.RP04.PDC4)
{
Store (0x01, \_SB.PCI0.RP04.PDC4)
}

Store (0x01, \_SB.PCI0.RP04.HPCS)
}
}

Method (_L03, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB1, 0x02)
}

Method (_L04, 0, NotSerialized)
{
Notify (\_SB.PCI0.USB2, 0x02)
}

Method (_L05, 0, NotSerialized)
{
If (AZAD) {}
Else
{
Notify (\_SB.PCI0.AZAL, 0x02)
}
}

Method (_L09, 0, NotSerialized)
{
If (\_SB.PCI0.RP01.PSP1)
{
Store (0x01, \_SB.PCI0.RP01.PSP1)
Store (0x01, \_SB.PCI0.RP01.PMCS)
Notify (\_SB.PCI0.RP01, 0x02)
}

If (\_SB.PCI0.RP02.PSP2)
{
Store (0x01, \_SB.PCI0.RP02.PSP2)
Store (0x01, \_SB.PCI0.RP02.PMCS)
Notify (\_SB.PCI0.RP02, 0x02)
}

If (\_SB.PCI0.RP03.PSP3)
{
Store (0x01, \_SB.PCI0.RP03.PSP3)
Store (0x01, \_SB.PCI0.RP03.PMCS)
Notify (\_SB.PCI0.RP03, 0x02)
}

If (\_SB.PCI0.RP04.PSP4)
{
Store (0x01, \_SB.PCI0.RP04.PSP4)
Store (0x01, \_SB.PCI0.RP04.PMCS)
Notify (\_SB.PCI0.RP04, 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 (_L1B, 0, NotSerialized)
{
Notify (\_SB.LID, 0x80)
}

Method (_L1C, 0, NotSerialized)
{
Sleep (0x012C)
Store (0x01, Z000)
Store (Z000, Local1)
External (CFGD)
If (LEqual (Local1, 0x01))
{
Store (Z001, Local0)
If (Local0)
{
Or (CFGD, 0xC0, CFGD)
Notify (\_PR.CPU0, 0x81)
Sleep (0x012C)
Store (0x01, \_SB.PCI0.LPCB.C4C3)
Store (0x1C, P80H)
If (LEqual (\_SB.PCI0.RP03.Z002, 0x01))
{
Store (0x1E, P80H)
Store (0x00, \_SB.PCI0.RP03.Z002)
Sleep (0x01F4)
Store (0x01, \_SB.PCI0.RP03.LDP3)
Notify (\_SB.PCI0.RP03, 0x00)
Sleep (0x07D0)
}

Store (0x00, \_SB.PCI0.DOCK.DCKS)
Notify (\_SB.PCI0.DOCK, 0x01)
}
Else
{
And (CFGD, 0x3F, CFGD)
Notify (\_PR.CPU0, 0x81)
Sleep (0x012C)
Store (0x00, \_SB.PCI0.LPCB.C4C3)
Store (0x1D, P80H)
Store (0x01, \_SB.PCI0.DOCK.DCKS)
Store (0x00, \_SB.PCI0.RP03.LDP3)
Sleep (0x01F4)
Store (0x01, \_SB.PCI0.RP03.Z002)
Sleep (0x0BB8)
Notify (\_SB.PCI0.DOCK, 0x00)
}

XOr (Z001, 0x01, Z001)
}
}
}

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 (0x00, DSEN))
{
Store (Arg0, SMIF)
Store (0x00, TRP0)
If (LEqual (SMIF, 0x00))
{
If (LNot (LEqual (CADL, PADL)))
{
Store (CADL, PADL)
If (LEqual (OSYS, 0x07D1))
{
Notify (\_SB.PCI0, 0x00)
}
Else
{
Notify (\_SB.PCI0.GFX0, 0x00)
}

Sleep (0x02EE)
}

Notify (\_SB.PCI0.GFX0, 0x80)
}
}

If (LEqual (0x01, DSEN))
{
Store (Increment (Arg0), SMIF)
Store (0x00, TRP0)
If (LEqual (SMIF, 0x00))
{
Notify (\_SB.PCI0.GFX0, 0x81)
}
}
}

Method (LSDS, 1, Serialized)
{
If (Arg0)
{
HKDS (0x0C)
}
Else
{
HKDS (0x0E)
}

If (LNot (LEqual (DSEN, 0x01)))
{
Sleep (0x32)
While (LEqual (DSEN, 0x02))
{
Sleep (0x32)
}
}
}

Method (P8XH, 2, Serialized)
{
If (LEqual (Arg0, 0x00))
{
Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D)
}

If (LEqual (Arg0, 0x01))
{
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)
{
External (PDC0)
External (PDC1)
If (HTTE)
{
If (LEqual (And (PDC0, 0x0A), 0x0A))
{
Notify (\_PR.CPU0, 0x80)
}

If (LEqual (And (PDC1, 0x0A), 0x0A))
{
Notify (\_PR.CPU1, 0x80)
}
}
Else
{
Notify (\_PR.CPU0, 0x80)
Sleep (0x64)
Notify (\_PR.CPU0, 0x81)
}
}

Method (VTOB, 1, NotSerialized)
{
Store (0x01, Local0)
ShiftLeft (Local0, Arg0, Local0)
Return (Local0)
}

Method (BTOV, 1, NotSerialized)
{
ShiftRight (Arg0, 0x01, Local0)
Store (0x00, Local1)
While (Local0)
{
Increment (Local1)
ShiftRight (Local0, 0x01, Local0)
}

Return (Local1)
}

Method (MKWD, 2, NotSerialized)
{
If (And (Arg1, 0x80))
{
Store (0xFFFF0000, Local0)
}
Else
{
Store (Zero, Local0)
}

Or (Local0, Arg0, Local0)
Or (Local0, ShiftLeft (Arg1, 0x08), Local0)
Return (Local0)
}

Method (POSW, 1, NotSerialized)
{
If (And (Arg0, 0x8000))
{
If (LEqual (Arg0, 0xFFFF))
{
Return (0xFFFFFFFF)
}
Else
{
Not (Arg0, Local0)
Increment (Local0)
And (Local0, 0xFFFF, Local0)
Return (Local0)
}
}
Else
{
Return (Arg0)
}
}

Method (GBFE, 3, NotSerialized)
{
CreateByteField (Arg0, Arg1, TIDX)
Store (TIDX, Arg2)
}

Method (PBFE, 3, NotSerialized)
{
CreateByteField (Arg0, Arg1, TIDX)
Store (Arg2, TIDX)
}

Method (ITOS, 1, NotSerialized)
{
Store (Buffer (0x09)
{
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00
}, Local0)
Store (Buffer (0x11)
{
"0123456789ABCDEF"
}, Local7)
Store (0x08, Local1)
Store (0x00, Local2)
Store (0x00, Local3)
While (Local1)
{
Decrement (Local1)
And (ShiftRight (Arg0, ShiftLeft (Local1, 0x02)), 0x0F, Local4)
If (Local4)
{
Store (Ones, Local3)
}

If (Local3)
{
GBFE (Local7, Local4, RefOf (Local5))
PBFE (Local0, Local2, Local5)
Increment (Local2)
}
}

Return (Local0)
}

Method (GETP, 1, Serialized)
{
If (LEqual (And (Arg0, 0x09), 0x00))
{
Return (0xFFFFFFFF)
}

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 (0xFFFFFFFF)
}

Method (GETT, 1, Serialized)
{
Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02), 0x03), And (Arg0, 0x03)))))
}

Method (GETF, 3, Serialized)
{
Name (TMPF, 0x00)
If (Arg0)
{
Or (TMPF, 0x01, 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 (LNot (LGreater (Arg0, 0x78)), And (Arg2, 0x02)))
{
Return (0x2301)
}

If (LAnd (LNot (LGreater (Arg0, 0xB4)), And (Arg2, 0x01)))
{
Return (0x2101)
}
}

Return (0x1001)
}
}

Method (SDMA, 1, Serialized)
{
If (LNot (LGreater (Arg0, 0x14)))
{
Return (0x01)
}

If (LNot (LGreater (Arg0, 0x1E)))
{
Return (0x02)
}

If (LNot (LGreater (Arg0, 0x2D)))
{
Return (0x01)
}

If (LNot (LGreater (Arg0, 0x3C)))
{
Return (0x02)
}

If (LNot (LGreater (Arg0, 0x5A)))
{
Return (0x01)
}

Return (0x00)
}

Method (SETT, 3, Serialized)
{
If (And (Arg1, 0x02))
{
If (LAnd (LNot (LGreater (Arg0, 0x78)), And (Arg2, 0x02)))
{
Return (0x0B)
}

If (LAnd (LNot (LGreater (Arg0, 0xB4)), And (Arg2, 0x01)))
{
Return (0x09)
}
}

Return (0x04)
}

OperationRegion (NV1, SystemIO, 0x72, 0x02)
Field (NV1, ByteAcc, NoLock, Preserve)
{
INDX, 8,
DATA, 8
}

IndexField (INDX, DATA, ByteAcc, NoLock, Preserve)
{
Offset (0x6E),
INS4, 1,
Offset (0x70),
DLST, 8
}

Scope (\_SB)
{
Name (ECOK, 0x00)
Device (PCI0)
{
Method (_INI, 0, NotSerialized)
{
If (CondRefOf (_OSI, Local0))
{
Store (0x07D1, OSYS)
If (HTTE)
{
Store (0x32, SMIF)
Store (0x00, TRP0)
}
}
Else
{
If (LOr (LEqual (SizeOf (_OS), 0x14), LEqual (SizeOf (_OS), 0x05)))
{
Store (0x07D0, OSYS)
Store (0x35, SMIF)
Store (0x00, TRP0)
}
Else
{
If (LEqual (SizeOf (_OS), 0x27))
{
Store (0x07CF, OSYS)
}
Else
{
Store (0x07CE, OSYS)
}
}
}

If (LNot (LGreater (OSYS, 0x07CF)))
{
Store (0x01, ECON)
Store (0x2B, SMIF)
Store (0x00, TRP0)
PNOT ()
}
}

Method (_S3D, 0, NotSerialized)
{
Return (0x02)
}

Method (_S4D, 0, NotSerialized)
{
Return (0x02)
}

Name (_HID, EisaId ("PNP0A08"))
Name (_CID, 0x030AD041)
Name (_ADR, 0x00)
Name (_BBN, 0x00)
OperationRegion (HBUS, PCI_Config, 0x40, 0xC0)
Field (HBUS, DWordAcc, NoLock, Preserve)
{
Offset (0x14),
, 1,
PEGA, 1,
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, // Address Space Granularity
0x0000, // Address Range Minimum
0x00FF, // Address Range Maximum
0x0000, // Address Translation Offset
//0x0100, 0x00,,)
0x0100, ,,)

DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Address Space Granularity
0x00000000, // Address Range Minimum
0x00000CF7, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00000CF8, 0x00,,
0x00000CF8, ,,
, TypeStatic)
IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
0x00000000, // Address Space Granularity
0x00000D00, // Address Range Minimum
0x0000BFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x0000B300, 0x00,,
0x0000B300, ,,
, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000A0000, // Address Range Minimum
0x000BFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00020000, 0x00,,
0x00020000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000C0000, // Address Range Minimum
0x000C3FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000C4000, // Address Range Minimum
0x000C7FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000C8000, // Address Range Minimum
0x000CBFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000CC000, // Address Range Minimum
0x000CFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000D0000, // Address Range Minimum
0x000D3FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000D4000, // Address Range Minimum
0x000D7FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
//0x00004000, 0x00,,
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000D8000, // Address Range Minimum
0x000DBFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000DC000, // Address Range Minimum
0x000DFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000E0000, // Address Range Minimum
0x000E3FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000E4000, // Address Range Minimum
0x000E7FFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000E8000, // Address Range Minimum
0x000EBFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000EC000, // Address Range Minimum
0x000EFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00004000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x000F0000, // Address Range Minimum
0x000FFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00010000, ,,
, AddressRangeMemory, TypeStatic)
DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
0x00000000, // Address Space Granularity
0x00000000, // Address Range Minimum
0xFEBFFFFF, // Address Range Maximum
0x00000000, // Address Translation Offset
0x00000000, ,,
, AddressRangeMemory, TypeStatic)
})
Method (_CRS, 0, Serialized)
{
If (PM1L)
{
CreateDWordField (BUF0, 0x80, C0LN)
Store (Zero, C0LN)
}

If (LEqual (PM1L, 0x01))
{
CreateBitField (BUF0, 0x0378, C0RW)
Store (Zero, C0RW)
}

If (PM1H)
{
CreateDWordField (BUF0, 0x9B, C4LN)
Store (Zero, C4LN)
}

If (LEqual (PM1H, 0x01))
{
CreateBitField (BUF0, 0x0450, C4RW)
Store (Zero, C4RW)
}

If (PM2L)
{
CreateDWordField (BUF0, 0xB6, C8LN)
Store (Zero, C8LN)
}

If (LEqual (PM2L, 0x01))
{
CreateBitField (BUF0, 0x0528, C8RW)
Store (Zero, C8RW)
}

If (PM2H)
{
CreateDWordField (BUF0, 0xD1, CCLN)
Store (Zero, CCLN)
}

If (LEqual (PM2H, 0x01))
{
CreateBitField (BUF0, 0x0600, CCRW)
Store (Zero, CCRW)
}

If (PM3L)
{
CreateDWordField (BUF0, 0xEC, D0LN)
Store (Zero, D0LN)
}

If (LEqual (PM3L, 0x01))
{
CreateBitField (BUF0, 0x06D8, D0RW)
Store (Zero, D0RW)
}

If (PM3H)
{
CreateDWordField (BUF0, 0x0107, D4LN)
Store (Zero, D4LN)
}

If (LEqual (PM3H, 0x01))
{
CreateBitField (BUF0, 0x07B0, D4RW)
Store (Zero, D4RW)
}

If (PM4L)
{
CreateDWordField (BUF0, 0x0122, D8LN)
Store (Zero, D8LN)
}

If (LEqual (PM4L, 0x01))
{
CreateBitField (BUF0, 0x0888, D8RW)
Store (Zero, D8RW)
}

If (PM4H)
{
CreateDWordField (BUF0, 0x013D, DCLN)
Store (Zero, DCLN)
}

If (LEqual (PM4H, 0x01))
{
CreateBitField (BUF0, 0x0960, DCRW)
Store (Zero, DCRW)
}

If (PM5L)
{
CreateDWordField (BUF0, 0x0158, E0LN)
Store (Zero, E0LN)
}

If (LEqual (PM5L, 0x01))
{
CreateBitField (BUF0, 0x0A38, E0RW)
Store (Zero, E0RW)
}

If (PM5H)
{
CreateDWordField (BUF0, 0x0173, E4LN)
Store (Zero, E4LN)
}

If (LEqual (PM5H, 0x01))
{
CreateBitField (BUF0, 0x0B10, E4RW)
Store (Zero, E4RW)
}

If (PM6L)
{
CreateDWordField (BUF0, 0x018E, E8LN)
Store (Zero, E8LN)
}

If (LEqual (PM6L, 0x01))
{
CreateBitField (BUF0, 0x0BE8, E8RW)
Store (Zero, E8RW)
}

If (PM6H)
{
CreateDWordField (BUF0, 0x01A9, ECLN)
Store (Zero, ECLN)
}

If (LEqual (PM6H, 0x01))
{
CreateBitField (BUF0, 0x0CC0, ECRW)
Store (Zero, ECRW)
}

If (PM0H)
{
CreateDWordField (BUF0, 0x01C4, F0LN)
Store (Zero, F0LN)
}

If (LEqual (PM0H, 0x01))
{
CreateBitField (BUF0, 0x0D98, F0RW)
Store (Zero, F0RW)
}

CreateDWordField (BUF0, 0x01D3, M1MN)
CreateDWordField (BUF0, 0x01D7, M1MX)
CreateDWordField (BUF0, 0x01DF, M1LN)
ShiftLeft (TOUD, 0x1B, M1MN)
Add (Subtract (M1MX, M1MN), 0x01, M1LN)
Return (BUF0)
}

Device (PDRC)
{
Name (_HID, EisaId ("PNP0C02"))
Name (_UID, 0x01)
Name (_CRS, ResourceTemplate ()
{
Memory32Fixed (ReadWrite, 0xE0000000, 0x10000000)
Memory32Fixed (ReadWrite, 0xF0000000, 0x00004000)
Memory32Fixed (ReadWrite, 0xF0004000, 0x00001000)
Memory32Fixed (ReadWrite, 0xF0005000, 0x00001000)
Memory32Fixed (ReadWrite, 0xF0008000, 0x00004000)
Memory32Fixed (ReadWrite, 0xFED20000, 0x00070000)
})
}

Method (_PRT, 0, NotSerialized)
{
If (GPIC)
{
Return (Package (0x11)
{
Package (0x04)
{
0x0001FFFF,
0x00,
0x00,
0x10
},

Package (0x04)
{
0x0002FFFF,
0x00,
0x00,
0x10
},

Package (0x04)
{
0x0007FFFF,
0x00,
0x00,
0x10
},

Package (0x04)
{
0x001BFFFF,
0x00,
0x00,
0x10
},

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

Package (0x04)
{
0x001CFFFF,
0x01,
0x00,
0x10
},

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

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

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

Package (0x04)
{
0x001DFFFF,
0x01,
0x00,
0x13
},

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

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

Package (0x04)
{
0x001EFFFF,
0x00,
0x00,
0x11
},

Package (0x04)
{
0x001EFFFF,
0x01,
0x00,
0x14
},

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

Package (0x04)
{
0x001FFFFF,
0x01,
0x00,
0x13
},

Package (0x04)
{
0x001FFFFF,
0x03,
0x00,
0x10
}
})
}
Else
{
Return (Package (0x11)
{
Package (0x04)
{
0x0001FFFF,
0x00,
\_SB.PCI0.LPCB.LNKA,
0x00
},

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

Package (0x04)
{
0x0007FFFF,
0x00,
\_SB.PCI0.LPCB.LNKA,
0x00
},

Package (0x04)
{
0x001BFFFF,
0x00,
\_SB.PCI0.LPCB.LNKA,
0x00
},

Package (0x04)
{
0x001CFFFF,
0x00,
\_SB.PCI0.LPCB.LNKB,
0x00
},

Package (0x04)
{
0x001CFFFF,
0x01,
\_SB.PCI0.LPCB.LNKA,
0x00
},

Package (0x04)
{
0x001CFFFF,
0x02,
\_SB.PCI0.LPCB.LNKC,
0x00
},

Package (0x04)
{
0x001CFFFF,
0x03,
\_SB.PCI0.LPCB.LNKD,
0x00
},

Package (0x04)
{
0x001DFFFF,
0x00,
\_SB.PCI0.LPCB.LNKH,
0x00
},

Package (0x04)
{
0x001DFFFF,
0x01,
\_SB.PCI0.LPCB.LNKD,
0x00
},

Package (0x04)
{
0x001DFFFF,
0x02,
\_SB.PCI0.LPCB.LNKC,
0x00
},

Package (0x04)
{
0x001DFFFF,
0x03,
\_SB.PCI0.LPCB.LNKA,
0x00
},

Package (0x04)
{
0x001EFFFF,
0x00,
\_SB.PCI0.LPCB.LNKB,
0x00
},

Package (0x04)
{
0x001EFFFF,
0x01,
\_SB.PCI0.LPCB.LNKE,
0x00
},

Package (0x04)
{
0x001FFFFF,
0x00,
\_SB.PCI0.LPCB.LNKC,
0x00
},

Package (0x04)
{
0x001FFFFF,
0x01,
\_SB.PCI0.LPCB.LNKD,
0x00
},

Package (0x04)
{
0x001FFFFF,
0x03,
\_SB.PCI0.LPCB.LNKA,
0x00
}
})
}
}

Device (GFX0)
{
Name (_ADR, 0x00020000)
Method (_STA, 0, NotSerialized)
{
If (PEGA)
{
Return (0x00)
}
Else
{
Return (0x0F)
}
}

OperationRegion (VNVS, SystemMemory, 0x3F685E2C, 0x00010000)
Field (VNVS, AnyAcc, Lock, Preserve)
{
VBF1, 262144,
VBF2, 262144
}

Method (_DOS, 1, NotSerialized)
{
Store (And (Arg0, 0x03), DSEN)
}

Method (_DOD, 0, NotSerialized)
{
If (LEqual (NDID, 0x01))
{
Name (TMP1, Package (0x01)
{
0xFFFFFFFF
})
Store (Or (0x00010000, DID1), Index (TMP1, 0x00))
Return (TMP1)
}

If (LEqual (NDID, 0x02))
{
Name (TMP2, Package (0x02)
{
0xFFFFFFFF,
0xFFFFFFFF
})
Store (Or (0x00010000, DID1), Index (TMP2, 0x00))
Store (Or (0x00010000, DID2), Index (TMP2, 0x01))
Return (TMP2)
}

If (LEqual (NDID, 0x03))
{
Name (TMP3, Package (0x03)
{
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF
})
Store (Or (0x00010000, DID1), Index (TMP3, 0x00))
Store (Or (0x00010000, DID2), Index (TMP3, 0x01))
Store (Or (0x00010000, DID3), Index (TMP3, 0x02))
Return (TMP3)
}

If (LEqual (NDID, 0x04))
{
Name (TMP4, Package (0x04)
{
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF
})
Store (Or (0x00010000, DID1), Index (TMP4, 0x00))
Store (Or (0x00010000, DID2), Index (TMP4, 0x01))
Store (Or (0x00010000, DID3), Index (TMP4, 0x02))
Store (Or (0x00010000, DID4), Index (TMP4, 0x03))
Return (TMP4)
}

Name (TMP5, Package (0x05)
{
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF,
0xFFFFFFFF
})
Store (Or (0x00010000, DID1), Index (TMP5, 0x00))
Store (Or (0x00010000, DID2), Index (TMP5, 0x01))
Store (Or (0x00010000, DID3), Index (TMP5, 0x02))
Store (Or (0x00010000, DID4), Index (TMP5, 0x03))
Store (Or (0x00010000, DID5), Index (TMP5, 0x04))
Return (TMP5)
}

Method (_ROM, 2, NotSerialized)
{
If (LNot (LLess (Arg0, 0x8000)))
{
Return (GETB (Subtract (Arg0, 0x8000), Arg1, VBF2))
}

If (LGreater (Add (Arg0, Arg1), 0x8000))
{
Subtract (0x8000, Arg0, Local0)
Subtract (Arg1, Local0, Local1)
Store (GETB (Arg0, Local0, VBF1), Local3)
Store (GETB (0x00, Local1, VBF2), Local4)
Concatenate (Local3, Local4, Local5)
Return (Local5)
}

Return (GETB (Arg0, Arg1, VBF1))
}

Device (DD01)
{
Method (_ADR, 0, Serialized)
{
Return (And (0xFFFF, DID1))
}

Method (_DCS, 0, NotSerialized)
{
Store (0x01, SMIF)
Store (0x00, TRP0)
If (And (CSTE, 0x01))
{
Return (0x1F)
}

Return (0x1D)
}

Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x01))
{
Return (0x01)
}

Return (0x00)
}

Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}

Device (DD02)
{
Method (_ADR, 0, Serialized)
{
Return (And (0xFFFF, DID2))
}

Method (_DCS, 0, NotSerialized)
{
Store (0x01, SMIF)
Store (0x00, TRP0)
If (And (CSTE, 0x02))
{
Return (0x1F)
}

Return (0x1D)
}

Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x02))
{
Return (0x01)
}

Return (0x00)
}

Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}

Device (DD03)
{
Method (_ADR, 0, Serialized)
{
Return (And (0xFFFF, DID3))
}

Method (_DCS, 0, NotSerialized)
{
Store (0x01, SMIF)
Store (0x00, TRP0)
If (And (CSTE, 0x04))
{
Return (0x1F)
}

Return (0x1D)
}

Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x04))
{
Return (0x01)
}

Return (0x00)
}

Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}

Device (DD04)
{
Method (_ADR, 0, Serialized)
{
Return (And (0xFFFF, DID4))
}

Method (_DCS, 0, NotSerialized)
{
Store (0x01, SMIF)
Store (0x00, TRP0)
If (And (CSTE, 0x08))
{
Return (0x1F)
}

Return (0x1D)
}

Method (_DGS, 0, NotSerialized)
{
If (And (NSTE, 0x08))
{
Return (0x01)
}

Return (0x00)
}

Method (_DSS, 1, NotSerialized)
{
If (LEqual (And (Arg0, 0xC0000000), 0xC0000000))
{
Store (NSTE, CSTE)
}
}
}

Device (DD05)
{
Method (_ADR, 0, Serialized)
{
Return (And (0xFFFF, DID5))
}

Method (_DCS, 0, NotSerialized)
{
Store (0x01, SMIF)
Store (0x00, TRP0)
If (And (CSTE, 0x10))
{
Return (0x1F)
}
_________________
Hi, Gentoo men!!
Back to top
View user's profile Send private message
EricHsu
Moderator
Moderator


Joined: 03 May 2004
Posts: 591
Location: Aragon Consulting Group, Beijing, China

PostPosted: Sun Sep 25, 2005 8:00 am    Post subject: Reply with quote

排版上用点 BBCode 可以提高可读性, 另外能不能有些注释, 方便新手们理解每段代码目的都是什么
just my two cents ;)
_________________
- http://nkbit.com
- http://twitter.com/xuyihua
Back to top
View user's profile Send private message
cyfdecyf
n00b
n00b


Joined: 01 Jan 2006
Posts: 12
Location: Nanjing University, China

PostPosted: Sat Mar 04, 2006 8:17 am    Post subject: Reply with quote

其他的Acer的笔记本能用吗?我的是Travel Mate 3202,查了很多关于修复acpi的资料,但是操作实在是太罗嗦了,如果能直接用就太好了。
_________________
No Windows. No trash. Just Gentoo in my lovely box!
Back to top
View user's profile Send private message
cyfdecyf
n00b
n00b


Joined: 01 Jan 2006
Posts: 12
Location: Nanjing University, China

PostPosted: Tue Mar 07, 2006 11:15 am    Post subject: Reply with quote

拷贝了你的文件,编译通不过。好像是少了花括号,不过补了好几个以后发现编译错误:-(

sourceforge上下载的TM3202 的dsdt编译后只有3个警告,去掉一个以后编译进内核以后还是不行,电池时间什么的还是没有
被acpi搞的头都大了,只好慢慢来了:-(
_________________
No Windows. No trash. Just Gentoo in my lovely box!
Back to top
View user's profile Send private message
MACHINE
Tux's lil' helper
Tux's lil' helper


Joined: 30 Mar 2004
Posts: 141
Location: Earth

PostPosted: Sat Mar 11, 2006 11:52 pm    Post subject: Reply with quote

型号和下载文件必须一致才行。千万不要在3200上用3000的dsdt!
这些代码不用看了,过时了。acpi.sourceforge.net可以下载更新的。

http://csd.acer.com.tw/SI/Download2.nsf/NotebookWeb?OpenView&Start=1&Count=240&Expand=73.1#73.1
你去Acer内部工程师网站去下载最新的BIOS升级一下。
用户名和密码都是guest

然后去acip的dsdt网站下载相应的代码。

2.6.16版本将会有大量针对Acer笔记本电脑的修复,特别是解决了IO_APIC问题,建议更新。
_________________
Hi, Gentoo men!!
Back to top
View user's profile Send private message
cyfdecyf
n00b
n00b


Joined: 01 Jan 2006
Posts: 12
Location: Nanjing University, China

PostPosted: Fri Mar 17, 2006 9:45 am    Post subject: Reply with quote

谢谢!
我还是更新内核试试看吧,现在用的是2.6.15的内核。试了以后再看结果吧。
_________________
No Windows. No trash. Just Gentoo in my lovely box!
Back to top
View user's profile Send private message
MACHINE
Tux's lil' helper
Tux's lil' helper


Joined: 30 Mar 2004
Posts: 141
Location: Earth

PostPosted: Sun Mar 19, 2006 8:55 am    Post subject: Reply with quote

cyfdecyf wrote:
谢谢!
我还是更新内核试试看吧,现在用的是2.6.15的内核。试了以后再看结果吧。


不要用任何2.6.15版本,我试过了,结果很壮观,也很悲惨。。。
_________________
Hi, Gentoo men!!
Back to top
View user's profile Send private message
cyfdecyf
n00b
n00b


Joined: 01 Jan 2006
Posts: 12
Location: Nanjing University, China

PostPosted: Fri Mar 24, 2006 4:46 pm    Post subject: Reply with quote

啊,不会吧!
我现在用的2.6.15的nitro-sources还好啊,除了电池没有什么问题啊。
_________________
No Windows. No trash. Just Gentoo in my lovely box!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index 中文 (Chinese) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum