- Joined
- Nov 10, 2015
- Messages
- 105
- Motherboard
- Clevo 970EF Defiance VI - OpenCore
- CPU
- i7-8750H/HM370
- Graphics
- UHD630, RTX 2070, 1920x1080
- Mac
- Classic Mac
- Mobile Phone
Some users are having a conflict problem with VoodooI2CHID in polling-mode & ACPIBatteryManager (1.90.1).
Me too. (GPIO correctly pinned...)
With AC power disconnected, the cursor is "micro-stopping" and "crazy-jumping" with a cycle of one second.
Conflict explanation:
ACPIBatteryManager is polling the battery status in order to update the battery data with a cycle of one second.
When the battery is charged, ACPIBatteryManager stops polling. This is the reason why we're facing the problem during discharging only.
The first task performed by the kext during polling, it is calling the _STA method of device BAT0 to know whether the battery is present and operating.Then it calls other methods _BIF, _BST, ...
The problem is just related to _STA method.
Most probably, your BAT0 (or BAT1, check your DSDT) _STA method looks like mine:
As you can see, a Sleep function of 300mS is called every time... No good.
This is useful during start-up only to give PC (battery) enough time to set up.
During battery discharging the ACPIBatteryManager starts polling and this sleep function generates the "glitch" in the cursor.
Solution:
Adding a variable to perform the Sleep at the first time resolved the problem.
No more crazy-jumping cursor...
Patch your _STA method as below:
Note that if DOST name is already used in your ACPI, change it with another one (YSTA, WSTA, ...)
Alternatively, Sleep statement can be deleted at all.
Hope this could help someone...
With AC power disconnected, the cursor is "micro-stopping" and "crazy-jumping" with a cycle of one second.
Conflict explanation:
ACPIBatteryManager is polling the battery status in order to update the battery data with a cycle of one second.
When the battery is charged, ACPIBatteryManager stops polling. This is the reason why we're facing the problem during discharging only.
The first task performed by the kext during polling, it is calling the _STA method of device BAT0 to know whether the battery is present and operating.Then it calls other methods _BIF, _BST, ...
The problem is just related to _STA method.
Most probably, your BAT0 (or BAT1, check your DSDT) _STA method looks like mine:
Code:
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (^^PCI0.LPCB.EC.ECOK)
{
Sleep (0x012C)
If (^^PCI0.LPCB.EC.BAT0)
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Else
{
Return (0x0F)
}
}
This is useful during start-up only to give PC (battery) enough time to set up.
During battery discharging the ACPIBatteryManager starts polling and this sleep function generates the "glitch" in the cursor.
Solution:
Adding a variable to perform the Sleep at the first time resolved the problem.
No more crazy-jumping cursor...
Patch your _STA method as below:
Code:
Name (DOST, Zero)
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (^^PCI0.LPCB.EC.ECOK)
{
If (LNot (DOST))
{
Sleep (0x012C)
Store (One, DOST)
}
If (^^PCI0.LPCB.EC.BAT0)
{
Return (0x1F)
}
Else
{
Return (0x0F)
}
}
Else
{
Return (0x0F)
}
}
Alternatively, Sleep statement can be deleted at all.
Hope this could help someone...
Last edited: