• Hans de Goede's avatar
    power: supply: bq27xxx: Ensure power_supply_changed() is called on current sign changes · 939a1161
    Hans de Goede authored
    On gauges where the current register is signed, there is no charging
    flag in the flags register. So only checking flags will not result
    in power_supply_changed() getting called when e.g. a charger is plugged
    in and the current sign changes from negative (discharging) to
    positive (charging).
    
    This causes userspace's notion of the status to lag until userspace
    does a poll.
    
    And when a power_supply_leds.c LED trigger is used to indicate charging
    status with a LED, this LED will lag until the capacity percentage
    changes, which may take many minutes (because the LED trigger only is
    updated on power_supply_changed() calls).
    
    Fix this by calling bq27xxx_battery_current_and_status() on gauges with
    a signed current register and checking if the status has changed.
    
    Fixes: 297a533b ("bq27x00: Cache battery registers")
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
    939a1161
bq27xxx_battery.c 60.8 KB