]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
power: supply: max1720x: add charge full property
authorDimitri Fedrau <dimitri.fedrau@liebherr.com>
Tue, 3 Dec 2024 08:04:36 +0000 (09:04 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 4 Dec 2024 22:33:32 +0000 (23:33 +0100)
Charge full holds the calculated full capacity of the cell based on all
inputs from the ModelGauge m5 algorithm including empty compensation. A
new full-capacity value is calculated continuously as application
conditions change.

Signed-off-by: Dimitri Fedrau <dimitri.fedrau@liebherr.com>
Link: https://lore.kernel.org/r/20241203-max1720x-charge-full-prop-v1-1-b02776b43f17@liebherr.com
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/max1720x_battery.c

index 33105419e2427bb37963bda9948b647c239f8faa..9c7e14d2c7b87b8194511f36ade16e774281333e 100644 (file)
@@ -29,6 +29,7 @@
 #define MAX172XX_TEMP                  0x08    /* Temperature */
 #define MAX172XX_CURRENT               0x0A    /* Actual current */
 #define MAX172XX_AVG_CURRENT           0x0B    /* Average current */
+#define MAX172XX_FULL_CAP              0x10    /* Calculated full capacity */
 #define MAX172XX_TTE                   0x11    /* Time to empty */
 #define MAX172XX_AVG_TA                        0x16    /* Average temperature */
 #define MAX172XX_CYCLES                        0x17
@@ -250,6 +251,7 @@ static const enum power_supply_property max1720x_battery_props[] = {
        POWER_SUPPLY_PROP_TEMP,
        POWER_SUPPLY_PROP_CURRENT_NOW,
        POWER_SUPPLY_PROP_CURRENT_AVG,
+       POWER_SUPPLY_PROP_CHARGE_FULL,
        POWER_SUPPLY_PROP_MODEL_NAME,
        POWER_SUPPLY_PROP_MANUFACTURER,
 };
@@ -362,6 +364,10 @@ static int max1720x_battery_get_property(struct power_supply *psy,
                ret = regmap_read(info->regmap, MAX172XX_AVG_CURRENT, &reg_val);
                val->intval = max172xx_current_to_voltage(reg_val) / info->rsense;
                break;
+       case POWER_SUPPLY_PROP_CHARGE_FULL:
+               ret = regmap_read(info->regmap, MAX172XX_FULL_CAP, &reg_val);
+               val->intval = max172xx_capacity_to_ps(reg_val);
+               break;
        case POWER_SUPPLY_PROP_MODEL_NAME:
                ret = regmap_read(info->regmap, MAX172XX_DEV_NAME, &reg_val);
                reg_val = FIELD_GET(MAX172XX_DEV_NAME_TYPE_MASK, reg_val);