Skip to contentSkip to conversation

dt-bindings: bd718x7: Yamlify and add BD71850

PATCH RESEND Superseded Matti Vaittinen 1 participant 2 messages Jan 15, 2020 – Feb 6, 2020

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH RESEND v2 1/1 dt-bindings: bd718x7: Yamlify and add BD71850

Convert ROHM bd71837 and bd71847 PMIC binding text docs to yaml. Split the binding document to two separate documents (own documents 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.

---

Resending for Mark to check.

changes since v1:
- constrains to short and long presses.
- reworded commit message to shorten a line exceeding 75 chars
- added 'additionalProperties: false'
- removed 'clock-names' from example node

 .../bindings/mfd/rohm,bd71837-pmic.txt        |  90 -------
 .../bindings/mfd/rohm,bd71837-pmic.yaml       | 236 ++++++++++++++++++
 .../bindings/mfd/rohm,bd71847-pmic.yaml       | 222 ++++++++++++++++
 .../regulator/rohm,bd71837-regulator.txt      | 162 ------------
 .../regulator/rohm,bd71837-regulator.yaml     | 103 ++++++++
 .../regulator/rohm,bd71847-regulator.yaml     |  97 +++++++
 6 files changed, 658 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
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -90
deleted file mode 100644
index f22d74c7a8db..000000000000
@@ -1,90 +0,0 @@
-* ROHM BD71837 and BD71847 Power Management Integrated Circuit bindings
-
-BD71837MWV and BD71847MWV are programmable Power Management ICs for powering
-single-core, dual-core, and quad-core SoCs such as NXP-i.MX 8M. They are
-optimized for low BOM cost and compact solution footprint. BD71837MWV
-integrates 8 Buck regulators and 7 LDOs. BD71847MWV contains 6 Buck regulators
-and 6 LDOs.
-
-Datasheet for BD71837 is available at:
-https://www.rohm.com/datasheet/BD71837MWV/bd71837mwv-e
-Datasheet for BD71847 is available at:
-https://www.rohm.com/datasheet/BD71847AMWV/bd71847amwv-e
-
-Required properties:
- - compatible		: Should be "rohm,bd71837" for bd71837
-				    "rohm,bd71847" for bd71847.
- - reg			: I2C slave address.
- - interrupt-parent	: Phandle to the parent interrupt controller.
- - interrupts		: The interrupt line the device is connected to.
- - clocks		: The parent clock connected to PMIC. If this is missing
-			  32768 KHz clock is assumed.
- - #clock-cells		: Should be 0.
- - regulators:		: List of child nodes that specify the regulators.
-			  Please see ../regulator/rohm,bd71837-regulator.txt
-
-Optional properties:
-- clock-output-names	: Should contain name for output clock.
-- rohm,reset-snvs-powered : Transfer BD718x7 to SNVS state at reset.
-
-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,short-press-ms	: Short press duration in milliseconds
-- rohm,long-press-ms	: Long press duration in milliseconds
-
-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.
-
-Example:
-
-	/* external oscillator node */
-	osc: oscillator {
-		compatible = "fixed-clock";
-		#clock-cells = <1>;
-		clock-frequency  = <32768>;
-		clock-output-names = "osc";
-	};
-
-	pmic: pmic@4b {
-		compatible = "rohm,bd71837";
-		reg = <0x4b>;
-		interrupt-parent = <&gpio1>;
-		interrupts = <29 GPIO_ACTIVE_LOW>;
-		interrupt-names = "irq";
-		#clock-cells = <0>;
-		clocks = <&osc 0>;
-		clock-output-names = "bd71837-32k-out";
-		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>;
-			};
-			// [...]
-		};
-	};
-
-	/* Clock consumer node */
-	rtc@0 {
-		compatible = "company,my-rtc";
-		clock-names = "my-clock";
-		clocks = <&pmic>;
-	};
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +236 -0

236 lines not on this page · raw message

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +222 -0

222 lines not on this page · raw message

Documentation/devicetree/bindings/regulator/rohm,bd71837-regulator.txt deleted +0 -162

162 lines not on this page · raw message

