All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type
@ 2021-08-05  8:58 Linus Walleij
  2021-08-05  8:58 ` [PATCH 2/2 v2] power: supply: core: Parse battery type/technology Linus Walleij
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Linus Walleij @ 2021-08-05  8:58 UTC (permalink / raw)
  To: Sebastian Reichel, Marcus Cooper; +Cc: linux-pm, Linus Walleij, devicetree

This adds a battery-type property and bindings for the different
"technologies" that are used in Linux. More types can be added.

This is needed to convert the custom ST-Ericsson AB8500 battery
properties over to the generic battery bindings.

Cc: devicetree@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v1->v2:
- Add devicetree list to Cc
- Use "device-chemistry" instead of "battery-type" as this
  has precedence in standards.
I need a bunch of new bindings for switch the STE AB8500 custom
bindings out, but I need to start somewhere, this is as good as
any place to start.
---
 .../devicetree/bindings/power/supply/battery.yaml  | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/Documentation/devicetree/bindings/power/supply/battery.yaml b/Documentation/devicetree/bindings/power/supply/battery.yaml
index c3b4b7543591..d56ac484fec5 100644
--- a/Documentation/devicetree/bindings/power/supply/battery.yaml
+++ b/Documentation/devicetree/bindings/power/supply/battery.yaml
@@ -31,6 +31,20 @@ properties:
   compatible:
     const: simple-battery
 
+  device-chemistry:
+    description: This describes the chemical technology of the battery.
+    oneOf:
+      - const: nickel-cadmium
+      - const: nickel-metal-hydride
+      - const: lithium-ion
+        description: This is a blanket type for all lithium-ion batteries,
+          including those below. If possible, a precise compatible string
+          from below should be used, but sometimes it is unknown which specific
+          lithium ion battery is employed and this wide compatible can be used.
+      - const: lithium-ion-polymer
+      - const: lithium-ion-iron-phosphate
+      - const: lithium-ion-manganese-oxide
+
   over-voltage-threshold-microvolt:
     description: battery over-voltage limit
 
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/2 v2] power: supply: core: Parse battery type/technology
  2021-08-05  8:58 [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Linus Walleij
@ 2021-08-05  8:58 ` Linus Walleij
  2021-08-05 16:04   ` Sebastian Reichel
  2021-08-05 16:03 ` [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Sebastian Reichel
  2021-08-13 18:26 ` Rob Herring
  2 siblings, 1 reply; 7+ messages in thread
From: Linus Walleij @ 2021-08-05  8:58 UTC (permalink / raw)
  To: Sebastian Reichel, Marcus Cooper; +Cc: linux-pm, Linus Walleij

This extends the struct power_supply_battery_info with a
"technology" field makes the core DT parser optionally obtain
this from the device tree.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
ChangeLog v1->v2:
- Drop the accidental double assignment of err as reported
  by the kernel test robot et al.
- Switch to "device-chemistry" instead of "battery-type"
  to indicate the type.
This is needed to migrate the STE AB8500 custom battery bindings
and parser to the generic parser.
---
 drivers/power/supply/power_supply_core.c | 20 ++++++++++++++++++++
 include/linux/power_supply.h             |  1 +
 2 files changed, 21 insertions(+)

diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index d99e2f11c183..dd62c871b2b5 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -571,6 +571,7 @@ int power_supply_get_battery_info(struct power_supply *psy,
 	int err, len, index;
 	const __be32 *list;
 
+	info->technology                     = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
 	info->energy_full_design_uwh         = -EINVAL;
 	info->charge_full_design_uah         = -EINVAL;
 	info->voltage_min_design_uv          = -EINVAL;
@@ -618,6 +619,25 @@ int power_supply_get_battery_info(struct power_supply *psy,
 	 * Documentation/power/power_supply_class.rst.
 	 */
 
+	err = of_property_read_string(battery_np, "device-chemistry", &value);
+	if (!err) {
+		if (!strcmp("nickel-cadmium", value))
+			info->technology = POWER_SUPPLY_TECHNOLOGY_NiCd;
+		else if (!strcmp("nickel-metal-hydride", value))
+			info->technology = POWER_SUPPLY_TECHNOLOGY_NiMH;
+		else if (!strcmp("lithium-ion", value))
+			/* Imprecise lithium-ion type */
+			info->technology = POWER_SUPPLY_TECHNOLOGY_LION;
+		else if (!strcmp("lithium-ion-polymer", value))
+			info->technology = POWER_SUPPLY_TECHNOLOGY_LIPO;
+		else if (!strcmp("lithium-ion-iron-phosphate", value))
+			info->technology = POWER_SUPPLY_TECHNOLOGY_LiFe;
+		else if (!strcmp("lithium-ion-manganese-oxide", value))
+			info->technology = POWER_SUPPLY_TECHNOLOGY_LiMn;
+		else
+			dev_warn(&psy->dev, "%s unknown battery type\n", value);
+	}
+
 	of_property_read_u32(battery_np, "energy-full-design-microwatt-hours",
 			     &info->energy_full_design_uwh);
 	of_property_read_u32(battery_np, "charge-full-design-microamp-hours",
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index be203985ecdd..9ca1f120a211 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -352,6 +352,7 @@ struct power_supply_resistance_temp_table {
  */
 
 struct power_supply_battery_info {
+	unsigned int technology;	    /* from the enum above */
 	int energy_full_design_uwh;	    /* microWatt-hours */
 	int charge_full_design_uah;	    /* microAmp-hours */
 	int voltage_min_design_uv;	    /* microVolts */
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type
  2021-08-05  8:58 [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Linus Walleij
  2021-08-05  8:58 ` [PATCH 2/2 v2] power: supply: core: Parse battery type/technology Linus Walleij
@ 2021-08-05 16:03 ` Sebastian Reichel
  2021-08-13 18:26 ` Rob Herring
  2 siblings, 0 replies; 7+ messages in thread
From: Sebastian Reichel @ 2021-08-05 16:03 UTC (permalink / raw)
  To: Linus Walleij; +Cc: Marcus Cooper, linux-pm, devicetree

[-- Attachment #1: Type: text/plain, Size: 2232 bytes --]

Hi,

On Thu, Aug 05, 2021 at 10:58:27AM +0200, Linus Walleij wrote:
> This adds a battery-type property and bindings for the different
> "technologies" that are used in Linux. More types can be added.
> 
> This is needed to convert the custom ST-Ericsson AB8500 battery
> properties over to the generic battery bindings.
> 
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ChangeLog v1->v2:
> - Add devicetree list to Cc
> - Use "device-chemistry" instead of "battery-type" as this
>   has precedence in standards.
> I need a bunch of new bindings for switch the STE AB8500 custom
> bindings out, but I need to start somewhere, this is as good as
> any place to start.
> ---

Waiting a bit to give Rob a chance to review this. From my side
it looks good.

Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

-- Sebastian

>  .../devicetree/bindings/power/supply/battery.yaml  | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/power/supply/battery.yaml b/Documentation/devicetree/bindings/power/supply/battery.yaml
> index c3b4b7543591..d56ac484fec5 100644
> --- a/Documentation/devicetree/bindings/power/supply/battery.yaml
> +++ b/Documentation/devicetree/bindings/power/supply/battery.yaml
> @@ -31,6 +31,20 @@ properties:
>    compatible:
>      const: simple-battery
>  
> +  device-chemistry:
> +    description: This describes the chemical technology of the battery.
> +    oneOf:
> +      - const: nickel-cadmium
> +      - const: nickel-metal-hydride
> +      - const: lithium-ion
> +        description: This is a blanket type for all lithium-ion batteries,
> +          including those below. If possible, a precise compatible string
> +          from below should be used, but sometimes it is unknown which specific
> +          lithium ion battery is employed and this wide compatible can be used.
> +      - const: lithium-ion-polymer
> +      - const: lithium-ion-iron-phosphate
> +      - const: lithium-ion-manganese-oxide
> +
>    over-voltage-threshold-microvolt:
>      description: battery over-voltage limit
>  
> -- 
> 2.31.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2 v2] power: supply: core: Parse battery type/technology
  2021-08-05  8:58 ` [PATCH 2/2 v2] power: supply: core: Parse battery type/technology Linus Walleij
@ 2021-08-05 16:04   ` Sebastian Reichel
  0 siblings, 0 replies; 7+ messages in thread
From: Sebastian Reichel @ 2021-08-05 16:04 UTC (permalink / raw)
  To: Linus Walleij; +Cc: Marcus Cooper, linux-pm

[-- Attachment #1: Type: text/plain, Size: 3272 bytes --]

Hi,

On Thu, Aug 05, 2021 at 10:58:28AM +0200, Linus Walleij wrote:
> This extends the struct power_supply_battery_info with a
> "technology" field makes the core DT parser optionally obtain
> this from the device tree.
> 
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>

-- Sebastian

> ChangeLog v1->v2:
> - Drop the accidental double assignment of err as reported
>   by the kernel test robot et al.
> - Switch to "device-chemistry" instead of "battery-type"
>   to indicate the type.
> This is needed to migrate the STE AB8500 custom battery bindings
> and parser to the generic parser.
> ---
>  drivers/power/supply/power_supply_core.c | 20 ++++++++++++++++++++
>  include/linux/power_supply.h             |  1 +
>  2 files changed, 21 insertions(+)
> 
> diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
> index d99e2f11c183..dd62c871b2b5 100644
> --- a/drivers/power/supply/power_supply_core.c
> +++ b/drivers/power/supply/power_supply_core.c
> @@ -571,6 +571,7 @@ int power_supply_get_battery_info(struct power_supply *psy,
>  	int err, len, index;
>  	const __be32 *list;
>  
> +	info->technology                     = POWER_SUPPLY_TECHNOLOGY_UNKNOWN;
>  	info->energy_full_design_uwh         = -EINVAL;
>  	info->charge_full_design_uah         = -EINVAL;
>  	info->voltage_min_design_uv          = -EINVAL;
> @@ -618,6 +619,25 @@ int power_supply_get_battery_info(struct power_supply *psy,
>  	 * Documentation/power/power_supply_class.rst.
>  	 */
>  
> +	err = of_property_read_string(battery_np, "device-chemistry", &value);
> +	if (!err) {
> +		if (!strcmp("nickel-cadmium", value))
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_NiCd;
> +		else if (!strcmp("nickel-metal-hydride", value))
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_NiMH;
> +		else if (!strcmp("lithium-ion", value))
> +			/* Imprecise lithium-ion type */
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_LION;
> +		else if (!strcmp("lithium-ion-polymer", value))
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_LIPO;
> +		else if (!strcmp("lithium-ion-iron-phosphate", value))
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_LiFe;
> +		else if (!strcmp("lithium-ion-manganese-oxide", value))
> +			info->technology = POWER_SUPPLY_TECHNOLOGY_LiMn;
> +		else
> +			dev_warn(&psy->dev, "%s unknown battery type\n", value);
> +	}
> +
>  	of_property_read_u32(battery_np, "energy-full-design-microwatt-hours",
>  			     &info->energy_full_design_uwh);
>  	of_property_read_u32(battery_np, "charge-full-design-microamp-hours",
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index be203985ecdd..9ca1f120a211 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -352,6 +352,7 @@ struct power_supply_resistance_temp_table {
>   */
>  
>  struct power_supply_battery_info {
> +	unsigned int technology;	    /* from the enum above */
>  	int energy_full_design_uwh;	    /* microWatt-hours */
>  	int charge_full_design_uah;	    /* microAmp-hours */
>  	int voltage_min_design_uv;	    /* microVolts */
> -- 
> 2.31.1
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type
  2021-08-05  8:58 [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Linus Walleij
  2021-08-05  8:58 ` [PATCH 2/2 v2] power: supply: core: Parse battery type/technology Linus Walleij
  2021-08-05 16:03 ` [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Sebastian Reichel
@ 2021-08-13 18:26 ` Rob Herring
  2021-08-13 21:46   ` Linus Walleij
  2 siblings, 1 reply; 7+ messages in thread
From: Rob Herring @ 2021-08-13 18:26 UTC (permalink / raw)
  To: Linus Walleij; +Cc: Sebastian Reichel, Marcus Cooper, linux-pm, devicetree

On Thu, Aug 05, 2021 at 10:58:27AM +0200, Linus Walleij wrote:
> This adds a battery-type property and bindings for the different

s/battery-type/"device-chemistry"/

Otherwise,

Reviewed-by: Rob Herring <robh@kernel.org>

> "technologies" that are used in Linux. More types can be added.
> 
> This is needed to convert the custom ST-Ericsson AB8500 battery
> properties over to the generic battery bindings.
> 
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> ChangeLog v1->v2:
> - Add devicetree list to Cc
> - Use "device-chemistry" instead of "battery-type" as this
>   has precedence in standards.
> I need a bunch of new bindings for switch the STE AB8500 custom
> bindings out, but I need to start somewhere, this is as good as
> any place to start.
> ---
>  .../devicetree/bindings/power/supply/battery.yaml  | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type
  2021-08-13 18:26 ` Rob Herring
@ 2021-08-13 21:46   ` Linus Walleij
  2021-08-14 10:55     ` Sebastian Reichel
  0 siblings, 1 reply; 7+ messages in thread
From: Linus Walleij @ 2021-08-13 21:46 UTC (permalink / raw)
  To: Rob Herring
  Cc: Sebastian Reichel, Marcus Cooper, Linux PM list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

On Fri, Aug 13, 2021 at 8:26 PM Rob Herring <robh@kernel.org> wrote:
> On Thu, Aug 05, 2021 at 10:58:27AM +0200, Linus Walleij wrote:
> > This adds a battery-type property and bindings for the different
>
> s/battery-type/"device-chemistry"/
>
> Otherwise,
>
> Reviewed-by: Rob Herring <robh@kernel.org>

Thanks Rob, Sebastian tell me if you can fix this when applying
or if you want me to respin the patch.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type
  2021-08-13 21:46   ` Linus Walleij
@ 2021-08-14 10:55     ` Sebastian Reichel
  0 siblings, 0 replies; 7+ messages in thread
From: Sebastian Reichel @ 2021-08-14 10:55 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Rob Herring, Marcus Cooper, Linux PM list,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS

[-- Attachment #1: Type: text/plain, Size: 629 bytes --]

Hi,

On Fri, Aug 13, 2021 at 11:46:52PM +0200, Linus Walleij wrote:
> On Fri, Aug 13, 2021 at 8:26 PM Rob Herring <robh@kernel.org> wrote:
> > On Thu, Aug 05, 2021 at 10:58:27AM +0200, Linus Walleij wrote:
> > > This adds a battery-type property and bindings for the different
> >
> > s/battery-type/"device-chemistry"/
> >
> > Otherwise,
> >
> > Reviewed-by: Rob Herring <robh@kernel.org>
> 
> Thanks Rob, Sebastian tell me if you can fix this when applying
> or if you want me to respin the patch.

No, that's fine. I queued both patches with type changed to
chemistry in the commit messages.

-- Sebastian

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-08-14 10:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-05  8:58 [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Linus Walleij
2021-08-05  8:58 ` [PATCH 2/2 v2] power: supply: core: Parse battery type/technology Linus Walleij
2021-08-05 16:04   ` Sebastian Reichel
2021-08-05 16:03 ` [PATCH 1/2 v2] dt-bindings: power: Extend battery bindings with type Sebastian Reichel
2021-08-13 18:26 ` Rob Herring
2021-08-13 21:46   ` Linus Walleij
2021-08-14 10:55     ` Sebastian Reichel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.