1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/st,stpmic1.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: STMicroelectonics STPMIC1 Power Management IC
8
9description: STMicroelectronics STPMIC1 Power Management IC
10
11maintainers:
12  - pascal Paillet <p.paillet@foss.st.com>
13
14properties:
15  compatible:
16    const: st,stpmic1
17
18  reg:
19    const: 0x33
20
21  interrupts:
22    maxItems: 1
23
24  "#interrupt-cells":
25    const: 2
26
27  interrupt-controller: true
28
29  onkey:
30    type: object
31
32    $ref: ../input/input.yaml
33
34    properties:
35      compatible:
36        const: st,stpmic1-onkey
37
38      interrupts:
39        items:
40          - description: onkey-falling, happens when onkey is pressed. IT_PONKEY_F of pmic
41          - description: onkey-rising, happens when onkey is released. IT_PONKEY_R of pmic
42
43      interrupt-names:
44        items:
45          - const: onkey-falling
46          - const: onkey-rising
47
48      st,onkey-clear-cc-flag:
49        description: onkey is able power on after an over-current shutdown event.
50        $ref: /schemas/types.yaml#/definitions/flag
51
52      st,onkey-pu-inactive:
53        description: onkey pull up is not active
54        $ref: /schemas/types.yaml#/definitions/flag
55
56      power-off-time-sec:
57        minimum: 1
58        maximum: 16
59
60    required:
61      - compatible
62      - interrupts
63      - interrupt-names
64
65    additionalProperties: false
66
67  watchdog:
68    type: object
69
70    $ref: ../watchdog/watchdog.yaml
71
72    properties:
73      compatible:
74        const: st,stpmic1-wdt
75
76      timeout-sec: true
77
78    required:
79      - compatible
80
81    additionalProperties: false
82
83  regulators:
84    type: object
85
86    description: |
87      Available Regulators in STPMIC1 device are:
88        - buck1 for Buck BUCK1
89        - buck2 for Buck BUCK2
90        - buck3 for Buck BUCK3
91        - buck4 for Buck BUCK4
92        - ldo1 for LDO LDO1
93        - ldo2 for LDO LDO2
94        - ldo3 for LDO LDO3
95        - ldo4 for LDO LDO4
96        - ldo5 for LDO LDO5
97        - ldo6 for LDO LDO6
98        - vref_ddr for LDO Vref DDR
99        - boost for Buck BOOST
100        - pwr_sw1 for VBUS_OTG switch
101        - pwr_sw2 for SW_OUT switch
102      Switches are fixed voltage regulators with only enable/disable capability.
103
104    properties:
105      compatible:
106        const: st,stpmic1-regulators
107
108      ldo3:
109        type: object
110
111        properties:
112          interrupts:
113            maxItems: 1
114
115          st,mask-reset:
116            description: mask reset for this regulator, the regulator configuration
117              is maintained during pmic reset.
118            $ref: /schemas/types.yaml#/definitions/flag
119
120          regulator-name: true
121          regulator-boot-on: true
122          regulator-always-on: true
123          regulator-min-microvolt: true
124          regulator-max-microvolt: true
125          regulator-allow-bypass: true
126          regulator-over-current-protection: true
127
128        additionalProperties: false
129
130      ldo4:
131        type: object
132
133        properties:
134          interrupts:
135            maxItems: 1
136
137          st,mask-reset:
138            description: mask reset for this regulator, the regulator configuration
139              is maintained during pmic reset.
140            $ref: /schemas/types.yaml#/definitions/flag
141
142          regulator-name: true
143          regulator-boot-on: true
144          regulator-always-on: true
145          regulator-over-current-protection: true
146
147        additionalProperties: false
148
149      vref_ddr:
150        type: object
151
152        properties:
153          interrupts:
154            maxItems: 1
155
156          st,mask-reset:
157            description: mask reset for this regulator, the regulator configuration
158              is maintained during pmic reset.
159            $ref: /schemas/types.yaml#/definitions/flag
160
161          regulator-name: true
162          regulator-boot-on: true
163          regulator-always-on: true
164
165        additionalProperties: false
166
167      boost:
168        type: object
169
170        properties:
171          interrupts:
172            maxItems: 1
173
174          st,mask-reset:
175            description: mask reset for this regulator, the regulator configuration
176              is maintained during pmic reset.
177            $ref: /schemas/types.yaml#/definitions/flag
178
179          regulator-name: true
180          regulator-boot-on: true
181          regulator-always-on: true
182          regulator-over-current-protection: true
183
184        additionalProperties: false
185
186    patternProperties:
187      "^(buck[1-4]|ldo[1-6]|vref_ddr|boost|pwr_sw[1-2])-supply$":
188        description: STPMIC1 voltage regulators supplies
189
190      "^(buck[1-4]|ldo[1-6]|boost|vref_ddr|pwr_sw[1-2])$":
191        $ref: ../regulator/regulator.yaml
192
193      "^ldo[1-2,5-6]$":
194        type: object
195
196        properties:
197          interrupts:
198            maxItems: 1
199
200          st,mask-reset:
201            description: mask reset for this regulator, the regulator configuration
202              is maintained during pmic reset.
203            $ref: /schemas/types.yaml#/definitions/flag
204
205          regulator-name: true
206          regulator-boot-on: true
207          regulator-always-on: true
208          regulator-min-microvolt: true
209          regulator-max-microvolt: true
210          regulator-over-current-protection: true
211          regulator-enable-ramp-delay: true
212
213        additionalProperties: false
214
215      "^buck[1-4]$":
216        type: object
217
218        properties:
219          interrupts:
220            maxItems: 1
221
222          st,mask-reset:
223            description: mask reset for this regulator, the regulator configuration
224              is maintained during pmic reset.
225            $ref: /schemas/types.yaml#/definitions/flag
226
227          regulator-name: true
228          regulator-boot-on: true
229          regulator-always-on: true
230          regulator-min-microvolt: true
231          regulator-max-microvolt: true
232          regulator-initial-mode: true
233          regulator-pull-down: true
234          regulator-over-current-protection: true
235          regulator-enable-ramp-delay: true
236
237        additionalProperties: false
238
239      "^pwr_sw[1-2]$":
240        type: object
241
242        properties:
243          interrupts:
244            maxItems: 1
245
246          regulator-name: true
247          regulator-boot-on: true
248          regulator-always-on: true
249          regulator-over-current-protection: true
250          regulator-active-discharge: true
251
252        additionalProperties: false
253
254    required:
255      - compatible
256
257    additionalProperties: false
258
259additionalProperties: false
260
261required:
262  - compatible
263  - reg
264  - interrupts
265  - "#interrupt-cells"
266  - interrupt-controller
267
268examples:
269  - |
270    #include <dt-bindings/mfd/st,stpmic1.h>
271    #include <dt-bindings/interrupt-controller/arm-gic.h>
272    i2c {
273      #address-cells = <1>;
274      #size-cells = <0>;
275      pmic@33 {
276        compatible = "st,stpmic1";
277        reg = <0x33>;
278        interrupt-parent = <&gpioa>;
279        interrupts = <0 2>;
280
281        interrupt-controller;
282        #interrupt-cells = <2>;
283
284        onkey {
285          compatible = "st,stpmic1-onkey";
286          interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>;
287          interrupt-names = "onkey-falling", "onkey-rising";
288          power-off-time-sec = <10>;
289        };
290
291        watchdog {
292          compatible = "st,stpmic1-wdt";
293        };
294
295        regulators {
296          compatible = "st,stpmic1-regulators";
297
298          ldo6-supply = <&v3v3>;
299
300          buck1 {
301            regulator-name = "vdd_core";
302            interrupts = <IT_CURLIM_BUCK1 0>;
303            st,mask-reset;
304            regulator-boot-on;
305            regulator-min-microvolt = <700000>;
306            regulator-max-microvolt = <1200000>;
307          };
308
309          buck3 {
310            regulator-name = "vdd";
311            regulator-min-microvolt = <3300000>;
312            regulator-max-microvolt = <3300000>;
313            regulator-boot-on;
314            regulator-pull-down;
315          };
316
317          buck4 {
318            regulator-name = "v3v3";
319            interrupts = <IT_CURLIM_BUCK4 0>;
320            regulator-min-microvolt = <3300000>;
321            regulator-max-microvolt = <3300000>;
322          };
323
324          ldo6 {
325            regulator-name = "v1v8";
326            regulator-min-microvolt = <1800000>;
327            regulator-max-microvolt = <1800000>;
328            regulator-over-current-protection;
329          };
330        };
331      };
332    };
333
334...
335