Documentation/devicetree/bindings/regulator/rohm,bd71837-regulator.yaml new file +103 -0

103 lines not on this page · raw message

Documentation/devicetree/bindings/regulator/rohm,bd71847-regulator.yaml new file +97 -0

97 lines not on this page · raw message

Signature · 14 lines
2.21.0


-- 
Matti Vaittinen, Linux device drivers
ROHM Semiconductors, Finland SWDC
Kiviharjunlenkki 1E
90220 OULU
FINLAND

~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~
Simon says - in Latin please.
~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~
Thanks to Simon Glass for the translation =] 
#1 lore raw

Hello Guys,

Quoted 16 lines · Matti Vaittinen

Convert ROHM bd71837 and bd71847 PMIC binding text docs to yaml. Split
the binding document to two separate documents (own documents 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.

Quoted 5 lines

---

Resending for Mark to check.

Can you please check if something is still missing from this? Should I rework, resend or ...?

Br,
Matti Vaittinen

Quoted 1,123 lines

changes since v1:
- constrains to short and long presses.
- reworded commit message to shorten a line exceeding 75 chars
- added 'additionalProperties: false'
- removed 'clock-names' from example node

 .../bindings/mfd/rohm,bd71837-pmic.txt        |  90 -------
 .../bindings/mfd/rohm,bd71837-pmic.yaml       | 236
++++++++++++++++++
 .../bindings/mfd/rohm,bd71847-pmic.yaml       | 222 ++++++++++++++++
 .../regulator/rohm,bd71837-regulator.txt      | 162 ------------
 .../regulator/rohm,bd71837-regulator.yaml     | 103 ++++++++
 .../regulator/rohm,bd71847-regulator.yaml     |  97 +++++++
 6 files changed, 658 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

(quoted diff) +0 -0

pmic.txt b/Documentation/devicetree/bindings/mfd/rohm,bd71837- pmic.txt
deleted file mode 100644
index f22d74c7a8db..000000000000

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -1
@@ -1,90 +0,0 @@
-* ROHM BD71837 and BD71847 Power Management Integrated Circuit

bindings

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -2
-
-BD71837MWV and BD71847MWV are programmable Power Management ICs for

powering
-single-core, dual-core, and quad-core SoCs such as NXP-i.MX 8M. They are
-optimized for low BOM cost and compact solution footprint. BD71837MWV
-integrates 8 Buck regulators and 7 LDOs. BD71847MWV contains 6 Buck regulators

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -13
-and 6 LDOs.
-
-Datasheet for BD71837 is available at:
-https://www.rohm.com/datasheet/BD71837MWV/bd71837mwv-e
-Datasheet for BD71847 is available at:
-https://www.rohm.com/datasheet/BD71847AMWV/bd71847amwv-e
-
-Required properties:
- - compatible		: Should be "rohm,bd71837" for bd71837
-				    "rohm,bd71847" for bd71847.
- - reg			: I2C slave address.
- - interrupt-parent	: Phandle to the parent interrupt controller.
- - interrupts		: The interrupt line the device is

connected to.
- - clocks : The parent clock connected to PMIC. If this
is missing

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -3
-			  32768 KHz clock is assumed.
- - #clock-cells		: Should be 0.
- - regulators:		: List of child nodes that specify the

regulators.

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -1
-			  Please see ../regulator/rohm,bd71837-

regulator.txt

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -6
-
-Optional properties:
-- clock-output-names	: Should contain name for output clock.
-- rohm,reset-snvs-powered : Transfer BD718x7 to SNVS state at reset.
-
-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

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -6
-properties set in regulator node.
-
-- rohm,short-press-ms	: Short press duration in milliseconds
-- rohm,long-press-ms	: Long press duration in milliseconds
-
-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

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt deleted +0 -42
-configuration (from bootloader or OTP) is not touched.
-
-Example:
-
-	/* external oscillator node */
-	osc: oscillator {
-		compatible = "fixed-clock";
-		#clock-cells = <1>;
-		clock-frequency  = <32768>;
-		clock-output-names = "osc";
-	};
-
-	pmic: pmic@4b {
-		compatible = "rohm,bd71837";
-		reg = <0x4b>;
-		interrupt-parent = <&gpio1>;
-		interrupts = <29 GPIO_ACTIVE_LOW>;
-		interrupt-names = "irq";
-		#clock-cells = <0>;
-		clocks = <&osc 0>;
-		clock-output-names = "bd71837-32k-out";
-		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>;
-			};
-			// [...]
-		};
-	};
-
-	/* Clock consumer node */
-	rtc@0 {
-		compatible = "company,my-rtc";
-		clock-names = "my-clock";
-		clocks = <&pmic>;
-	};
(quoted diff) +0 -0

pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71837- pmic.yaml
new file mode 100644
index 000000000000..aa922c560fcc

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +13 -0
@@ -0,0 +1,236 @@
+# 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 <[email protected]>
+
+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

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +3 -0
+  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

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +20 -0
+
+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

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +8 -0
+# 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.

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +3 -0
+# Values are rounded to what hardware supports
+# Short-press:
+#   Shortest being 10ms, next 500ms and then multiple of 500ms up to

7,5s

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +2 -0
+# Long-press:
+#   Shortest being 10ms, next 1000ms and then multiple of 1000ms up

to 15s
+# If these properties are not present the existing configuration (from

Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml new file +174 -0
+# bootloader or OTP) is not touched.
+
+  rohm,short-press-ms:
+    description:
+      Short press duration in milliseconds
+    enum:
+      - 10
+      - 500
+      - 1000
+      - 1500
+      - 2000
+      - 2500
+      - 3000
+      - 3500
+      - 4000
+      - 4500
+      - 5000
+      - 5500
+      - 6000
+      - 6500
+      - 7000
+
+  rohm,long-press-ms:
+    description:
+      Long press duration in milliseconds
+    enum:
+      - 10
+      - 1000
+      - 2000
+      - 3000
+      - 4000
+      - 5000
+      - 6000
+      - 7000
+      - 8000
+      - 9000
+      - 10000
+      - 11000
+      - 12000
+      - 13000
+      - 14000
+
+  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>;
+            rohm,reset-snvs-powered;
+            rohm,short-press-ms = <10>;
+            rohm,long-press-ms = <2000>;
+
+            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>;
+                };
+            };
+        };
+    };
(quoted diff) +0 -0

pmic.yaml b/Documentation/devicetree/bindings/mfd/rohm,bd71847- pmic.yaml
new file mode 100644
index 000000000000..402e40dfe0b8

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +7 -0
@@ -0,0 +1,222 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/rohm,bd71847-pmic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD71847 and BD71850 Power Management Integrated Circuit

bindings

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +6 -0
+
+maintainers:
+  - Matti Vaittinen <[email protected]>
+
+description: |
+  BD71847AMWV and BD71850MWV are 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. BD71847MWV and

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +3 -0
+  BD71850MWV integrate 6 Buck regulators and 6 LDOs.
+  Datasheets are available at
+  

https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71847amwv-product
+
https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71850mwv-product

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +22 -0
+
+properties:
+  compatible:
+    enum:
+      - rohm,bd71847
+      - rohm,bd71850
+
+  reg:
+    description:
+      I2C slave address.
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 0
+
+# The BD71847 abd BD71850 support 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

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +8 -0
+# 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.

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +3 -0
+# Values are rounded to what hardware supports
+# Short-press:
+#   Shortest being 10ms, next 500ms and then multiple of 500ms up to

7,5s

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +2 -0
+# Long-press:
+#   Shortest being 10ms, next 1000ms and then multiple of 1000ms up

