Skip to content

pm8150b_charger, Kernel OVP Conflict & Ghost Charging on Snapdragon 855, v2023.10.16 #307

@48nurullah

Description

@48nurullah

​[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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions