RehabMan
Moderator
- Joined
- May 2, 2012
- Messages
- 181,058
- Motherboard
- Intel DH67BL
- CPU
- i7-2600K
- Graphics
- HD 3000
- Mac
- Mobile Phone
The OEM DSDT has conflict between SSDT-4 [SaSsdt] and SSDT-6 [NvOptTbl]. The same problem appeared on my previous Yoga 3 14. https://www.tonymacx86.com/threads/guide-lenovo-yoga-3-14-broadwell-hd5500.187138/
Eliminate the SSDT that is not actually loading.
Your profile indicates you don't have Nvidia, so, assuming your profile is accurate, you can simply drop NvOptTbl SSDT.
File updated and still cannot get battery fixed.
It is because BAT0._STA is returning zero.
Look at the code for BAT0._STA:
Code:
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (LEqual (ECON, One))
{
If (ECAV)
{
If (LEqual (Acquire (LFCM, 0xA000), Zero))
{
Store (BA1P, Local0)
Release (LFCM)
}
}
If (And (Local0, One))
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Else
{
Return (Zero)
}
}
Ok... so if ECON is not set, it will return zero.
If it returns zero, macOS doesn't even enter it into ACPIplane, it never gets to IOService, and ACPIBatteryManager.kext never starts.
ECON is not set until _REG is called.
See:
Code:
Method (_REG, 2, NotSerialized) // _REG: Region Availability
{
...
Store (One, ECON)
Unfortunately, _STA determination is done way before _REG.
You need to fix _STA so it returns 0xF instead of zero in the case ECON is not set yet.
As in:
Code:
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (LEqual (ECON, One))
{
If (ECAV)
{
If (LEqual (Acquire (LFCM, 0xA000), Zero))
{
Store (BA1P, Local0)
Release (LFCM)
}
}
If (And (Local0, One))
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Else
{
Return (0xf)
}
}