to 15s
+# If these properties are not present the existing # configuration (from

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +157 -0
+# bootloader or OTP) is not touched.
+
+  rohm,short-press-ms:
+    description:
+      Short press duration in milliseconds
+    enum:
+      - 10
+      - 500
+      - 1000
+      - 1500
+      - 2000
+      - 2500
+      - 3000
+      - 3500
+      - 4000
+      - 4500
+      - 5000
+      - 5500
+      - 6000
+      - 6500
+      - 7000
+      - 7500
+
+  rohm,long-press-ms:
+    description:
+      Long press duration in milliseconds
+    enum:
+      - 10
+      - 1000
+      - 2000
+      - 3000
+      - 4000
+      - 5000
+      - 6000
+      - 7000
+      - 8000
+      - 9000
+      - 10000
+      - 11000
+      - 12000
+      - 13000
+      - 14000
+      - 15000
+
+  regulators:
+    $ref: ../regulator/rohm,bd71847-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,bd71847";
+            reg = <0x4b>;
+            interrupt-parent = <&gpio1>;
+            interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+            #clock-cells = <0>;
+            clocks = <&osc 0>;
+            rohm,reset-snvs-powered;
+            rohm,short-press-ms = <10>;
+            rohm,long-press-ms = <2000>;
+
+            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 = <550000>;
+                    regulator-max-microvolt = <1350000>;
+                    regulator-boot-on;
+                };
+                buck4: BUCK4 {
+                    regulator-name = "buck4";
+                    regulator-min-microvolt = <2600000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-boot-on;
+                };
+                buck5: BUCK5 {
+                    regulator-name = "buck5";
+                    regulator-min-microvolt = <1605000>;
+                    regulator-max-microvolt = <1995000>;
+                    regulator-boot-on;
+                };
+                buck8: BUCK6 {
+                    regulator-name = "buck6";
+                    regulator-min-microvolt = <800000>;
+                    regulator-max-microvolt = <1400000>;
+                };
+
+                ldo1: LDO1 {
+                    regulator-name = "ldo1";
+                    regulator-min-microvolt = <1600000>;
+                    regulator-max-microvolt = <3300000>;
+                    regulator-boot-on;
+                };
+                ldo2: LDO2 {
+                    regulator-name = "ldo2";
+                    regulator-min-microvolt = <800000>;
+                    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 = <800000>;
+                    regulator-max-microvolt = <3300000>;
+                };
+                ldo6: LDO6 {
+                    regulator-name = "ldo6";
+                    regulator-min-microvolt = <900000>;
+                    regulator-max-microvolt = <1800000>;
+                };
+            };
+        };
+    };

diff --git a/Documentation/devicetree/bindings/regulator/rohm,bd71837- regulator.txt b/Documentation/devicetree/bindings/regulator/rohm,bd71837- regulator.txt
deleted file mode 100644
index cbce62c22b60..000000000000
--- a/Documentation/devicetree/bindings/regulator/rohm,bd71837- regulator.txt
+++ /dev/null

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -1
@@ -1,162 +0,0 @@
-ROHM BD71837 and BD71847 Power Management Integrated Circuit

regulator bindings

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -3
-
-Required properties:
- - regulator-name: should be "buck1", ..., "buck8" and "ldo1", ...,

"ldo7" for
- BD71837. For BD71847 names should be "buck1",
..., "buck6"

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -3
-		   and "ldo1", ..., "ldo6"
-
-List of regulators provided by this controller. BD71837 regulators

node
-should be sub node of the BD71837 MFD node. See BD71837 MFD bindings at

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -2
-Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt
-Regulator nodes should be named to BUCK_<number> and LDO_<number>.

The

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -6
-definition for each of these nodes is defined using the standard
-binding for regulators at
-Documentation/devicetree/bindings/regulator/regulator.txt.
-Note that if BD71837 starts at RUN state you probably want to use
-regulator-boot-on at least for BUCK6 and BUCK7 so that those are not
-disabled by driver at startup. LDO5 and LDO6 are supplied by those

and
-if they are disabled at startup the voltage monitoring for LDO5/LDO6 will

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -12
-cause PMIC to reset.
-
-The valid names for BD71837 regulator nodes are:
-BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6, BUCK7, BUCK8
-LDO1, LDO2, LDO3, LDO4, LDO5, LDO6, LDO7
-
-The valid names for BD71847 regulator nodes are:
-BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6
-LDO1, LDO2, LDO3, LDO4, LDO5, LDO6
-
-Optional properties:
-- rohm,dvs-run-voltage		: PMIC default "RUN" state

voltage in uV.

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -1
-				  See below table for bucks which

