The ROHM BD72720 is a power management IC integrating regulators, GPIOs,
charger, LEDs, RTC and a clock gate.
Add dt-binding doc for ROHM BD72720.
Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
---
Revision history:
RFCv1 => v2:
- Typofixes
---
.../bindings/mfd/rohm,bd72720-pmic.yaml | 269 ++++++++++++++++++
1 file changed, 269 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
new file mode 100644
index 000000000000..b0d4bc01d199
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
@@ -0,0 +1,269 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/rohm,bd72720-pmic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD72720 Power Management Integrated Circuit
+
+maintainers:
+ - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description: |
+ BD72720 is a single-chip power management IC for battery-powered portable
+ devices. The BD72720 integrates 10 bucks and 11 LDOs, and a 3000 mA
+ switching charger. The IC also includes a Coulomb counter, a real-time
+ clock (RTC), GPIOs and a 32.768 kHz clock gate.
+
+# In addition to the properties found from the charger node, the ROHM BD72720
+# uses properties from a static battery node. Please see the:
+# Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
+#
+# Following properties are used
+# when present:
+#
+# charge-full-design-microamp-hours: Battry capacity in mAh
+# voltage-max-design-microvolt: Maximum voltage
+# voltage-min-design-microvolt: Minimum voltage system is still operating.
+# degrade-cycle-microamp-hours: Capacity lost due to aging at each full
+# charge cycle.
+# ocv-capacity-celsius: Array of OCV table temperatures. 1/table.
+# ocv-capacity-table-<N>: Table of OCV voltage/SOC pairs. Corresponds
+# N.th temperature in ocv-capacity-celsius
+#
+# ROHM specific properties:
+# rohm,voltage-vdr-thresh-microvolt: Threshold for starting the VDR correction
+# rohm,volt-drop-soc: Table of capacity values matching the
+# values in VDR tables.
+# rohm,volt-drop-high-temp-microvolt: VDR table for high temperature
+# rohm,volt-drop-normal-temp-microvolt: VDR table for normal temperature
+# rohm,volt-drop-low-temp-microvolt: VDR table for low temperature
+# rohm,volt-drop-very-low-temp-microvolt: VDR table for very low temperature
+#
+# VDR tables are (usually) determined for a specific battery by ROHM.
+# The battery node would then be referred from the charger node:
+#
+# monitored-battery = <&battery>;
+
+properties:
+ compatible:
+ const: rohm,bd72720
+
+ reg:
+ description:
+ I2C slave address.
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+ description: |
+ The first cell is the pin number and the second cell is used to specify
+ flags. See ../gpio/gpio.txt for more information.
+
+ clocks:
+ maxItems: 1
+
+ "#clock-cells":
+ const: 0
+
+ clock-output-names:
+ const: bd71828-32k-out
+
+ rohm,clkout-open-drain:
+ description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos".
+ $ref: /schemas/types.yaml#/definitions/uint32
+ minimum: 0
+ maximum: 1
+
+ rohm,charger-sense-resistor-milli-ohms:
+ minimum: 10
+ maximum: 50
+ description: |
+ BD72720 has a SAR ADC for measuring charging currents. External sense
+ resistor (RSENSE in data sheet) should be used. If some other but
+ 30 mOhm resistor is used the resistance value should be given here in
+ milli Ohms.
+
+ regulators:
+ $ref: ../regulator/rohm,bd77270-regulator.yaml
+ description:
+ List of child nodes that specify the regulators.
+
+ leds:
+ $ref: ../leds/rohm,bd71828-leds.yaml
+
+ rohm,pin-dvs0:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ BD72720 has 4 different OTP options to determine the use of dvs0-pin.
+ OTP0 - regulator RUN state control.
+ OTP1 - GPI.
+ OTP2 - GPO.
+ OTP3 - Power sequencer output.
+ This property specifies the use of the pin.
+ enum:
+ - dvs-input
+ - gpi
+ - gpo
+
+ rohm,pin-dvs1:
+ $ref: /schemas/types.yaml#/definitions/string
+ description:
+ see rohm,pin-dvs0
+ enum:
+ - dvs-input
+ - gpi
+ - gpo
+
+ rohm,pin-exten0:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: BD72720 has an OTP option to use exten0-pin for different
+ purposes. Set this property accordingly.
+ const: gpo
+
+ rohm,pin-exten1:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: BD72720 has an OTP option to use exten1-pin for different
+ purposes. Set this property accordingly.
+ const: gpo
+
+ rohm,pin-fault_b:
+ $ref: /schemas/types.yaml#/definitions/string
+ description: BD72720 has an OTP option to use fault_b-pin for different
+ purposes. Set this property accordingly.
+ const: gpo
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - "#clock-cells"
+ - regulators
+ - gpio-controller
+ - "#gpio-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/leds/common.h>
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pmic: pmic@4b {
+ compatible = "rohm,bd71828";
+ reg = <0x4b>;
+
+ interrupt-parent = <&gpio1>;
+ interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+
+ clocks = <&osc 0>;
+ #clock-cells = <0>;
+ clock-output-names = "bd71828-32k-out";
+
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-reserved-ranges = <0 1>, <2 1>;
+
+ rohm,charger-sense-resistor-ohms = <10000000>;
+
+ regulators {
+ buck1: BUCK1 {
+ regulator-name = "buck1";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-ramp-delay = <2500>;
+ };
+ buck2: BUCK2 {
+ regulator-name = "buck2";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-ramp-delay = <2500>;
+ };
+ buck3: BUCK3 {
+ regulator-name = "buck3";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <2000000>;
+ };
+ buck4: BUCK4 {
+ regulator-name = "buck4";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ buck5: BUCK5 {
+ regulator-name = "buck5";
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ buck6: BUCK6 {
+ regulator-name = "buck6";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-ramp-delay = <2500>;
+ };
+ buck7: BUCK7 {
+ regulator-name = "buck7";
+ regulator-min-microvolt = <500000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-ramp-delay = <2500>;
+ };
+ ldo1: LDO1 {
+ regulator-name = "ldo1";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ ldo2: LDO2 {
+ regulator-name = "ldo2";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ ldo3: LDO3 {
+ regulator-name = "ldo3";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ ldo4: LDO4 {
+ regulator-name = "ldo4";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ ldo5: LDO5 {
+ regulator-name = "ldo5";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ ldo6: LDO6 {
+ regulator-name = "ldo6";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ ldo7_reg: LDO7 {
+ regulator-name = "ldo7";
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+ };
+
+ leds {
+ compatible = "rohm,bd71828-leds";
+
+ led-1 {
+ rohm,led-compatible = "bd71828-grnled";
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+ led-2 {
+ rohm,led-compatible = "bd71828-ambled";
+ function = LED_FUNCTION_CHARGING;
+ color = <LED_COLOR_ID_AMBER>;
+ };
+ };
+ };
+ };
--
2.51.0
Hi Matti, thanks for your patch! On Mon, Oct 27, 2025 at 12:45 PM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > + rohm,clkout-open-drain: > + description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos". > + $ref: /schemas/types.yaml#/definitions/uint32 > + minimum: 0 > + maximum: 1 I think CMOS is the same as "push-pull" ( I could be wrong, but I think I've seen that before) so I would probably try to use the pin config standard names as strings here but I'm not sure. rohm,clkout-bias-open-drain; rohm,clkout-bias-push-pull; Mutually exclusive. Or maybe use the pattern from rohm,pin-dvs0 with string enumerators? rohm,clkout-bias = "open-drain"; rohm,clkout-bias = "push-pull"; ? > +examples: Maybe add some of the exotic string options into the example so people will get it right? Yours, Linus Walleij
On 28/10/2025 00:42, Linus Walleij wrote: > Hi Matti, > > thanks for your patch! > > On Mon, Oct 27, 2025 at 12:45 PM Matti Vaittinen > <mazziesaccount@gmail.com> wrote: > >> + rohm,clkout-open-drain: >> + description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos". >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + minimum: 0 >> + maximum: 1 > > I think CMOS is the same as "push-pull" ( I could be wrong, but I think I've > seen that before) so I would probably try to use the pin config standard > names as strings here but I'm not sure. > > rohm,clkout-bias-open-drain; > rohm,clkout-bias-push-pull; > > Mutually exclusive. > > Or maybe use the pattern from rohm,pin-dvs0 > with string enumerators? > > rohm,clkout-bias = "open-drain"; > rohm,clkout-bias = "push-pull"; > Hmm. I kind of agree with you. Still, the way it was done in this patch is used by the other existing ROHM PMICs (bd71815, bd71828, bd71879). I am kind of reluctant to support another way in the same driver - and I am also reluctant to change the existing bindings as that sounds a bit like asking for a nose-bleed :) (I've in the past worked with some devices which didn't update the device-trees when kernel was updated...) Do you think you could live with using this existing convention? :) Yours, -- Matti
On Wed, Oct 29, 2025 at 1:30 PM Matti Vaittinen <mazziesaccount@gmail.com> wrote: > On 28/10/2025 00:42, Linus Walleij wrote: > > Hi Matti, > > > > thanks for your patch! > > > > On Mon, Oct 27, 2025 at 12:45 PM Matti Vaittinen > > <mazziesaccount@gmail.com> wrote: > > > >> + rohm,clkout-open-drain: > >> + description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos". > >> + $ref: /schemas/types.yaml#/definitions/uint32 > >> + minimum: 0 > >> + maximum: 1 > > > > I think CMOS is the same as "push-pull" ( I could be wrong, but I think I've > > seen that before) so I would probably try to use the pin config standard > > names as strings here but I'm not sure. > > > > rohm,clkout-bias-open-drain; > > rohm,clkout-bias-push-pull; > > > > Mutually exclusive. > > > > Or maybe use the pattern from rohm,pin-dvs0 > > with string enumerators? > > > > rohm,clkout-bias = "open-drain"; > > rohm,clkout-bias = "push-pull"; > > > > Hmm. I kind of agree with you. Still, the way it was done in this patch > is used by the other existing ROHM PMICs (bd71815, bd71828, bd71879). I > am kind of reluctant to support another way in the same driver - and I > am also reluctant to change the existing bindings as that sounds a bit > like asking for a nose-bleed :) (I've in the past worked with some > devices which didn't update the device-trees when kernel was updated...) > > Do you think you could live with using this existing convention? :) Yeah if there are precedents, either we can reuse that or we need to change them all, and that invariably involves deprecation and re-implementing the parsing in several drivers in that case, which is annoying and takes time. It's fine with me to keep like this. Yours, Linus Walleij
On Mon, 27 Oct 2025 13:45:46 +0200 Matti Vaittinen <mazziesaccount@gmail.com> wrote: > The ROHM BD72720 is a power management IC integrating regulators, GPIOs, > charger, LEDs, RTC and a clock gate. > > Add dt-binding doc for ROHM BD72720. > > Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com> > [...] > + > + rohm,charger-sense-resistor-milli-ohms: > + minimum: 10 > + maximum: 50 > + description: | > + BD72720 has a SAR ADC for measuring charging currents. External sense > + resistor (RSENSE in data sheet) should be used. If some other but > + 30 mOhm resistor is used the resistance value should be given here in > + milli Ohms. > + rohm,bd71828.yaml has rohm,charger-sense-resistor-micro-ohms, lets keep that unified. Regards, Andreas
On 27/10/2025 23:20, Andreas Kemnade wrote: > On Mon, 27 Oct 2025 13:45:46 +0200 > Matti Vaittinen <mazziesaccount@gmail.com> wrote: > >> The ROHM BD72720 is a power management IC integrating regulators, GPIOs, >> charger, LEDs, RTC and a clock gate. >> >> Add dt-binding doc for ROHM BD72720. >> >> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com> >> > [...] >> + >> + rohm,charger-sense-resistor-milli-ohms: >> + minimum: 10 >> + maximum: 50 >> + description: | >> + BD72720 has a SAR ADC for measuring charging currents. External sense >> + resistor (RSENSE in data sheet) should be used. If some other but >> + 30 mOhm resistor is used the resistance value should be given here in >> + milli Ohms. >> + > rohm,bd71828.yaml has rohm,charger-sense-resistor-micro-ohms, lets > keep that unified. Absolutely! Good catch, thanks! Yours, -- Matti
On Mon, Oct 27, 2025 at 01:45:46PM +0200, Matti Vaittinen wrote:
> The ROHM BD72720 is a power management IC integrating regulators, GPIOs,
> charger, LEDs, RTC and a clock gate.
>
> Add dt-binding doc for ROHM BD72720.
>
> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
>
> ---
> Revision history:
> RFCv1 => v2:
> - Typofixes
> ---
> .../bindings/mfd/rohm,bd72720-pmic.yaml | 269 ++++++++++++++++++
> 1 file changed, 269 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
>
> diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
> new file mode 100644
> index 000000000000..b0d4bc01d199
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
> @@ -0,0 +1,269 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/rohm,bd72720-pmic.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ROHM BD72720 Power Management Integrated Circuit
> +
> +maintainers:
> + - Matti Vaittinen <mazziesaccount@gmail.com>
> +
> +description: |
> + BD72720 is a single-chip power management IC for battery-powered portable
> + devices. The BD72720 integrates 10 bucks and 11 LDOs, and a 3000 mA
> + switching charger. The IC also includes a Coulomb counter, a real-time
> + clock (RTC), GPIOs and a 32.768 kHz clock gate.
> +
> +# In addition to the properties found from the charger node, the ROHM BD72720
> +# uses properties from a static battery node. Please see the:
> +# Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
Why is all of this a comment?
> +#
> +# Following properties are used
> +# when present:
> +#
> +# charge-full-design-microamp-hours: Battry capacity in mAh
> +# voltage-max-design-microvolt: Maximum voltage
> +# voltage-min-design-microvolt: Minimum voltage system is still operating.
> +# degrade-cycle-microamp-hours: Capacity lost due to aging at each full
> +# charge cycle.
> +# ocv-capacity-celsius: Array of OCV table temperatures. 1/table.
> +# ocv-capacity-table-<N>: Table of OCV voltage/SOC pairs. Corresponds
> +# N.th temperature in ocv-capacity-celsius
> +#
> +# ROHM specific properties:
> +# rohm,voltage-vdr-thresh-microvolt: Threshold for starting the VDR correction
> +# rohm,volt-drop-soc: Table of capacity values matching the
> +# values in VDR tables.
> +# rohm,volt-drop-high-temp-microvolt: VDR table for high temperature
> +# rohm,volt-drop-normal-temp-microvolt: VDR table for normal temperature
> +# rohm,volt-drop-low-temp-microvolt: VDR table for low temperature
> +# rohm,volt-drop-very-low-temp-microvolt: VDR table for very low temperature
> +#
> +# VDR tables are (usually) determined for a specific battery by ROHM.
> +# The battery node would then be referred from the charger node:
> +#
> +# monitored-battery = <&battery>;
> +
> +properties:
> + compatible:
> + const: rohm,bd72720
> +
> + reg:
> + description:
> + I2C slave address.
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + gpio-controller: true
> +
> + "#gpio-cells":
> + const: 2
> + description: |
Don't need '|'
> + The first cell is the pin number and the second cell is used to specify
> + flags. See ../gpio/gpio.txt for more information.
Don't add new references to old .txt bindings.
> +
> + clocks:
> + maxItems: 1
> +
> + "#clock-cells":
> + const: 0
> +
> + clock-output-names:
> + const: bd71828-32k-out
> +
> + rohm,clkout-open-drain:
> + description: clk32kout mode. Set to 1 for "open-drain" or 0 for "cmos".
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
0 is already the minimum for unsigned.
> + maximum: 1
> +
> + rohm,charger-sense-resistor-milli-ohms:
> + minimum: 10
> + maximum: 50
> + description: |
Don't need '|'
> + BD72720 has a SAR ADC for measuring charging currents. External sense
> + resistor (RSENSE in data sheet) should be used. If some other but
> + 30 mOhm resistor is used the resistance value should be given here in
> + milli Ohms.
> +
> + regulators:
> + $ref: ../regulator/rohm,bd77270-regulator.yaml
/schemas/regulator/...
> + description:
> + List of child nodes that specify the regulators.
> +
> + leds:
> + $ref: ../leds/rohm,bd71828-leds.yaml
/schemas/leds/...
> +
> + rohm,pin-dvs0:
> + $ref: /schemas/types.yaml#/definitions/string
> + description:
> + BD72720 has 4 different OTP options to determine the use of dvs0-pin.
> + OTP0 - regulator RUN state control.
> + OTP1 - GPI.
> + OTP2 - GPO.
> + OTP3 - Power sequencer output.
> + This property specifies the use of the pin.
> + enum:
> + - dvs-input
> + - gpi
> + - gpo
> +
> + rohm,pin-dvs1:
> + $ref: /schemas/types.yaml#/definitions/string
> + description:
> + see rohm,pin-dvs0
> + enum:
> + - dvs-input
> + - gpi
> + - gpo
These 2 could be combined into a single entry in patternProperties.
> +
> + rohm,pin-exten0:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: BD72720 has an OTP option to use exten0-pin for different
> + purposes. Set this property accordingly.
> + const: gpo
> +
> + rohm,pin-exten1:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: BD72720 has an OTP option to use exten1-pin for different
> + purposes. Set this property accordingly.
> + const: gpo
And these 2 also.
> +
> + rohm,pin-fault_b:
> + $ref: /schemas/types.yaml#/definitions/string
> + description: BD72720 has an OTP option to use fault_b-pin for different
> + purposes. Set this property accordingly.
> + const: gpo
Seems like different purposes would have more than 1 option.
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - "#clock-cells"
> + - regulators
> + - gpio-controller
> + - "#gpio-cells"
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/irq.h>
> + #include <dt-bindings/leds/common.h>
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pmic: pmic@4b {
> + compatible = "rohm,bd71828";
> + reg = <0x4b>;
Just 1 complete example in the mfd schema and drop this example.
> +
> + interrupt-parent = <&gpio1>;
> + interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
> +
> + clocks = <&osc 0>;
> + #clock-cells = <0>;
> + clock-output-names = "bd71828-32k-out";
> +
> + gpio-controller;
> + #gpio-cells = <2>;
> + gpio-reserved-ranges = <0 1>, <2 1>;
> +
> + rohm,charger-sense-resistor-ohms = <10000000>;
> +
> + regulators {
> + buck1: BUCK1 {
> + regulator-name = "buck1";
> + regulator-min-microvolt = <500000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-ramp-delay = <2500>;
> + };
> + buck2: BUCK2 {
> + regulator-name = "buck2";
> + regulator-min-microvolt = <500000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-ramp-delay = <2500>;
> + };
> + buck3: BUCK3 {
> + regulator-name = "buck3";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <2000000>;
> + };
> + buck4: BUCK4 {
> + regulator-name = "buck4";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + buck5: BUCK5 {
> + regulator-name = "buck5";
> + regulator-min-microvolt = <2500000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + buck6: BUCK6 {
> + regulator-name = "buck6";
> + regulator-min-microvolt = <500000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-ramp-delay = <2500>;
> + };
> + buck7: BUCK7 {
> + regulator-name = "buck7";
> + regulator-min-microvolt = <500000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-ramp-delay = <2500>;
> + };
> + ldo1: LDO1 {
> + regulator-name = "ldo1";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + ldo2: LDO2 {
> + regulator-name = "ldo2";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + ldo3: LDO3 {
> + regulator-name = "ldo3";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + ldo4: LDO4 {
> + regulator-name = "ldo4";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + ldo5: LDO5 {
> + regulator-name = "ldo5";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + ldo6: LDO6 {
> + regulator-name = "ldo6";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> + ldo7_reg: LDO7 {
> + regulator-name = "ldo7";
> + regulator-min-microvolt = <800000>;
> + regulator-max-microvolt = <3300000>;
> + };
> + };
> +
> + leds {
> + compatible = "rohm,bd71828-leds";
> +
> + led-1 {
> + rohm,led-compatible = "bd71828-grnled";
> + function = LED_FUNCTION_INDICATOR;
> + color = <LED_COLOR_ID_GREEN>;
> + };
> + led-2 {
> + rohm,led-compatible = "bd71828-ambled";
> + function = LED_FUNCTION_CHARGING;
> + color = <LED_COLOR_ID_AMBER>;
> + };
> + };
> + };
> + };
> --
> 2.51.0
>
On 27/10/2025 23:13, Rob Herring wrote:
> On Mon, Oct 27, 2025 at 01:45:46PM +0200, Matti Vaittinen wrote:
>> The ROHM BD72720 is a power management IC integrating regulators, GPIOs,
>> charger, LEDs, RTC and a clock gate.
>>
>> Add dt-binding doc for ROHM BD72720.
>>
>> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
>>
>> ---
>> Revision history:
>> RFCv1 => v2:
>> - Typofixes
>> ---
>> .../bindings/mfd/rohm,bd72720-pmic.yaml | 269 ++++++++++++++++++
>> 1 file changed, 269 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
>> new file mode 100644
>> index 000000000000..b0d4bc01d199
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/mfd/rohm,bd72720-pmic.yaml
>> @@ -0,0 +1,269 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/mfd/rohm,bd72720-pmic.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: ROHM BD72720 Power Management Integrated Circuit
>> +
>> +maintainers:
>> + - Matti Vaittinen <mazziesaccount@gmail.com>
>> +
>> +description: |
>> + BD72720 is a single-chip power management IC for battery-powered portable
>> + devices. The BD72720 integrates 10 bucks and 11 LDOs, and a 3000 mA
>> + switching charger. The IC also includes a Coulomb counter, a real-time
>> + clock (RTC), GPIOs and a 32.768 kHz clock gate.
>> +
>> +# In addition to the properties found from the charger node, the ROHM BD72720
>> +# uses properties from a static battery node. Please see the:
>> +# Documentation/devicetree/bindings/power/supply/rohm,vdr-battery.yaml
>
> Why is all of this a comment?
Hi Rob,
Thanks for (all the) reviews! Much appreciated.
I added these as comments because they aren't meant to be in the BD72720
charger-node (which is described by this driver), but in a static
battery node. The battery node does not belong in the charger node.
My idea was still to document (for integrator) the battery properties
this charger uses from a static battery node when present. Only thing we
include directly to this node is the:
monitored-battery = <&battery>; - reference.
>
>> +#
>> +# Following properties are used
>> +# when present:
>> +#
>> +# charge-full-design-microamp-hours: Battry capacity in mAh
>> +# voltage-max-design-microvolt: Maximum voltage
>> +# voltage-min-design-microvolt: Minimum voltage system is still operating.
>> +# degrade-cycle-microamp-hours: Capacity lost due to aging at each full
>> +# charge cycle.
>> +# ocv-capacity-celsius: Array of OCV table temperatures. 1/table.
>> +# ocv-capacity-table-<N>: Table of OCV voltage/SOC pairs. Corresponds
>> +# N.th temperature in ocv-capacity-celsius
>> +#
>> +# ROHM specific properties:
>> +# rohm,voltage-vdr-thresh-microvolt: Threshold for starting the VDR correction
>> +# rohm,volt-drop-soc: Table of capacity values matching the
>> +# values in VDR tables.
>> +# rohm,volt-drop-high-temp-microvolt: VDR table for high temperature
>> +# rohm,volt-drop-normal-temp-microvolt: VDR table for normal temperature
>> +# rohm,volt-drop-low-temp-microvolt: VDR table for low temperature
>> +# rohm,volt-drop-very-low-temp-microvolt: VDR table for very low temperature
>> +#
>> +# VDR tables are (usually) determined for a specific battery by ROHM.
>> +# The battery node would then be referred from the charger node:
>> +#
>> +# monitored-battery = <&battery>;
>> +
>> +properties:
>> + compatible:
>> + const: rohm,bd72720
>> +
>> + reg:
>> + description:
>> + I2C slave address.
>> + maxItems: 1
>> +
>> + interrupts:
>> + maxItems: 1
>> +
>> + gpio-controller: true
>> +
>> + "#gpio-cells":
>> + const: 2
>> + description: |
// snip
>> +
>> + rohm,pin-dvs0:
>> + $ref: /schemas/types.yaml#/definitions/string
>> + description:
>> + BD72720 has 4 different OTP options to determine the use of dvs0-pin.
>> + OTP0 - regulator RUN state control.
>> + OTP1 - GPI.
>> + OTP2 - GPO.
>> + OTP3 - Power sequencer output.
>> + This property specifies the use of the pin.
>> + enum:
>> + - dvs-input
>> + - gpi
>> + - gpo
>> +
>> + rohm,pin-dvs1:
>> + $ref: /schemas/types.yaml#/definitions/string
>> + description:
>> + see rohm,pin-dvs0
>> + enum:
>> + - dvs-input
>> + - gpi
>> + - gpo
>
> These 2 could be combined into a single entry in patternProperties.
>
>> +
>> + rohm,pin-exten0:
>> + $ref: /schemas/types.yaml#/definitions/string
>> + description: BD72720 has an OTP option to use exten0-pin for different
>> + purposes. Set this property accordingly.
>> + const: gpo
>> +
>> + rohm,pin-exten1:
>> + $ref: /schemas/types.yaml#/definitions/string
>> + description: BD72720 has an OTP option to use exten1-pin for different
>> + purposes. Set this property accordingly.
>> + const: gpo
>
> And these 2 also.
>
>> +
>> + rohm,pin-fault_b:
>> + $ref: /schemas/types.yaml#/definitions/string
>> + description: BD72720 has an OTP option to use fault_b-pin for different
>> + purposes. Set this property accordingly.
>> + const: gpo
>
> Seems like different purposes would have more than 1 option.
They do. I only omitted them because I don't think knowing those
use-cases is relevant for the software. OTOH, maybe they some day can be
so I will revise the other uses and make more complete list. Thanks.
>
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - interrupts
>> + - clocks
>> + - "#clock-cells"
>> + - regulators
>> + - gpio-controller
>> + - "#gpio-cells"
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/interrupt-controller/irq.h>
>> + #include <dt-bindings/leds/common.h>
>> + i2c {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> + pmic: pmic@4b {
>> + compatible = "rohm,bd71828";
>> + reg = <0x4b>;
>
> Just 1 complete example in the mfd schema and drop this example.
Hmm? This is the MFD schema, right? :)
Yours,
-- Matti
© 2016 - 2026 Red Hat, Inc.