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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for taking a look on this Rob,

On Thu, 2019-12-26 at 15:16 -0700, Rob Herring wrote:
> 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.

Thanks. But it was not easy for me. It took bunch of trials to fix all
the errors...

> I hope 'yamlify' doesn't catch on. :)

I can almost see that in OED already xD

> > 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.

Umm.. Actually, now that I checked the datasheet for proper
constraints... Minimum value for both short and long press is 10ms.
After that the values are multiples of 500ms or 1000ms - but first
value is 10ms. I'll add minimum and maximum and update the comment
accordingly. Thanks for catching this :)

> 
> 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

Ok.

> 
> > +
> > +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.

I'll just drop this from the example for now. We can add ref to common
clock bindings later - if they are needed at some point.

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





[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux