Hi, I have a Toshiba Laptop which works great with Snow and Lion ; The DSDT is fixed for almost everything working like usb,sleep,hpet,lpc and so on and tested over months usage with no problems; OSX works problem-free with SMBIOS of MacBookPro5.1 ( Core2Duo Speedstep vanilla ) but this Battery Thing with Lion is the last open issue for me. My BAT1 Entries in DSDT look very different from your example code and I don't want to mess my otherwise working file.
Can you figure out what I need to change in order to have working battery kexts in Lion with original apple acpi and pci kexts ( I don't want to mix Snow and Lion files ).
Thanks
The complete dsdt that I use in OSX is attached as file.
Here only Battery section :
Device (BAT1)
{
Name (_HID, EisaId ("PNP0C0A"))
Name (_UID, One)
Name (_PCL, Package (0x01)
{
_SB
})
Name (BMDL, Zero)
Method (_STA, 0, NotSerialized)
{
If (ECOK ())
{
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,
0x1770,
0x1770,
One,
0x2A30,
0x0258,
0xB4,
0x0108,
0x0EC4,
"PA3533U ",
"41167",
"Li-Ion",
"TOSHIBA"
})
Name (CMMA, Buffer (0x0C) {})
CreateByteField (CMMA, Zero, APN1)
CreateByteField (CMMA, One, APN2)
CreateByteField (CMMA, 0x02, APN3)
CreateByteField (CMMA, 0x03, APN4)
CreateByteField (CMMA, 0x04, APN5)
CreateByteField (CMMA, 0x05, APN6)
CreateByteField (CMMA, 0x06, APN7)
CreateByteField (CMMA, 0x07, APN8)
CreateByteField (CMMA, 0x08, APN9)
CreateByteField (CMMA, 0x09, Z00A)
CreateByteField (CMMA, 0x0A, Z00B)
CreateByteField (CMMA, 0x0B, Z00C)
Store (PHMR (0xACF8), APN1)
Store (PHMR (0xADF8), APN2)
Store (PHMR (0xAEF8), APN3)
Store (PHMR (0xAFF8), APN4)
Store (PHMR (0xB0F8), APN5)
Store (PHMR (0xB1F8), APN6)
Store (PHMR (0xB2F8), APN7)
Store (PHMR (0xB3F8), APN8)
Store (PHMR (0xB4F8), APN9)
Store (PHMR (0xB5F8), Z00A)
Store (PHMR (0xB6F8), Z00B)
Store (PHMR (0xB7F8), Z00C)
Store (CMMA, Index (STAT, 0x09))
If (ECOK ())
{
Store (^^EC0.BDN0, Local0)
Store (Local0, BMDL)
Store (^^EC0.BFC0, BFC1)
Sleep (0x14)
Store (^^EC0.BDC0, Index (STAT, One))
Sleep (0x14)
Store (^^EC0.BDV0, Index (STAT, 0x04))
Sleep (0x14)
}
Else
{
Store ("Li-Ion", Index (STAT, 0x0B))
Store (BFC1, Index (STAT, One))
}
If (BFC1)
{
Divide (BFC1, 0x64, Local0, Local1)
Multiply (Local1, 0x0A, Local1)
Store (Local1, Index (STAT, 0x05))
Divide (BFC1, 0x64, Local0, Local1)
Multiply (Local1, 0x03, Local1)
Store (Local1, Index (STAT, 0x06))
Store (BFC1, Index (STAT, 0x02))
}
Return (STAT)
}
Method (_BST, 0, NotSerialized)
{
Name (PBST, Package (0x04)
{
Zero,
0xFFFFFFFF,
0xFFFFFFFF,
0x2A30
})
Store (0x2A30, Local3)
If (ECOK ())
{
Sleep (0x14)
Store (^^EC0.BST0, BST1)
Sleep (0x14)
Store (^^EC0.BRC0, Local2)
Sleep (0x14)
Store (^^EC0.BPV0, Local3)
Sleep (0x14)
}
Store (BST1, Index (PBST, Zero))
Store (Zero, Index (PBST, One))
Store (Local2, Index (PBST, 0x02))
Store (Local3, Index (PBST, 0x03))
If (ECOK ())
{
If (LNotEqual (^^EC0.BDN0, BMDL))
{
Notify (BAT1, 0x81)
}
}
Return (PBST)
}
}
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}
})
}