summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndré Draszik <andre.draszik@linaro.org>2026-03-02 13:32:10 +0000
committerSebastian Reichel <sebastian.reichel@collabora.com>2026-03-03 23:58:07 +0100
commitc10b68e331c51aed8a615af701946dd85b2aca1c (patch)
tree9a976ddb58f8ac985ab086b98fe63bbd358ce6a3 /drivers
parent83a86e27c34d06ec2dc117fb293e80f78402df49 (diff)
power: supply: max17042: report time to full (max17055 & max77759)
Report the remaining time to full as calculated by the firmware for devices that implement this. Similar to time to empty, the reported value is only meaningful when charging, i.e. if it is != U16_MAX. Reviewed-by: Peter Griffin <peter.griffin@linaro.org> Signed-off-by: André Draszik <andre.draszik@linaro.org> Link: https://patch.msgid.link/20260302-max77759-fg-v3-11-3c5f01dbda23@linaro.org Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/supply/max17042_battery.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/power/supply/max17042_battery.c b/drivers/power/supply/max17042_battery.c
index bafbf87060559..167fb3fb37320 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_NOW,
// these two have to be at the end on the list
POWER_SUPPLY_PROP_CURRENT_NOW,
POWER_SUPPLY_PROP_CURRENT_AVG,
@@ -445,6 +446,21 @@ static int max17042_get_property(struct power_supply *psy,
val->intval = data * 5625 / 1000;
break;
+ case POWER_SUPPLY_PROP_TIME_TO_FULL_NOW:
+ if (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:
return -EINVAL;
}