power: supply: core: Add additional health status values
authorArmin Wolf <W_Armin@gmx.de>
Tue, 29 Apr 2025 00:36:03 +0000 (02:36 +0200)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 12 May 2025 10:20:37 +0000 (13:20 +0300)
Some batteries can signal when an internal fuse was blown. In such a
case POWER_SUPPLY_HEALTH_DEAD is too vague for userspace applications
to perform meaningful diagnostics.

Additionally some batteries can also signal when some of their
internal cells are imbalanced. In such a case returning
POWER_SUPPLY_HEALTH_UNSPEC_FAILURE is again too vague for userspace
applications to perform meaningful diagnostics.

Add new health status values for both cases.

Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/20250429003606.303870-1-W_Armin@gmx.de
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
include/linux/power_supply.h

index 78afb24..dfa824b 100644 (file)
@@ -456,7 +456,7 @@ Description:
                              "Over voltage", "Under voltage", "Unspecified failure", "Cold",
                              "Watchdog timer expire", "Safety timer expire",
                              "Over current", "Calibration required", "Warm",
-                             "Cool", "Hot", "No battery"
+                             "Cool", "Hot", "No battery", "Blown fuse", "Cell imbalance"
 
 What:          /sys/class/power_supply/<supply_name>/precharge_current
 Date:          June 2017
index f769d59..b6918ad 100644 (file)
@@ -110,6 +110,8 @@ static const char * const POWER_SUPPLY_HEALTH_TEXT[] = {
        [POWER_SUPPLY_HEALTH_COOL]                  = "Cool",
        [POWER_SUPPLY_HEALTH_HOT]                   = "Hot",
        [POWER_SUPPLY_HEALTH_NO_BATTERY]            = "No battery",
+       [POWER_SUPPLY_HEALTH_BLOWN_FUSE]            = "Blown fuse",
+       [POWER_SUPPLY_HEALTH_CELL_IMBALANCE]        = "Cell imbalance",
 };
 
 static const char * const POWER_SUPPLY_TECHNOLOGY_TEXT[] = {
index cbec930..03786c8 100644 (file)
@@ -71,6 +71,8 @@ enum {
        POWER_SUPPLY_HEALTH_COOL,
        POWER_SUPPLY_HEALTH_HOT,
        POWER_SUPPLY_HEALTH_NO_BATTERY,
+       POWER_SUPPLY_HEALTH_BLOWN_FUSE,
+       POWER_SUPPLY_HEALTH_CELL_IMBALANCE,
 };
 
 enum {