Re: [PATCH v5 12/13] power: supply: add inhibit-charge-awake to charge_behaviour

Hans de Goede
2025-03-17T16:11:13Z

Hi,

On 17-Mar-25 4:53 PM, Antheas Kapenekakis wrote:
> OneXPlayer devices have a charge inhibit feature
> that allows the user to select between it being
> active always or only when the device is on.
>
> Therefore, add attribute inhibit-charge-awake to
> charge_behaviour to allow the user to select
> that charge should be paused only when the device
> is awake.
>
> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>

Thanks, patch looks good to me, FWIW:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans

> ---
> Documentation/ABI/testing/sysfs-class-power | 11 ++++++-----
> drivers/power/supply/power_supply_sysfs.c | 1 +
> drivers/power/supply/test_power.c | 1 +
> include/linux/power_supply.h | 1 +
> 4 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
> index 2a5c1a09a28f9..78afb2422fc5a 100644
> --- a/Documentation/ABI/testing/sysfs-class-power
> +++ b/Documentation/ABI/testing/sysfs-class-power
> @@ -508,11 +508,12 @@ Description:
> Access: Read, Write
>
> Valid values:
> - ================ ====================================
> - auto: Charge normally, respect thresholds
> - inhibit-charge: Do not charge while AC is attached
> - force-discharge: Force discharge while AC is attached
> - ================ ====================================
> + ===================== ========================================
> + auto: Charge normally, respect thresholds
> + inhibit-charge: Do not charge while AC is attached
> + inhibit-charge-awake: inhibit-charge only when device is awake
> + force-discharge: Force discharge while AC is attached
> + ===================== ========================================
>
> What: /sys/class/power_supply/<supply_name>/technology
> Date: May 2007
> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
> index edb058c19c9c4..8d036faf220ec 100644
> --- a/drivers/power/supply/power_supply_sysfs.c
> +++ b/drivers/power/supply/power_supply_sysfs.c
> @@ -140,6 +140,7 @@ static const char * const POWER_SUPPLY_SCOPE_TEXT[] = {
> static const char * const POWER_SUPPLY_CHARGE_BEHAVIOUR_TEXT[] = {
> [POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO] = "auto",
> [POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE] = "inhibit-charge",
> + [POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE_AWAKE] = "inhibit-charge-awake",
> [POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE] = "force-discharge",
> };
>
> diff --git a/drivers/power/supply/test_power.c b/drivers/power/supply/test_power.c
> index 2a975a110f485..958e0c0cf2876 100644
> --- a/drivers/power/supply/test_power.c
> +++ b/drivers/power/supply/test_power.c
> @@ -214,6 +214,7 @@ static const struct power_supply_desc test_power_desc[] = {
> .property_is_writeable = test_power_battery_property_is_writeable,
> .charge_behaviours = BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO)
> | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE)
> + | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE_AWAKE)
> | BIT(POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE),
> },
> [TEST_USB] = {
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index 6ed53b2921624..bb8e9e62ce834 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -212,6 +212,7 @@ enum power_supply_usb_type {
> enum power_supply_charge_behaviour {
> POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO = 0,
> POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE,
> + POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE_AWAKE,
> POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE,
> };
>