support this.
-- rohm,dvs-idle-voltage : PMIC default "IDLE" state
voltage in uV.

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -1
-				  See below table for bucks which

support this.
-- rohm,dvs-suspend-voltage : PMIC default "SUSPEND" state voltage
in uV.

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -1
-				  See below table for bucks which

support this.
-- Any optional property defined in bindings/regulator/regulator.txt

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -11
-
-Supported default DVS states:
-
-BD71837:
-buck	| dvs-run-voltage	| dvs-idle-voltage	| dvs-suspend-voltage
-------------------------------------------------------------------
-----------
-1	| supported		| supported		| supported
-------------------------------------------------------------------
----------
-2	| supported		| supported		| not

supported
-------------------------------------------------------------------
----------
-3 | supported | not supported | not
supported
-------------------------------------------------------------------
----------
-4 | supported | not supported | not
supported
-------------------------------------------------------------------
----------
-rest | not supported | not supported | not
supported

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -9
-
-BD71847:
-buck	| dvs-run-voltage	| dvs-idle-voltage	| dvs-suspend-voltage
-------------------------------------------------------------------
-----------
-1	| supported		| supported		| supported
-------------------------------------------------------------------
----------
-2	| supported		| supported		| not

supported
-------------------------------------------------------------------
----------
-rest | not supported | not supported | not
supported

Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml new file +0 -102
-
-Example:
-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>;
-	};
-};
-
-

diff --git a/Documentation/devicetree/bindings/regulator/rohm,bd71837- regulator.yaml b/Documentation/devicetree/bindings/regulator/rohm,bd71837- regulator.yaml
new file mode 100644
index 000000000000..a323b1696eee

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +0 -0

regulator.yaml

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +4 -0
@@ -0,0 +1,103 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: 

http://devicetree.org/schemas/regulator/rohm,bd71837-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +8 -0
+
+title: ROHM BD71837 Power Management Integrated Circuit regulators
+
+maintainers:
+  - Matti Vaittinen <[email protected]>
+
+description: |
+  List of regulators provided by this controller. BD71837 regulators

node
+ should be sub node of the BD71837 MFD node. See BD71837 MFD bindings at

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +2 -0
+  Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml
+  Regulator nodes should be named to BUCK_<number> and LDO_<number>.

The

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +5 -0
+  definition for each of these nodes is defined using the standard
+  binding for regulators at
+  Documentation/devicetree/bindings/regulator/regulator.txt.
+  Note that if BD71837 starts at RUN state you probably want to use
+  regulator-boot-on at least for BUCK6 and BUCK7 so that those are

not
+ disabled by driver at startup. LDO5 and LDO6 are supplied by those and
+ if they are disabled at startup the voltage monitoring for LDO5/LDO6 will

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +40 -0
+  cause PMIC to reset.
+
+#The valid names for BD71837 regulator nodes are:
+#BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6, BUCK7, BUCK8
+#LDO1, LDO2, LDO3, LDO4, LDO5, LDO6, LDO7
+
+patternProperties:
+  "^LDO[1-7]$":
+    type: object
+    allOf:
+      - $ref: regulator.yaml#
+    description:
+      Properties for single LDO regulator.
+
+    properties:
+      regulator-name:
+        pattern: "^ldo[1-7]$"
+        description:
+          should be "ldo1", ..., "ldo7"
+
+  "^BUCK[1-8]$":
+    type: object
+    allOf:
+      - $ref: regulator.yaml#
+    description:
+      Properties for single BUCK regulator.
+
+    properties:
+      regulator-name:
+        pattern: "^buck[1-8]$"
+        description:
+          should be "buck1", ..., "buck8"
+
+      rohm,dvs-run-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "RUN" state voltage in uV. See below table

for

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +9 -0
+          bucks which support this. 0 means disabled.
+
+      rohm,dvs-idle-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "IDLE" state voltage in uV. See below table

for

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +9 -0
+          bucks which support this. 0 means disabled.
+
+      rohm,dvs-suspend-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "SUSPEND" state voltage in uV. See below

table for

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +6 -0
+          bucks which support this. 0 means disabled.
+
+        # Supported default DVS states:
+        #
+        # BD71837:
+        # buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-

