power: supply: add inhibit-charge-awake to charge_behaviour
authorAntheas Kapenekakis <lkml@antheas.dev>
Fri, 25 Apr 2025 11:18:18 +0000 (13:18 +0200)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 30 Apr 2025 11:05:42 +0000 (14:05 +0300)
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.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Derek J. Clark <derekjohn.clark@gmail.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
Link: https://lore.kernel.org/r/20250425111821.88746-14-lkml@antheas.dev
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Documentation/ABI/testing/sysfs-class-power
drivers/power/supply/power_supply_sysfs.c
drivers/power/supply/test_power.c
include/linux/power_supply.h

index 2a5c1a0..78afb24 100644 (file)
@@ -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
index edb058c..f769d59 100644 (file)
@@ -138,9 +138,10 @@ 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_FORCE_DISCHARGE] = "force-discharge",
+       [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",
 };
 
 static struct power_supply_attr power_supply_attrs[] __ro_after_init = {
index 2a975a1..958e0c0 100644 (file)
@@ -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] = {
index 8888245..cbec930 100644 (file)
@@ -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,
 };