[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251027210816.GB1565353-robh@kernel.org>
Date: Mon, 27 Oct 2025 16:08:16 -0500
From: Rob Herring <robh@...nel.org>
To: Matti Vaittinen <mazziesaccount@...il.com>
Cc: Matti Vaittinen <matti.vaittinen@...rohmeurope.com>,
Lee Jones <lee@...nel.org>, Pavel Machek <pavel@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Sebastian Reichel <sre@...nel.org>,
Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
Michael Turquette <mturquette@...libre.com>,
Stephen Boyd <sboyd@...nel.org>,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <brgl@...ev.pl>,
Andreas Kemnade <andreas@...nade.info>,
Alexandre Belloni <alexandre.belloni@...tlin.com>,
linux-leds@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org,
linux-clk@...r.kernel.org, linux-gpio@...r.kernel.org,
linux-rtc@...r.kernel.org
Subject: Re: [PATCH v2 03/15] dt-bindings: power: supply: BD72720 managed
battery
On Mon, Oct 27, 2025 at 01:45:23PM +0200, Matti Vaittinen wrote:
> The BD72720 PMIC has a battery charger + coulomb counter block. These
> can be used to manage charging of a lithium-ion battery and to do fuel
> gauging.
>
> ROHM has developed a so called "zero-correction" -algorithm to improve
> the fuel-gauging accuracy close to the point where battery is depleted.
> This relies on battery specific "VDR" tables, which are measured from
> the battery, and which describe the voltage drop rate. More thorough
> explanation about the "zero correction" and "VDR" parameters is here:
> https://lore.kernel.org/all/676253b9-ff69-7891-1f26-a8b5bb5a421b@fi.rohmeurope.com/
>
> Document the VDR zero-correction specific battery properties used by the
> BD72720 and some other ROHM chargers.
>
> Signed-off-by: Matti Vaittinen <mazziesaccount@...il.com>
> ---
> Revision history:
> RFCv1 => v2:
> - Add units to rohm,volt-drop-soc (tenths of %)
> - Give real temperatures matching the VDR tables, instead of vague
> 'high', 'normal', 'low', 'very low'. (Add table of temperatures and
> use number matching the right temperature index in the VDR table name).
> - Fix typoed 'algorithm' in commit message.
>
> The parameters are describing the battery voltage drop rates - so they
> are properties of the battery, not the charger. Thus they do not belong
> in the charger node.
>
> The right place for them is the battery node, which is described by the
> generic "battery.yaml". I was not comfortable with adding these
> properties to the generic battery.yaml because they are:
> - Meaningful only for those charger drivers which have the VDR
> algorithm implemented. (And even though the algorithm is not charger
> specific, AFAICS, it is currently only used by some ROHM PMIC
> drivers).
> - Technique of measuring the VDR tables for a battery is not widely
> known. AFAICS, only folks at ROHM are measuring those for some
> customer products. We do have those tables available for some of the
> products though (Kobo?).
> ---
> .../power/supply/rohm,vdr-battery.yaml | 80 +++++++++++++++++++
> 1 file changed, 80 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
>
> diff --git a/Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml b/Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
> new file mode 100644
> index 000000000000..1ab3418d4338
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
> @@ -0,0 +1,80 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/power/supply/rohm,vdr-battery.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Battery managed by the BD72720 PMIC
> +
> +maintainers:
> + - Matti Vaittinen <mazziesaccount@...il.com>
> +
> +description:
> + A battery which has VDR parameters measuerd for ROHM chargers.
> +
> +allOf:
> + - $ref: battery.yaml#
> +
> +properties:
> + rohm,voltage-vdr-thresh-microvolt:
> + description: Threshold for starting the VDR correction
No constraints? Is 4000V okay?
> +
> + rohm,volt-drop-soc:
> + description: Table of capacity values matching the values in VDR tables.
> + The value should be given as tenths of a percentage.
We have a standard unit for this too. '-bp' or basis points (1/100 of
percent).
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> +
> + rohm,volt-drop-temperatures-millicelsius:
> + description: An array containing the temperature in milli celsius, for each
> + of the VDR lookup table.
> +
> +patternProperties:
> + '^rohm,volt-drop-[0-9]-microvolt':
> + description: Table of the voltage drop rate (VDR) values. Each entry in the
> + table should match a capacity value in the rohm,volt-drop-soc table.
> + Furthermore, the values should be obtained for the temperature given in
> + rohm,volt-drop-temperatures-millicelsius table at index matching the
> + number in this table's name.
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + power {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + battery: battery {
> + compatible = "simple-battery";
> +
> + ocv-capacity-celsius = <25>;
> + ocv-capacity-table-0 = <4200000 100 4184314 100 4140723 95 4099487 90
> + 4060656 85 4024350 80 3991121 75 3954379 70 3913265 65 3877821 60
> + 3855577 55 3837466 50 3822194 45 3809012 40 3795984 35 3780647 30
> + 3760505 25 3741532 20 3718837 15 3696698 10 3690594 5 3581427 0>;
> +
> + rohm,volt-drop-soc = <1000 1000 950 900 850 800 750 700 650 600 550 500
> + 450 400 350 300 250 200 150 100 50 00 (-50)>;
> +
> + rohm,volt-drop-temperatures-millicelsius = <45000 25000 5000 0>;
> +
> + rohm,volt-drop-0-microvolt = <100 100 102 104 106 109 114 124
> + 117 107 107 109 112 116 117 108 109 109 108 109 122 126 130>;
> +
> + rohm,volt-drop-1-microvolt = <100 100 102 105 98 100 105 102
> + 101 99 98 100 103 105 109 117 111 109 110 114 128 141 154>;
> +
> + rohm,volt-drop-2-microvolt = <100 100 98 107 112 114 118 118 112
> + 108 108 110 111 113 117 123 131 144 157 181 220 283 399>;
> +
> + rohm,volt-drop-3-temp-microvolt = <86 86 105 109 114 110 115 115
> + 110 108 110 112 114 118 124 134 136 160 177 201 241 322 403>;
> +
> + rohm,voltage-vdr-thresh-microvolt = <4150000>;
> +
> + charge-full-design-microamp-hours = <1799000>;
> + voltage-max-design-microvolt = <4200000>;
> + voltage-min-design-microvolt = <3500000>;
> + degrade-cycle-microamp-hours = <131>;
> + };
> + };
> --
> 2.51.0
>
Powered by blists - more mailing lists