voltage

Documentation/devicetree/bindings/regulator/rohm,bd71837- new file +16 -5
+        # ----------------------------------------------------------
------
+        # 1    | supported       | supported        | supported
+        # ----------------------------------------------------------
------
+        # 2    | supported       | supported        | not supported
+        # ----------------------------------------------------------
------
+        # 3    | supported       | not supported    | not supported
+        # ----------------------------------------------------------
------
+        # 4    | supported       | not supported    | not supported
+        # ----------------------------------------------------------
------
+        # rest | not supported   | not supported    | not supported
+
+
+    required:
+      - regulator-name
+  additionalProperties: false
+additionalProperties: false

diff --git a/Documentation/devicetree/bindings/regulator/rohm,bd71847- regulator.yaml b/Documentation/devicetree/bindings/regulator/rohm,bd71847- regulator.yaml
new file mode 100644
index 000000000000..526fd00bcb16

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +0 -0

regulator.yaml

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +4 -0
@@ -0,0 +1,97 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: 

http://devicetree.org/schemas/regulator/rohm,bd71847-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +2 -0
+
+title: ROHM BD71847 and BD71850 Power Management Integrated Circuit

regulators

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +6 -0
+
+maintainers:
+  - Matti Vaittinen <[email protected]>
+
+description: |
+  List of regulators provided by this controller. BD71847 regulators

node
+ should be sub node of the BD71847 MFD node. See BD71847 MFD bindings at

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +2 -0
+  Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml
+  Regulator nodes should be named to BUCK_<number> and LDO_<number>.

The

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +5 -0
+  definition for each of these nodes is defined using the standard
+  binding for regulators at
+  Documentation/devicetree/bindings/regulator/regulator.txt.
+  Note that if BD71847 starts at RUN state you probably want to use
+  regulator-boot-on at least for BUCK5. LDO6 is supplied by it and

it must
+ not be disabled by driver at startup. If BUCK5 is disabled at startup the

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +40 -0
+  voltage monitoring for LDO5/LDO6 can cause PMIC to reset.
+
+#The valid names for BD71847 regulator nodes are:
+#BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6
+#LDO1, LDO2, LDO3, LDO4, LDO5, LDO6
+
+patternProperties:
+  "^LDO[1-6]$":
+    type: object
+    allOf:
+      - $ref: regulator.yaml#
+    description:
+      Properties for single LDO regulator.
+
+    properties:
+      regulator-name:
+        pattern: "^ldo[1-6]$"
+        description:
+          should be "ldo1", ..., "ldo6"
+
+  "^BUCK[1-6]$":
+    type: object
+    allOf:
+      - $ref: regulator.yaml#
+    description:
+      Properties for single BUCK regulator.
+
+    properties:
+      regulator-name:
+        pattern: "^buck[1-6]$"
+        description:
+          should be "buck1", ..., "buck6"
+
+      rohm,dvs-run-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "RUN" state voltage in uV. See below table

for

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +9 -0
+          bucks which support this. 0 means disabled.
+
+      rohm,dvs-idle-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "IDLE" state voltage in uV. See below table

for

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +9 -0
+          bucks which support this. 0 means disabled.
+
+      rohm,dvs-suspend-voltage:
+        allOf:
+          - $ref: "/schemas/types.yaml#/definitions/uint32"
+          - minimum: 0
+            maximum: 1300000
+        description:
+          PMIC default "SUSPEND" state voltage in uV. See below

table for

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +6 -0
+          bucks which support this. 0 means disabled.
+
+        # Supported default DVS states:
+        #
+        # BD71847:
+        # buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-

voltage

Documentation/devicetree/bindings/regulator/rohm,bd71847- new file +11 -3
+        # ----------------------------------------------------------
------
+        # 1    | supported       | supported        | supported
+        # ----------------------------------------------------------
------
+        # 2    | supported       | supported        | not supported
+        # ----------------------------------------------------------
------
+        # rest | not supported   | not supported    | not supported
+
+    required:
+      - regulator-name
+  additionalProperties: false
+additionalProperties: false
Signature · 1 line
2.21.0