Re: [PATCH] dt-bindings: bd718x7: Yamlify and add BD71850

From: Rob Herring
Date: Thu Dec 26 2019 - 17:17:19 EST


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>;
> + };
> + };
> + };
> + };