- Joined
- Nov 4, 2016
- Messages
- 60
- Motherboard
- Don't know
- CPU
- Intel Core i7
- Graphics
- Intel Iris Graphics 540
Sorry that didn't report problem correctly.Read post #1, "Problem Reporting".
Sorry that didn't report problem correctly.Read post #1, "Problem Reporting".
Sorry that didn't report problem correctly.
Not sure how I missed Clover folder. Attaching.No EFI/Clover attached.
Please read post #1, "Problem Reporting". Carefully.
Not sure how I missed Clover folder. Attaching.
Sorry, I misunderstood. Attaching files with Os Check, Fix Mutex and battery patch without buggy UPBS method thus always showing 20 hours left.ACPI is not patched correctly:
- There is no checking for _OSI("Darwin"). See "OS Check Fix" patches in ACPI patching guide.
- your DSDT in ACPI/patched is not patched for battery status (I looked for EmbeddedControl, found SMD0, and found accesses to it that are not patched... at that point I stopped loooking).
Read post #1.
Sorry, I misunderstood. Attaching files with Os Check, Fix Mutex and battery patch without buggy UPBS method thus always showing 20 hours left.
Ok, so if I understand correctly that battery status is defined in this conditional sentence and refers to that potentially buggy UPBS:If you look at ioreg you see current draw on battery only 1 mA (Amperage is 0xffffffff, or -1). That's very low (and likely impossible).
You will need to use the debug ACPIBatteryManager.kext and ACPIDebug.kext to debug your DSDT logic for battery status.
Method (_BST, 0, NotSerialized) // _BST: Battery Status
{
If (LEqual (^^PCI0.LPCB.EC0.ECOK, One))
{
If (^^PCI0.LPCB.EC0.MBTS)
{
UPBS ()
}
Else
{
IVBS ()
}
}
Else
{
IVBS ()
}
Return (PBST)
}
Method (UPBS, 0, NotSerialized)
{
\RMDT.PUSH(Local5)
Store (0xFFFFFFFF, Index (PBST, One))
Store (B1B2(^^PCI0.LPCB.EC0.BRM0,^^PCI0.LPCB.EC0.BRM1), Local5)
If (LNot (And (Local5, 0x8000)))
{
ShiftRight (Local5, 0x05, Local5)
ShiftLeft (Local5, 0x05, Local5)
If (LNotEqual (Local5, DerefOf (Index (PBST, 0x02))))
{
Store (Local5, Index (PBST, 0x02))
}
}
If (LAnd (LNot (^^PCI0.LPCB.EC0.SW2S), LEqual (^^PCI0.LPCB.EC0.BACR, One)))
{
Store (FABL, Index (PBST, 0x02))
}
Store (B1B2(^^PCI0.LPCB.EC0.BCV0,^^PCI0.LPCB.EC0.BCV1), Index (PBST, 0x03))
Store (^^PCI0.LPCB.EC0.MBST, Index (PBST, Zero))
}
Ok, so if I understand correctly that battery status is defined in this conditional sentence and refers to that potentially buggy UPBS:
Code:Method (_BST, 0, NotSerialized) // _BST: Battery Status { If (LEqual (^^PCI0.LPCB.EC0.ECOK, One)) { If (^^PCI0.LPCB.EC0.MBTS) { UPBS () } Else { IVBS () } } Else { IVBS () } Return (PBST) }
So I should trace Local5 or something else from UPBS?
Code:Method (UPBS, 0, NotSerialized) { \RMDT.PUSH(Local5) Store (0xFFFFFFFF, Index (PBST, One)) Store (B1B2(^^PCI0.LPCB.EC0.BRM0,^^PCI0.LPCB.EC0.BRM1), Local5) If (LNot (And (Local5, 0x8000))) { ShiftRight (Local5, 0x05, Local5) ShiftLeft (Local5, 0x05, Local5) If (LNotEqual (Local5, DerefOf (Index (PBST, 0x02)))) { Store (Local5, Index (PBST, 0x02)) } } If (LAnd (LNot (^^PCI0.LPCB.EC0.SW2S), LEqual (^^PCI0.LPCB.EC0.BACR, One))) { Store (FABL, Index (PBST, 0x02)) } Store (B1B2(^^PCI0.LPCB.EC0.BCV0,^^PCI0.LPCB.EC0.BCV1), Index (PBST, 0x03)) Store (^^PCI0.LPCB.EC0.MBST, Index (PBST, Zero)) }
My deteriorating logic says that then it should e placed after store or not?At the point of your trace for Local5, it is not initialized yet (likely 0).
Method (UPBS, 0, NotSerialized)
{
Store (0xFFFFFFFF, Index (PBST, One))
Store (B1B2(^^PCI0.LPCB.EC0.BRM0,^^PCI0.LPCB.EC0.BRM1), Local5)
\RMDT.PUSH(Local5)
If (LNot (And (Local5, 0x8000)))
{.......
My deteriorating logic says that then it should e placed after store or not?
Code:Method (UPBS, 0, NotSerialized) { Store (0xFFFFFFFF, Index (PBST, One)) Store (B1B2(^^PCI0.LPCB.EC0.BRM0,^^PCI0.LPCB.EC0.BRM1), Local5) \RMDT.PUSH(Local5) If (LNot (And (Local5, 0x8000))) {.......