power: ip5xxx_power: Fall back to Charge End bit if status register is absent

On parts where there is no status register, check the Charge End
bit to set charging/not charging status. Fullness, trickle charge
status, discharging etc. cannot be determined from just this bit.

Signed-off-by: Csókás, Bence <csokas.bence@prolan.hu>
Link: https://lore.kernel.org/r/20241119180741.2237692-6-csokas.bence@prolan.hu
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
This commit is contained in:
Csókás, Bence
2024-11-19 19:07:38 +01:00
committed by Sebastian Reichel
parent ee7300da80
commit 667e11374f

View File

@@ -270,6 +270,19 @@ static int ip5xxx_battery_get_status(struct ip5xxx *ip5xxx, int *val)
unsigned int rval;
int ret;
if (!ip5xxx->regs.charger.status) {
// Fall-back to Charging Ended bit
ret = ip5xxx_read(ip5xxx, ip5xxx->regs.charger.chg_end, &rval);
if (ret)
return ret;
if (rval == ip5xxx->chg_end_inverted)
*val = POWER_SUPPLY_STATUS_CHARGING;
else
*val = POWER_SUPPLY_STATUS_NOT_CHARGING;
return 0;
}
ret = ip5xxx_read(ip5xxx, ip5xxx->regs.charger.status, &rval);
if (ret)
return ret;