xref: /linux/Documentation/devicetree/bindings/regulator/nxp,pca9450-regulator.yaml (revision e7e86d7697c6ed1dbbde18d7185c35b6967945ed)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/regulator/nxp,pca9450-regulator.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP PCA9450A/B/C Power Management Integrated Circuit regulators
8
9maintainers:
10  - Robin Gong <yibin.gong@nxp.com>
11
12description: |
13  Regulator nodes should be named to BUCK_<number> and LDO_<number>. The
14  definition for each of these nodes is defined using the standard
15  binding for regulators at
16  Documentation/devicetree/bindings/regulator/regulator.txt.
17  Datasheet is available at
18  https://www.nxp.com/docs/en/data-sheet/PCA9450DS.pdf
19
20  Support PF9453, Datasheet is available at
21  https://www.nxp.com/docs/en/data-sheet/PF9453_SDS.pdf
22
23# The valid names for PCA9450 regulator nodes are:
24# BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6,
25# LDO1, LDO2, LDO3, LDO4, LDO5
26# Note: Buck3 removed on PCA9450B and connect with Buck1 on PCA9450C.
27
28properties:
29  compatible:
30    enum:
31      - nxp,pca9450a
32      - nxp,pca9450b
33      - nxp,pca9450c
34      - nxp,pca9451a
35      - nxp,pca9452
36      - nxp,pf9453
37
38  reg:
39    maxItems: 1
40
41  interrupts:
42    maxItems: 1
43
44  regulators:
45    type: object
46    description: |
47      list of regulators provided by this controller
48
49    properties:
50      LDO5:
51        type: object
52        $ref: regulator.yaml#
53        description:
54          Properties for single LDO5 regulator.
55
56        properties:
57          nxp,sd-vsel-fixed-low:
58            type: boolean
59            description:
60              Let the driver know that SD_VSEL is hardwired to low level and
61              there is no GPIO to get the actual value from.
62
63          sd-vsel-gpios:
64            description:
65              GPIO that can be used to read the current status of the SD_VSEL
66              signal in order for the driver to know if LDO5CTRL_L or LDO5CTRL_H
67              is used by the hardware.
68
69        unevaluatedProperties: false
70
71    patternProperties:
72      "^LDO([1-4]|-SNVS)$":
73        type: object
74        $ref: regulator.yaml#
75        description:
76          Properties for single LDO regulator.
77
78        unevaluatedProperties: false
79
80      "^BUCK[1-6]$":
81        type: object
82        $ref: regulator.yaml#
83        description:
84          Properties for single BUCK regulator.
85
86        properties:
87          nxp,dvs-run-voltage:
88            $ref: /schemas/types.yaml#/definitions/uint32
89            minimum: 600000
90            maximum: 2187500
91            description:
92              PMIC default "RUN" state voltage in uV. Only Buck1~3 have such
93              dvs(dynamic voltage scaling) property.
94
95          nxp,dvs-standby-voltage:
96            $ref: /schemas/types.yaml#/definitions/uint32
97            minimum: 600000
98            maximum: 2187500
99            description:
100              PMIC default "STANDBY" state voltage in uV. Only Buck1~3 have such
101              dvs(dynamic voltage scaling) property.
102
103          regulator-allowed-modes:
104            description: |
105              Buck regulator operating modes allowed. Valid values below.
106              Users should use the macros from dt-bindings/regulator/nxp,pca9450-regulator.h
107                0 (PCA9450_BUCK_MODE_AUTO): Auto PFM/PWM mode
108                1 (PCA9450_BUCK_MODE_FORCE_PWM): Forced PWM mode
109            items:
110              enum: [ 0, 1 ]
111
112        unevaluatedProperties: false
113
114    additionalProperties: false
115
116  nxp,i2c-lt-enable:
117    type: boolean
118    description:
119      Indicates that the I2C Level Translator is used.
120
121  nxp,wdog_b-warm-reset:
122    type: boolean
123    description:
124      When WDOG_B signal is asserted a warm reset will be done instead of cold
125      reset.
126
127required:
128  - compatible
129  - reg
130  - regulators
131
132additionalProperties: false
133
134allOf:
135  - if:
136      properties:
137        compatible:
138          contains:
139            const: nxp,pf9453
140    then:
141      properties:
142        regulators:
143          patternProperties:
144            "^LDO[3-4]$": false
145            "^BUCK[5-6]$": false
146    else:
147      properties:
148        regulators:
149          properties:
150            LDO-SNVS: false
151
152examples:
153  - |
154    #include <dt-bindings/interrupt-controller/irq.h>
155    #include <dt-bindings/regulator/nxp,pca9450-regulator.h>
156
157    i2c {
158        #address-cells = <1>;
159        #size-cells = <0>;
160        pmic: pmic@25 {
161            compatible = "nxp,pca9450b";
162            reg = <0x25>;
163            pinctrl-0 = <&pinctrl_pmic>;
164            interrupt-parent = <&gpio1>;
165            interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
166
167            regulators {
168                buck1: BUCK1 {
169                    regulator-name = "BUCK1";
170                    regulator-min-microvolt = <600000>;
171                    regulator-max-microvolt = <2187500>;
172                    regulator-boot-on;
173                    regulator-always-on;
174                    regulator-ramp-delay = <3125>;
175                };
176                buck2: BUCK2 {
177                    regulator-name = "BUCK2";
178                    regulator-min-microvolt = <600000>;
179                    regulator-max-microvolt = <2187500>;
180                    regulator-boot-on;
181                    regulator-always-on;
182                    regulator-ramp-delay = <3125>;
183                    nxp,dvs-run-voltage = <950000>;
184                    nxp,dvs-standby-voltage = <850000>;
185                };
186                buck4: BUCK4 {
187                    regulator-name = "BUCK4";
188                    regulator-min-microvolt = <600000>;
189                    regulator-max-microvolt = <3400000>;
190                    regulator-boot-on;
191                    regulator-always-on;
192                    regulator-initial-mode = <PCA9450_BUCK_MODE_FORCE_PWM>;
193                    regulator-allowed-modes = <PCA9450_BUCK_MODE_FORCE_PWM>;
194                };
195                buck5: BUCK5 {
196                    regulator-name = "BUCK5";
197                    regulator-min-microvolt = <600000>;
198                    regulator-max-microvolt = <3400000>;
199                    regulator-boot-on;
200                    regulator-always-on;
201                    regulator-allowed-modes = <PCA9450_BUCK_MODE_AUTO
202                                               PCA9450_BUCK_MODE_FORCE_PWM>;
203                };
204                buck6: BUCK6 {
205                    regulator-name = "BUCK6";
206                    regulator-min-microvolt = <600000>;
207                    regulator-max-microvolt = <3400000>;
208                    regulator-boot-on;
209                    regulator-always-on;
210                };
211
212                ldo1: LDO1 {
213                    regulator-name = "LDO1";
214                    regulator-min-microvolt = <1600000>;
215                    regulator-max-microvolt = <3300000>;
216                    regulator-boot-on;
217                    regulator-always-on;
218                };
219                ldo2: LDO2 {
220                    regulator-name = "LDO2";
221                    regulator-min-microvolt = <800000>;
222                    regulator-max-microvolt = <1150000>;
223                    regulator-boot-on;
224                    regulator-always-on;
225                };
226                ldo3: LDO3 {
227                    regulator-name = "LDO3";
228                    regulator-min-microvolt = <800000>;
229                    regulator-max-microvolt = <3300000>;
230                    regulator-boot-on;
231                    regulator-always-on;
232                };
233                ldo4: LDO4 {
234                    regulator-name = "LDO4";
235                    regulator-min-microvolt = <800000>;
236                    regulator-max-microvolt = <3300000>;
237                    regulator-boot-on;
238                    regulator-always-on;
239                };
240                ldo5: LDO5 {
241                    regulator-name = "LDO5";
242                    regulator-min-microvolt = <1800000>;
243                    regulator-max-microvolt = <3300000>;
244                    regulator-boot-on;
245                    regulator-always-on;
246                };
247            };
248        };
249    };
250