* [PATCH v2 1/2] power: supply: Add PbAc, NiZn, RAM, and ZnAr support
2026-06-24 13:57 PATCH v2 0/2] Power: supply: Add PbAc, NiZn, RAM, and ZnAr support Boris Shtrasman
@ 2026-06-24 13:57 ` Boris Shtrasman
2026-06-24 13:57 ` [PATCH v2 2/2] power: supply: sbs-battery: " Boris Shtrasman
1 sibling, 0 replies; 3+ messages in thread
From: Boris Shtrasman @ 2026-06-24 13:57 UTC (permalink / raw)
To: Sebastian Reichel, Shuah Khan
Cc: linux-pm, linux-kernel, linux-kselftest, linux-api,
Boris Shtrasman
Add four new members to the POWER_SUPPLY_TECHNOLOGY
enum and sysfs interface to represent the Smart Battery
Data Specification v1.1 (Section 5.1.30 DeviceChemistry) battery types:
- Lead Acid (PbAc)
- Nickel Zinc (NiZn)
- Rechargeable Alkaline-Manganese (RAM)
- Zinc Air (ZnAr)
Update documentation to express these types.
Update ABI testing for these types.
Link: https://sbs-forum.org/specs/sbdat110.pdf
Signed-off-by: Boris Shtrasman <borissh1983@gmail.com>
---
Documentation/ABI/testing/sysfs-class-power | 2 +-
drivers/power/supply/power_supply_sysfs.c | 4 ++++
include/linux/power_supply.h | 4 ++++
.../selftests/power_supply/test_power_supply_properties.sh | 3 ++-
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 32697b926cc8..5641f1fd5fd6 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -525,7 +525,7 @@ Description:
Valid values:
"Unknown", "NiMH", "Li-ion", "Li-poly", "LiFe",
- "NiCd", "LiMn"
+ "NiCd", "LiMn", "PbAc", "NiZn", "RAM", "ZnAr"
What: /sys/class/power_supply/<supply_name>/voltage_avg,
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index f30a7b9ccd5e..9d6b24856c8b 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -124,6 +124,10 @@ static const char * const POWER_SUPPLY_TECHNOLOGY_TEXT[] = {
[POWER_SUPPLY_TECHNOLOGY_LiFe] = "LiFe",
[POWER_SUPPLY_TECHNOLOGY_NiCd] = "NiCd",
[POWER_SUPPLY_TECHNOLOGY_LiMn] = "LiMn",
+ [POWER_SUPPLY_TECHNOLOGY_PbAc] = "PbAc",
+ [POWER_SUPPLY_TECHNOLOGY_NiZn] = "NiZn",
+ [POWER_SUPPLY_TECHNOLOGY_RAM] = "RAM",
+ [POWER_SUPPLY_TECHNOLOGY_ZnAr] = "ZnAr",
};
static const char * const POWER_SUPPLY_CAPACITY_LEVEL_TEXT[] = {
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index 7a5e4c3242a0..034800cd21da 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -83,6 +83,10 @@ enum {
POWER_SUPPLY_TECHNOLOGY_LiFe,
POWER_SUPPLY_TECHNOLOGY_NiCd,
POWER_SUPPLY_TECHNOLOGY_LiMn,
+ POWER_SUPPLY_TECHNOLOGY_PbAc,
+ POWER_SUPPLY_TECHNOLOGY_NiZn,
+ POWER_SUPPLY_TECHNOLOGY_RAM,
+ POWER_SUPPLY_TECHNOLOGY_ZnAr,
};
enum {
diff --git a/tools/testing/selftests/power_supply/test_power_supply_properties.sh b/tools/testing/selftests/power_supply/test_power_supply_properties.sh
index a66b1313ed88..1ebac6fe5d23 100755
--- a/tools/testing/selftests/power_supply/test_power_supply_properties.sh
+++ b/tools/testing/selftests/power_supply/test_power_supply_properties.sh
@@ -74,7 +74,8 @@ for DEVNAME in $supplies; do
test_sysfs_prop_optional model_name
test_sysfs_prop_optional manufacturer
test_sysfs_prop_optional serial_number
- test_sysfs_prop_optional_list technology "Unknown","NiMH","Li-ion","Li-poly","LiFe","NiCd","LiMn"
+ test_sysfs_prop_optional_list technology "Unknown","NiMH","Li-ion","Li-poly","LiFe","NiCd"\
+ ,"LiMn","PbAc","NiZn","RAM","ZnAr"
test_sysfs_prop_optional cycle_count
--
2.47.3
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH v2 2/2] power: supply: sbs-battery: Add PbAc, NiZn, RAM, and ZnAr support
2026-06-24 13:57 PATCH v2 0/2] Power: supply: Add PbAc, NiZn, RAM, and ZnAr support Boris Shtrasman
2026-06-24 13:57 ` [PATCH v2 1/2] power: " Boris Shtrasman
@ 2026-06-24 13:57 ` Boris Shtrasman
1 sibling, 0 replies; 3+ messages in thread
From: Boris Shtrasman @ 2026-06-24 13:57 UTC (permalink / raw)
To: Sebastian Reichel, Shuah Khan
Cc: linux-pm, linux-kernel, linux-kselftest, linux-api,
Boris Shtrasman
Add support for PbAc, NiZn, RAM, and ZnAr chemistries as defined in the
Smart Battery Data Specification v1.1 (Section 5.1.30 DeviceChemistry).
Currently, the sbs-battery driver only handles LION, LiP, NiCd and NiMH.
The Smart Battery specification defines 8 possible values:
- Lead Acid (PbAc)
- Lithium Ion (LION)
- Nickel Cadmium (NiCd)
- Nickel Metal Hydride (NiMH)
- Nickel Zinc (NiZn)
- Rechargeable Alkaline-Manganese (RAM)
- Zinc Air (ZnAr)
- Lithium Polymer (LiP)
Link: https://sbs-forum.org/specs/sbdat110.pdf
Signed-off-by: Boris Shtrasman <borissh1983@gmail.com>
---
drivers/power/supply/sbs-battery.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
index 43c48196c167..42a941e99155 100644
--- a/drivers/power/supply/sbs-battery.c
+++ b/drivers/power/supply/sbs-battery.c
@@ -860,6 +860,14 @@ static int sbs_get_chemistry(struct sbs_info *chip,
chip->technology = POWER_SUPPLY_TECHNOLOGY_NiCd;
else if (!strncasecmp(chemistry, "NiMH", 4))
chip->technology = POWER_SUPPLY_TECHNOLOGY_NiMH;
+ else if (!strncasecmp(chemistry, "PbAc", 4))
+ chip->technology = POWER_SUPPLY_TECHNOLOGY_PbAc;
+ else if (!strncasecmp(chemistry, "NiZn", 4))
+ chip->technology = POWER_SUPPLY_TECHNOLOGY_NiZn;
+ else if (!strncasecmp(chemistry, "RAM", 3))
+ chip->technology = POWER_SUPPLY_TECHNOLOGY_RAM;
+ else if (!strncasecmp(chemistry, "ZnAr", 4))
+ chip->technology = POWER_SUPPLY_TECHNOLOGY_ZnAr;
else
chip->technology = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
--
2.47.3
^ permalink raw reply related [flat|nested] 3+ messages in thread