mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 11:40:19 -04:00
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:
committed by
Sebastian Reichel
parent
ee7300da80
commit
667e11374f
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user