xref: /freebsd/sys/contrib/device-tree/Bindings/mfd/rohm,bd96801-pmic.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
10e8011faSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
20e8011faSEmmanuel Vadot%YAML 1.2
30e8011faSEmmanuel Vadot---
40e8011faSEmmanuel Vadot$id: http://devicetree.org/schemas/mfd/rohm,bd96801-pmic.yaml#
50e8011faSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
60e8011faSEmmanuel Vadot
70e8011faSEmmanuel Vadottitle: ROHM BD96801 Scalable Power Management Integrated Circuit
80e8011faSEmmanuel Vadot
90e8011faSEmmanuel Vadotmaintainers:
100e8011faSEmmanuel Vadot  - Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
110e8011faSEmmanuel Vadot
120e8011faSEmmanuel Vadotdescription:
130e8011faSEmmanuel Vadot  BD96801 is an automotive grade single-chip power management IC.
140e8011faSEmmanuel Vadot  It integrates 4 buck converters and 3 LDOs with safety features like
150e8011faSEmmanuel Vadot  over-/under voltage and over current detection and a watchdog.
160e8011faSEmmanuel Vadot
170e8011faSEmmanuel Vadotproperties:
180e8011faSEmmanuel Vadot  compatible:
190e8011faSEmmanuel Vadot    const: rohm,bd96801
200e8011faSEmmanuel Vadot
210e8011faSEmmanuel Vadot  reg:
220e8011faSEmmanuel Vadot    maxItems: 1
230e8011faSEmmanuel Vadot
240e8011faSEmmanuel Vadot  interrupts:
250e8011faSEmmanuel Vadot    description:
260e8011faSEmmanuel Vadot      The PMIC provides intb and errb IRQ lines. The errb IRQ line is used
270e8011faSEmmanuel Vadot      for fatal IRQs which will cause the PMIC to shut down power outputs.
28*b2d2a78aSEmmanuel Vadot      In many systems this will shut down the SoC controlling the PMIC and
290e8011faSEmmanuel Vadot      connecting/handling the errb can be omitted. However, there are cases
300e8011faSEmmanuel Vadot      where the SoC is not powered by the PMIC or has a short time backup
310e8011faSEmmanuel Vadot      energy to handle shutdown of critical hardware. In that case it may be
320e8011faSEmmanuel Vadot      useful to connect the errb and handle errb events.
330e8011faSEmmanuel Vadot    minItems: 1
340e8011faSEmmanuel Vadot    maxItems: 2
350e8011faSEmmanuel Vadot
360e8011faSEmmanuel Vadot  interrupt-names:
370e8011faSEmmanuel Vadot    minItems: 1
380e8011faSEmmanuel Vadot    items:
390e8011faSEmmanuel Vadot      - enum: [intb, errb]
400e8011faSEmmanuel Vadot      - const: errb
410e8011faSEmmanuel Vadot
420e8011faSEmmanuel Vadot  rohm,hw-timeout-ms:
430e8011faSEmmanuel Vadot    description:
440e8011faSEmmanuel Vadot      Watchdog timeout value(s). First walue is timeout limit. Second value is
450e8011faSEmmanuel Vadot      optional value for 'too early' watchdog ping if window timeout mode is
460e8011faSEmmanuel Vadot      to be used.
470e8011faSEmmanuel Vadot    minItems: 1
480e8011faSEmmanuel Vadot    maxItems: 2
490e8011faSEmmanuel Vadot
500e8011faSEmmanuel Vadot  rohm,wdg-action:
510e8011faSEmmanuel Vadot    description:
520e8011faSEmmanuel Vadot      Whether the watchdog failure must turn off the regulator power outputs or
530e8011faSEmmanuel Vadot      just toggle the INTB line.
540e8011faSEmmanuel Vadot    enum:
550e8011faSEmmanuel Vadot      - prstb
560e8011faSEmmanuel Vadot      - intb-only
570e8011faSEmmanuel Vadot
580e8011faSEmmanuel Vadot  timeout-sec:
590e8011faSEmmanuel Vadot    maxItems: 2
600e8011faSEmmanuel Vadot
610e8011faSEmmanuel Vadot  regulators:
620e8011faSEmmanuel Vadot    $ref: /schemas/regulator/rohm,bd96801-regulator.yaml
630e8011faSEmmanuel Vadot    description:
640e8011faSEmmanuel Vadot      List of child nodes that specify the regulators.
650e8011faSEmmanuel Vadot
660e8011faSEmmanuel Vadotrequired:
670e8011faSEmmanuel Vadot  - compatible
680e8011faSEmmanuel Vadot  - reg
690e8011faSEmmanuel Vadot  - interrupts
700e8011faSEmmanuel Vadot  - interrupt-names
710e8011faSEmmanuel Vadot  - regulators
720e8011faSEmmanuel Vadot
730e8011faSEmmanuel VadotadditionalProperties: false
740e8011faSEmmanuel Vadot
750e8011faSEmmanuel Vadotexamples:
760e8011faSEmmanuel Vadot  - |
770e8011faSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
780e8011faSEmmanuel Vadot    #include <dt-bindings/leds/common.h>
790e8011faSEmmanuel Vadot    i2c {
800e8011faSEmmanuel Vadot        #address-cells = <1>;
810e8011faSEmmanuel Vadot        #size-cells = <0>;
820e8011faSEmmanuel Vadot        pmic: pmic@60 {
830e8011faSEmmanuel Vadot            reg = <0x60>;
840e8011faSEmmanuel Vadot            compatible = "rohm,bd96801";
850e8011faSEmmanuel Vadot            interrupt-parent = <&gpio1>;
860e8011faSEmmanuel Vadot            interrupts = <29 IRQ_TYPE_LEVEL_LOW>, <6 IRQ_TYPE_LEVEL_LOW>;
870e8011faSEmmanuel Vadot            interrupt-names = "intb", "errb";
880e8011faSEmmanuel Vadot
890e8011faSEmmanuel Vadot            regulators {
900e8011faSEmmanuel Vadot                buck1 {
910e8011faSEmmanuel Vadot                    regulator-name = "buck1";
920e8011faSEmmanuel Vadot                    regulator-ramp-delay = <1250>;
930e8011faSEmmanuel Vadot                    /* 0.5V min INITIAL - 150 mV tune */
940e8011faSEmmanuel Vadot                    regulator-min-microvolt = <350000>;
950e8011faSEmmanuel Vadot                    /* 3.3V + 150mV tune */
960e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3450000>;
970e8011faSEmmanuel Vadot
980e8011faSEmmanuel Vadot                    /* These can be set only when PMIC is in STBY */
990e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <500000>;
1000e8011faSEmmanuel Vadot                    regulator-ov-error-microvolt = <230000>;
1010e8011faSEmmanuel Vadot                    regulator-uv-error-microvolt = <230000>;
1020e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1030e8011faSEmmanuel Vadot                    regulator-temp-warn-kelvin = <0>;
1040e8011faSEmmanuel Vadot                };
1050e8011faSEmmanuel Vadot                buck2 {
1060e8011faSEmmanuel Vadot                    regulator-name = "buck2";
1070e8011faSEmmanuel Vadot                    regulator-min-microvolt = <350000>;
1080e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3450000>;
1090e8011faSEmmanuel Vadot
1100e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <3000000>;
1110e8011faSEmmanuel Vadot                    regulator-ov-error-microvolt = <18000>;
1120e8011faSEmmanuel Vadot                    regulator-uv-error-microvolt = <18000>;
1130e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1140e8011faSEmmanuel Vadot                    regulator-temp-warn-kelvin = <1>;
1150e8011faSEmmanuel Vadot                };
1160e8011faSEmmanuel Vadot                buck3 {
1170e8011faSEmmanuel Vadot                    regulator-name = "buck3";
1180e8011faSEmmanuel Vadot                    regulator-min-microvolt = <350000>;
1190e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3450000>;
1200e8011faSEmmanuel Vadot
1210e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <600000>;
1220e8011faSEmmanuel Vadot                    regulator-ov-warn-microvolt = <18000>;
1230e8011faSEmmanuel Vadot                    regulator-uv-warn-microvolt = <18000>;
1240e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1250e8011faSEmmanuel Vadot                    regulator-temp-error-kelvin = <0>;
1260e8011faSEmmanuel Vadot                };
1270e8011faSEmmanuel Vadot                buck4 {
1280e8011faSEmmanuel Vadot                    regulator-name = "buck4";
1290e8011faSEmmanuel Vadot                    regulator-min-microvolt = <350000>;
1300e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3450000>;
1310e8011faSEmmanuel Vadot
1320e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <600000>;
1330e8011faSEmmanuel Vadot                    regulator-ov-warn-microvolt = <18000>;
1340e8011faSEmmanuel Vadot                    regulator-uv-warn-microvolt = <18000>;
1350e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1360e8011faSEmmanuel Vadot                    regulator-temp-error-kelvin = <0>;
1370e8011faSEmmanuel Vadot                };
1380e8011faSEmmanuel Vadot                ldo5 {
1390e8011faSEmmanuel Vadot                    regulator-name = "ldo5";
1400e8011faSEmmanuel Vadot                    regulator-min-microvolt = <300000>;
1410e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3300000>;
1420e8011faSEmmanuel Vadot
1430e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <500000>;
1440e8011faSEmmanuel Vadot                    regulator-ov-error-microvolt = <36000>;
1450e8011faSEmmanuel Vadot                    regulator-uv-error-microvolt = <34000>;
1460e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1470e8011faSEmmanuel Vadot                    regulator-temp-warn-kelvin = <0>;
1480e8011faSEmmanuel Vadot                };
1490e8011faSEmmanuel Vadot                ldo6 {
1500e8011faSEmmanuel Vadot                    regulator-name = "ldo6";
1510e8011faSEmmanuel Vadot                    regulator-min-microvolt = <300000>;
1520e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3300000>;
1530e8011faSEmmanuel Vadot
1540e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <300000>;
1550e8011faSEmmanuel Vadot                    regulator-ov-error-microvolt = <36000>;
1560e8011faSEmmanuel Vadot                    regulator-uv-error-microvolt = <34000>;
1570e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1580e8011faSEmmanuel Vadot                    regulator-temp-warn-kelvin = <0>;
1590e8011faSEmmanuel Vadot                };
1600e8011faSEmmanuel Vadot                ldo7 {
1610e8011faSEmmanuel Vadot                    regulator-name = "ldo7";
1620e8011faSEmmanuel Vadot                    regulator-min-microvolt = <300000>;
1630e8011faSEmmanuel Vadot                    regulator-max-microvolt = <3300000>;
1640e8011faSEmmanuel Vadot
1650e8011faSEmmanuel Vadot                    rohm,initial-voltage-microvolt = <500000>;
1660e8011faSEmmanuel Vadot                    regulator-ov-error-microvolt = <36000>;
1670e8011faSEmmanuel Vadot                    regulator-uv-error-microvolt = <34000>;
1680e8011faSEmmanuel Vadot                    regulator-temp-protection-kelvin = <1>;
1690e8011faSEmmanuel Vadot                    regulator-temp-warn-kelvin = <0>;
1700e8011faSEmmanuel Vadot                };
1710e8011faSEmmanuel Vadot            };
1720e8011faSEmmanuel Vadot        };
1730e8011faSEmmanuel Vadot    };
174