On Tue, Dec 17, 2019 at 10:48:24AM +0200, Matti Vaittinen wrote: > Convert ROHM bd71837 and bd71847 PMIC binding text docs to yaml. Split > the binding document to two separate documents (own for BD71837 and BD71847) > as they have different amount of regulators. This way we can better enforce > the node name check for regulators. ROHM is also providing BD71850 - which > is almost identical to BD71847 - main difference is some initial regulator > states. The BD71850 can be driven by same driver and it has same buck/LDO > setup as BD71847 - add it to BD71847 binding document and introduce > compatible for it. > > Signed-off-by: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx> > --- > > Oh dear how bad I am with yaml... Looks pretty good overall. I hope 'yamlify' doesn't catch on. :) > > Lee, I think the support series for BD71828 included some changes > to drivers/mfd/rohm-bd718x7.c - I will add BD71850 compatible to next > version of that series in order to avoid conflicts. Does that work > for you? > > .../bindings/mfd/rohm,bd71837-pmic.txt | 90 -------- > .../bindings/mfd/rohm,bd71837-pmic.yaml | 198 ++++++++++++++++++ > .../bindings/mfd/rohm,bd71847-pmic.yaml | 181 ++++++++++++++++ > .../regulator/rohm,bd71837-regulator.txt | 162 -------------- > .../regulator/rohm,bd71837-regulator.yaml | 103 +++++++++ > .../regulator/rohm,bd71847-regulator.yaml | 97 +++++++++ > 6 files changed, 579 insertions(+), 252 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt > create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml > create mode 100644 Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml > delete mode 100644 Documentation/devicetree/bindings/regulator/rohm,bd71837-regulator.txt > create mode 100644 Documentation/devicetree/bindings/regulator/rohm,bd71837-regulator.yaml > create mode 100644 Documentation/devicetree/bindings/regulator/rohm,bd71847-regulator.yaml > diff --git a/Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml > new file mode 100644 > index 000000000000..3a6d408aebbd > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml > @@ -0,0 +1,198 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/rohm,bd71837-pmic.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: ROHM BD71837 Power Management Integrated Circuit bindings > + > +maintainers: > + - Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx> > + > +description: | > + BD71837MWV is programmable Power Management ICs for powering single-core, > + dual-core, and quad-core SoCs such as NXP-i.MX 8M. It is optimized for low > + BOM cost and compact solution footprint. BD71837MWV integrates 8 Buck > + regulators and 7 LDOs. > + Datasheet for BD71837 is available at > + https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71837amwv-product > + > +properties: > + compatible: > + const: rohm,bd71837 > + > + reg: > + description: > + I2C slave address. > + maxItems: 1 > + > + interrupts: > + maxItems: 1 > + > + clocks: > + maxItems: 1 > + > + "#clock-cells": > + const: 0 > + > +# The BD718x7 supports two different HW states as reset target states. States > +# are called as SNVS and READY. At READY state all the PMIC power outputs go > +# down and OTP is reload. At the SNVS state all other logic and external > +# devices apart from the SNVS power domain are shut off. Please refer to NXP > +# i.MX8 documentation for further information regarding SNVS state. When a > +# reset is done via SNVS state the PMIC OTP data is not reload. This causes > +# power outputs that have been under SW control to stay down when reset has > +# switched power state to SNVS. If reset is done via READY state the power > +# outputs will be returned to HW control by OTP loading. Thus the reset > +# target state is set to READY by default. If SNVS state is used the boot > +# crucial regulators must have the regulator-always-on and regulator-boot-on > +# properties set in regulator node. > + > + rohm,reset-snvs-powered: > + description: | > + Transfer PMIC to SNVS state at reset > + type: boolean > + > +# Configure the "short press" and "long press" timers for the power button. > +# Values are rounded to what hardware supports (500ms multiple for short and > +# 1000ms multiple for long). If these properties are not present the existing > +# configuration (from bootloader or OTP) is not touched. You can use 'multipleOf' keyword below for some constraints. Same for the other file. > + > + rohm,short-press-ms: > + description: > + Short press duration in milliseconds > + > + rohm,long-press-ms: > + description: > + Long press duration in milliseconds > + > + regulators: > + $ref: ../regulator/rohm,bd71837-regulator.yaml > + description: > + List of child nodes that specify the regulators. > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - "#clock-cells" > + - regulators additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/irq.h> > + #include <dt-bindings/leds/common.h> > + # > + > + i2c { > + pmic: pmic@4b { > + compatible = "rohm,bd71837"; > + reg = <0x4b>; > + interrupt-parent = <&gpio1>; > + interrupts = <29 IRQ_TYPE_LEVEL_LOW>; > + #clock-cells = <0>; > + clocks = <&osc 0>; > + clock-output-names = "bd71837-32k-out"; Not documented. > + rohm,reset-snvs-powered; > + > + regulators { > + buck1: BUCK1 { > + regulator-name = "buck1"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + rohm,dvs-run-voltage = <900000>; > + rohm,dvs-idle-voltage = <850000>; > + rohm,dvs-suspend-voltage = <800000>; > + }; > + buck2: BUCK2 { > + regulator-name = "buck2"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + regulator-always-on; > + regulator-ramp-delay = <1250>; > + rohm,dvs-run-voltage = <1000000>; > + rohm,dvs-idle-voltage = <900000>; > + }; > + buck3: BUCK3 { > + regulator-name = "buck3"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + rohm,dvs-run-voltage = <1000000>; > + }; > + buck4: BUCK4 { > + regulator-name = "buck4"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1300000>; > + regulator-boot-on; > + rohm,dvs-run-voltage = <1000000>; > + }; > + buck5: BUCK5 { > + regulator-name = "buck5"; > + regulator-min-microvolt = <700000>; > + regulator-max-microvolt = <1350000>; > + regulator-boot-on; > + }; > + buck6: BUCK6 { > + regulator-name = "buck6"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + buck7: BUCK7 { > + regulator-name = "buck7"; > + regulator-min-microvolt = <1605000>; > + regulator-max-microvolt = <1995000>; > + regulator-boot-on; > + }; > + buck8: BUCK8 { > + regulator-name = "buck8"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1400000>; > + }; > + > + ldo1: LDO1 { > + regulator-name = "ldo1"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3300000>; > + regulator-boot-on; > + }; > + ldo2: LDO2 { > + regulator-name = "ldo2"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + regulator-boot-on; > + }; > + ldo3: LDO3 { > + regulator-name = "ldo3"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + }; > + ldo4: LDO4 { > + regulator-name = "ldo4"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <1800000>; > + }; > + ldo5: LDO5 { > + regulator-name = "ldo5"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + }; > + ldo6: LDO6 { > + regulator-name = "ldo6"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <1800000>; > + }; > + ldo7_reg: LDO7 { > + regulator-name = "ldo7"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + }; > + }; > + }; > + };