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>
 
                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
 
 };
 
 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 = {
 
                .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] = {
 
 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,
 };