• Hans de Goede's avatar
    power: supply: axp288_charger: Do not stop + restart charging at boot · d8e65195
    Hans de Goede authored
    Before this commit we were relying solely on the extcon interface for
    cable detection, including to determine if a cable providing vbus is
    connected at all. This caused us to turn off charging at boot, because
    when we run the initial state processing the axp288-extcon driver is still
    running charger-type detection most of the time, so all charger cable
    types read as disconnected when we run the initial state processing.
    
    This commit reworks the axp288_charger_extcon_evt_worker flow to use the
    VBUS_VALID bit from the PWR_INPUT_STATUS register to determine if we
    should turn charging on/off. Note this is the same bit as we use for the
    online property.
    
    If VBUS_VALID is set, but the extcon code has not completed the charger
    type detection yet, we now simply bail leaving things as configured by
    the BIOS (we will get a notifier call when the extcon code is done and
    reschedule the axp288_charger_extcon_evt_worker).
    
    The extcon code is the only one to trigger the worker (outside of the
    initial run) and we can rely on it to only call us if things have changed,
    so while we are completely refactoring axp288_charger_extcon_evt_worker,
    also remove the code to check if the state has changed.
    Reviewed-by: default avatarChen-Yu Tsai <wens@csie.org>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
    d8e65195
axp288_charger.c 23.6 KB