[PATCH 11/11] power: supply: max17042: report time to full
From: André Draszik
Date: Thu Feb 26 2026 - 08:17:01 EST
Report the remaining time to full as calculated by the firmware.
Similar to time to empty, the reported value is only meaningful when
charging, i.e. if it is != U16_MAX.
Signed-off-by: André Draszik <andre.draszik@xxxxxxxxxx>
---
drivers/power/supply/max17042_battery.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index 89909b140cf9..cf8602d925a2 100644
--- a/drivers/power/supply/max17042_battery.c
+++ b/drivers/power/supply/max17042_battery.c
@@ -89,6 +89,7 @@ static enum power_supply_property max17042_battery_props[] = {
POWER_SUPPLY_PROP_HEALTH,
POWER_SUPPLY_PROP_SCOPE,
POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW,
+ POWER_SUPPLY_PROP_TIME_TO_FULL_AVG,
// these two have to be at the end on the list
POWER_SUPPLY_PROP_CURRENT_NOW,
POWER_SUPPLY_PROP_CURRENT_AVG,
@@ -447,6 +448,23 @@ static int max17042_get_property(struct power_supply *psy,
if (data == U16_MAX)
return -ENODATA;
+ val->intval = data * 5625 / 1000;
+ break;
+ case POWER_SUPPLY_PROP_TIME_TO_FULL_AVG:
+ if (chip->chip_type != MAXIM_DEVICE_TYPE_MAX17047 &&
+ chip->chip_type != MAXIM_DEVICE_TYPE_MAX17050 &&
+ chip->chip_type != MAXIM_DEVICE_TYPE_MAX17055 &&
+ chip->chip_type != MAXIM_DEVICE_TYPE_MAX77759)
+ return -EINVAL;
+
+ ret = regmap_read(map, MAX17055_TTF, &data);
+ if (ret < 0)
+ return ret;
+
+ /* when discharging, the value is not meaningful */
+ if (data == U16_MAX)
+ return -ENODATA;
+
val->intval = data * 5625 / 1000;
break;
default:
--
2.53.0.414.gf7e9f6c205-goog