[PATCH v2] power: supply: gpio-charger: Report discharging without input power
From: Igor Velkov via B4 Relay
Date: Sat Oct 17 2026 - 23:58:05 EST
From: Igor Velkov <iav@xxxxxx>
The status property follows only the charge-status GPIO. Without input
power a charger such as the BQ24133 releases its open-drain STAT pin,
and depending on the board the GPIO then reads as charging.
On Kobol Helios64 the board runs from its battery after a mains loss,
and the charger reports online 0 with status "Charging".
Report "Discharging" whenever the online GPIO is present and inactive.
Fixes: df68c44c720a ("power: supply: gpio-charger: Add support for charger status.")
Assisted-by: LLM
Signed-off-by: Igor Velkov <iav@xxxxxx>
---
Changes in v2:
- Report "Discharging" instead of "Not charging" without input power (Sebastian)
- Add Fixes tag (Sebastian)
- Link to v1: https://lore.kernel.org/r/20261008-gpio-charger-offline-v1-1-78740b558402@xxxxxx
---
drivers/power/supply/gpio-charger.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/power/supply/gpio-charger.c b/drivers/power/supply/gpio-charger.c
index 2504190eba82..1dad49acc424 100644
--- a/drivers/power/supply/gpio-charger.c
+++ b/drivers/power/supply/gpio-charger.c
@@ -101,7 +101,10 @@ static int gpio_charger_get_property(struct power_supply *psy,
val->intval = gpiod_get_value_cansleep(gpio_charger->gpiod);
break;
case POWER_SUPPLY_PROP_STATUS:
- if (gpiod_get_value_cansleep(gpio_charger->charge_status))
+ /* Without input power the battery discharges, whatever the status pin says */
+ if (gpio_charger->gpiod && !gpiod_get_value_cansleep(gpio_charger->gpiod))
+ val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
+ else if (gpiod_get_value_cansleep(gpio_charger->charge_status))
val->intval = POWER_SUPPLY_STATUS_CHARGING;
else
val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
---
base-commit: a90ee4305c4a5df72c11b31dacfdc76e00fcf78a
change-id: 20261008-gpio-charger-offline-cf51542a10ef
Best regards,
--
Igor Velkov <iav@xxxxxx>