• Nishanth Menon's avatar
    power: twl4030_charger: detect battery presence prior to enabling charger · 61a7784e
    Nishanth Menon authored
    TWL4030's Battery Charger seems to be designed for non-hotpluggable
    batteries.
    
    If battery is not present in the system, BATSTS is always set with the
    expectation that software will take actions to move to a required safe
    state (could be power down or disable various charger paths).
    
    It does not seem possible even by manipulating the edge detection
    of the event (using BCIEDR2 register) to have a consistent hotplug
    handling. This seems to be the result of BATSTS interrupt generated
    when the thermistor of the battery pack is disconnected from the
    dedicated ADIN1 pin. Clearing the status just results in the status
    being regenerated by the monitoring ADC(MADC) and disabling the
    edges of event just makes hotplug no longer function. The only
    other option is to disable the detection of the MADC by disabling
    BCIMFEN4::BATSTSMCHGEN (battery presence detector) - but then, we can
    never again detect battery reconnection.
    
    So, detect battery presence based on precharge(which is hardware
    automatic state) or default main charger configuration at the time of
    probe and enable charger logic only if battery was present.
    Reported-by: default avatarRussell King <linux@arm.linux.org.uk>
    Tested-by: default avatarTony Lindgren <tony@atomide.com>
    Signed-off-by: default avatarNishanth Menon <nm@ti.com>
    Signed-off-by: default avatarSebastian Reichel <sre@kernel.org>
    61a7784e
twl4030_charger.c 17.7 KB