-
-
Notifications
You must be signed in to change notification settings - Fork 126
Description
[BUG REPORT] Kernel OVP Conflict & Ghost Charging on Snapdragon 855/865 (pm8150b)
Environment:
ACC Version: v2023.10.16
Kernel Charging Driver: pm8150b_charger
Device Status: Confirmed on multiple charging cycles and levels.
Issue Description:
On devices utilizing the pm8150b driver, several charging switches force a fixed Float Voltage (fv) of 3600mV (3.6V). This creates a critical discrepancy when the actual battery voltage (vbat_fg) is higher, causing the kernel to trigger an "over-voltage" protection state and ignore ACC's suspension commands.
Specific Observations:
Target Mismatch: Charging suspension was targeted at 75%, but the battery level continued to climb well beyond this limit due to kernel-level overrides.
Ghost Charging Evidence: Even at higher levels, the battery climbed from 89% to 90% while reporting STATUS=Discharging.
Kernel Error Log: pm8150b_charger: battery over-voltage vbat_fg = 4393000uV, fv = 3600000uV. The kernel ignores the suspension because the forced 3600mV target is much lower than the actual battery voltage (4.39V), triggering a safety override.
Technical Analysis:
The kernel enters a safety override mode because vbat_fg (>4.0V) exceeds the forced fv (3.6V). This renders most switches (like charge_control_limit) unstable. While input_suspend successfully cuts the current, it often fails to trigger a true Bypass/Idle Mode (battIdleMode=false), leading to battery drain instead of external power usage.
--- KERNEL OVER-VOLTAGE ERRORS (dmesg) ---
[ 2242.599354] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4113270uV, fv = 3600000uV
[ 3682.823686] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4393000uV, fv = 3600000uV
[ 2266.948228] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4094716uV, fv = 3600000uV
--- KERNEL OVER-VOLTAGE ERRORS (dmesg) ---
[ 2242.599354] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4113270uV, fv = 3600000uV
[ 3682.823686] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4393000uV, fv = 3600000uV
[ 2266.948228] pm8150b_charger: smblib_get_prop_batt_health: battery over-voltage vbat_fg = 4094716uV, fv = 3600000uV
--- CURRENT SYSTEM STATE (acc -i) ---
CHARGE_CONTROL_LIMIT=0
INPUT_SUSPEND=1
STATUS=Discharging
VOLTAGE_NOW=4171376
CURRENT_NOW=-124999 (uA)
CONSTANT_CHARGE_VOLTAGE=4389655
--- HEALTHD BATTERY LEVEL CLIMB LOGS ---
[ 3682.823686] healthd: battery l=90 v=4393 t=34.5 h=2 st=3 c=-1709
[ 4079.911058] healthd: battery l=89 v=4112 t=32.2 h=2 st=3 c=593