Re: [PATCH v3] power: supply: axp20x_battery: implement writeable status to enable/disable battery charging

From: Sebastian Reichel
Date: Fri Jun 04 2021 - 08:20:51 EST


Hi,

On Wed, May 12, 2021 at 12:58:56PM +0200, Hermann Lauer wrote:
> Allow disabling and reenabling battery charging of an axp209 PMIC through a
> writable status property. With the current driver code charging is always on.
>
> This works on the axp209 of Banana {Pi M1+,Pro} and should work on all AXP chips.
>
> Signed-off-by: Hermann.Lauer@xxxxxxxxxxxxxxxxx
> ---

Thanks, queued.

-- Sebastian

> v2: add fallthrough and improve commit message (thanks to Maxime and ChenYu)
> v3: fix fallthrough usage
>
> Thanks to ChenYu for the idea and greetings
> Hermann
>
> drivers/power/supply/axp20x_battery.c | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/power/supply/axp20x_battery.c b/drivers/power/supply/axp20x_battery.c
> --- a/drivers/power/supply/axp20x_battery.c
> +++ b/drivers/power/supply/axp20x_battery.c
> @@ -40,6 +40,7 @@
> #define AXP209_FG_PERCENT GENMASK(6, 0)
> #define AXP22X_FG_VALID BIT(7)
>
> +#define AXP20X_CHRG_CTRL1_ENABLE BIT(7)
> #define AXP20X_CHRG_CTRL1_TGT_VOLT GENMASK(6, 5)
> #define AXP20X_CHRG_CTRL1_TGT_4_1V (0 << 5)
> #define AXP20X_CHRG_CTRL1_TGT_4_15V (1 << 5)
> @@ -468,7 +469,18 @@
> case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX:
> return axp20x_set_max_constant_charge_current(axp20x_batt,
> val->intval);
> + case POWER_SUPPLY_PROP_STATUS:
> + switch (val->intval) {
> + case POWER_SUPPLY_STATUS_CHARGING:
> + return regmap_update_bits(axp20x_batt->regmap, AXP20X_CHRG_CTRL1,
> + AXP20X_CHRG_CTRL1_ENABLE, AXP20X_CHRG_CTRL1_ENABLE);
>
> + case POWER_SUPPLY_STATUS_DISCHARGING:
> + case POWER_SUPPLY_STATUS_NOT_CHARGING:
> + return regmap_update_bits(axp20x_batt->regmap, AXP20X_CHRG_CTRL1,
> + AXP20X_CHRG_CTRL1_ENABLE, 0);
> + }
> + fallthrough;
> default:
> return -EINVAL;
> }
> @@ -491,7 +503,8 @@
> static int axp20x_battery_prop_writeable(struct power_supply *psy,
> enum power_supply_property psp)
> {
> - return psp == POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN ||
> + return psp == POWER_SUPPLY_PROP_STATUS ||
> + psp == POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN ||
> psp == POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN ||
> psp == POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT ||
> psp == POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX;

Attachment: signature.asc
Description: PGP signature