1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/regulator/qcom,rpmh-regulator.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies, Inc. RPMh Regulators
8
9maintainers:
10  - Bjorn Andersson <bjorn.andersson@linaro.org>
11  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
12
13description: |
14    rpmh-regulator devices support PMIC regulator management via the Voltage
15    Regulator Manager (VRM) and Oscillator Buffer (XOB) RPMh accelerators.
16    The APPS processor communicates with these hardware blocks via a
17    Resource State Coordinator (RSC) using command packets.  The VRM allows
18    changing three parameters for a given regulator, enable state, output
19    voltage, and operating mode.  The XOB allows changing only a single
20    parameter for a given regulator, its enable state.  Despite its name,
21    the XOB is capable of controlling the enable state of any PMIC peripheral.
22    It is used for clock buffers, low-voltage switches, and LDO/SMPS regulators
23    which have a fixed voltage and mode.
24
25    =======================
26    Required Node Structure
27    =======================
28
29    RPMh regulators must be described in two levels of device nodes.  The first
30    level describes the PMIC containing the regulators and must reside within an
31    RPMh device node.  The second level describes each regulator within the PMIC
32    which is to be used on the board.  Each of these regulators maps to a single
33    RPMh resource.
34
35    The names used for regulator nodes must match those supported by a given
36    PMIC. Supported regulator node names are
37      For PM6150, smps1 - smps5, ldo1 - ldo19
38      For PM6150L, smps1 - smps8, ldo1 - ldo11, bob
39      For PM6350, smps1 - smps5, ldo1 - ldo22
40      For PM660, smps1 - smps6, ldo1 - ldo3, ldo5 - ldo19
41      For PM660L, smps1 - smps3, smps5, ldo1 - ldo8, bob
42      For PM7325, smps1 - smps8, ldo1 - ldo19
43      For PM8005, smps1 - smps4
44      For PM8009, smps1 - smps2, ldo1 - ldo7
45      For PM8150, smps1 - smps10, ldo1 - ldo18
46      For PM8150L, smps1 - smps8, ldo1 - ldo11, bob, flash, rgb
47      For PM8350, smps1 - smps12, ldo1 - ldo10
48      For PM8350C, smps1 - smps10, ldo1 - ldo13, bob
49      For PM8450, smps1 - smps6, ldo1 - ldo4
50      For PM8998, smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
51      For PMI8998, bob
52      For PMR735A, smps1 - smps3, ldo1 - ldo7
53      For PMX55, smps1 - smps7, ldo1 - ldo16
54      For PMX65, smps1 - smps8, ldo1 - ldo21
55
56properties:
57  compatible:
58    enum:
59      - qcom,pm6150-rpmh-regulators
60      - qcom,pm6150l-rpmh-regulators
61      - qcom,pm6350-rpmh-regulators
62      - qcom,pm660-rpmh-regulators
63      - qcom,pm660l-rpmh-regulators
64      - qcom,pm7325-rpmh-regulators
65      - qcom,pm8005-rpmh-regulators
66      - qcom,pm8009-rpmh-regulators
67      - qcom,pm8009-1-rpmh-regulators
68      - qcom,pm8150-rpmh-regulators
69      - qcom,pm8150l-rpmh-regulators
70      - qcom,pm8350-rpmh-regulators
71      - qcom,pm8350c-rpmh-regulators
72      - qcom,pm8450-rpmh-regulators
73      - qcom,pm8998-rpmh-regulators
74      - qcom,pmg1110-rpmh-regulators
75      - qcom,pmi8998-rpmh-regulators
76      - qcom,pmm8155au-rpmh-regulators
77      - qcom,pmr735a-rpmh-regulators
78      - qcom,pmx55-rpmh-regulators
79      - qcom,pmx65-rpmh-regulators
80
81  qcom,pmic-id:
82    description: |
83        RPMh resource name suffix used for the regulators found
84        on this PMIC.
85    $ref: /schemas/types.yaml#/definitions/string
86    enum: [a, b, c, d, e, f, h, k]
87
88  qcom,always-wait-for-ack:
89    description: |
90        Boolean flag which indicates that the application processor
91        must wait for an ACK or a NACK from RPMh for every request
92        sent for this regulator including those which are for a
93        strictly lower power state.
94    $ref: /schemas/types.yaml#/definitions/flag
95
96  vdd-flash-supply:
97    description: Input supply phandle of flash.
98
99  vdd-rgb-supply:
100    description: Input supply phandle of rgb.
101
102  bob:
103    type: object
104    $ref: "regulator.yaml#"
105    description: BOB regulator node.
106    dependencies:
107      regulator-allow-set-load: ["regulator-allowed-modes"]
108
109patternProperties:
110  "^(smps|ldo|lvs)[0-9]+$":
111    type: object
112    $ref: "regulator.yaml#"
113    description: smps/ldo regulator nodes(s).
114    dependencies:
115      regulator-allow-set-load: ["regulator-allowed-modes"]
116
117required:
118  - compatible
119  - qcom,pmic-id
120
121allOf:
122  - if:
123      properties:
124        compatible:
125          enum:
126            - qcom,pm6150-rpmh-regulators
127    then:
128      properties:
129        vdd-l2-l3-supply: true
130        vdd-l4-l7-l8-supply: true
131        vdd-l5-l16-l17-l18-l19-supply: true
132        vdd-l10-l14-l15-supply: true
133        vdd-l11-l12-l13-supply: true
134      patternProperties:
135        "^vdd-l[169]-supply$": true
136        "^vdd-s[1-5]-supply$": true
137
138  - if:
139      properties:
140        compatible:
141          enum:
142            - qcom,pm6150l-rpmh-regulators
143    then:
144      properties:
145        vdd-bob-supply:
146          description: BOB regulator parent supply phandle.
147        vdd-l1-l8-supply: true
148        vdd-l2-l3-supply: true
149        vdd-l4-l5-l6-supply: true
150        vdd-l7-l11-supply: true
151        vdd-l9-l10-supply: true
152      patternProperties:
153        "^vdd-s[1-8]-supply$": true
154
155  - if:
156      properties:
157        compatible:
158          enum:
159            - qcom,pm660-rpmh-regulators
160    then:
161      properties:
162        vdd-l1-l6-l7-supply: true
163        vdd-l2-l3-supply: true
164        vdd-l5-supply: true
165        vdd-l8-l9-l10-l11-l12-l13-l14-supply: true
166        vdd-l15-l16-l17-l18-l19-supply: true
167      patternProperties:
168        "^vdd-s[1-6]-supply$": true
169
170  - if:
171      properties:
172        compatible:
173          enum:
174            - qcom,pm660l-rpmh-regulators
175    then:
176      properties:
177        vdd-bob-supply:
178          description: BOB regulator parent supply phandle.
179        vdd-l1-l9-l10-supply: true
180        vdd-l2-supply: true
181        vdd-l3-l5-l7-l8-supply: true
182        vdd-l4-l6-supply: true
183        vdd-s3-s4-supply: true
184      patternProperties:
185        "^vdd-s[125]-supply$": true
186
187  - if:
188      properties:
189        compatible:
190          enum:
191            - qcom,pm7325-rpmh-regulators
192    then:
193      properties:
194        vdd-l1-l4-l12-l15-supply: true
195        vdd-l2-l7-supply: true
196        vdd-l6-l9-l10-supply: true
197        vdd-l11-l17-l18-l19-supply: true
198        vdd-l13-supply: true
199        vdd-l14-l16-supply: true
200      patternProperties:
201        "^vdd-l[358]-supply$": true
202        "^vdd-s[1-8]-supply$": true
203
204  - if:
205      properties:
206        compatible:
207          enum:
208            - qcom,pm8005-rpmh-regulators
209    then:
210      patternProperties:
211        "^vdd-s[1-4]-supply$": true
212
213  - if:
214      properties:
215        compatible:
216          enum:
217            - qcom,pm8009-rpmh-regulators
218            - qcom,pm8009-1-rpmh-regulators
219    then:
220      properties:
221        vdd-l5-l6-supply: true
222      patternProperties:
223        "^vdd-l[1-47]-supply$": true
224        "^vdd-s[1-2]-supply$": true
225
226  - if:
227      properties:
228        compatible:
229          enum:
230            - qcom,pm8150-rpmh-regulators
231            - qcom,pmm8155au-rpmh-regulators
232    then:
233      properties:
234        vdd-l1-l8-l11-supply: true
235        vdd-l2-l10-supply: true
236        vdd-l3-l4-l5-l18-supply: true
237        vdd-l6-l9-supply: true
238        vdd-l7-l12-l14-l15-supply: true
239        vdd-l13-l16-l17-supply: true
240      patternProperties:
241        "^vdd-s([1-9]|10)-supply$": true
242
243  - if:
244      properties:
245        compatible:
246          enum:
247            - qcom,pm8150l-rpmh-regulators
248    then:
249      properties:
250        vdd-bob-supply:
251          description: BOB regulator parent supply phandle.
252        vdd-l1-l8-supply: true
253        vdd-l2-l3-supply: true
254        vdd-l4-l5-l6-supply: true
255        vdd-l7-l11-supply: true
256        vdd-l9-l10-supply: true
257      patternProperties:
258        "^vdd-s[1-8]-supply$": true
259
260  - if:
261      properties:
262        compatible:
263          enum:
264            - qcom,pm8350-rpmh-regulators
265    then:
266      properties:
267        vdd-l1-l4-supply: true
268        vdd-l2-l7-supply: true
269        vdd-l3-l5-supply: true
270        vdd-l6-l9-l10-supply: true
271        vdd-l8-supply: true
272      patternProperties:
273        "^vdd-s([1-9]|1[0-2])-supply$": true
274
275  - if:
276      properties:
277        compatible:
278          enum:
279            - qcom,pm8350c-rpmh-regulators
280    then:
281      properties:
282        vdd-bob-supply:
283          description: BOB regulator parent supply phandle.
284        vdd-l1-l12-supply: true
285        vdd-l2-l8-supply: true
286        vdd-l3-l4-l5-l7-l13-supply: true
287        vdd-l6-l9-l11-supply: true
288        vdd-l10-supply: true
289      patternProperties:
290        "^vdd-s([1-9]|10)-supply$": true
291
292  - if:
293      properties:
294        compatible:
295          enum:
296            - qcom,pm8450-rpmh-regulators
297    then:
298      patternProperties:
299        "^vdd-l[1-4]-supply$": true
300        "^vdd-s[1-6]-supply$": true
301
302  - if:
303      properties:
304        compatible:
305          enum:
306            - qcom,pm8998-rpmh-regulators
307    then:
308      properties:
309        vdd-l1-l27-supply: true
310        vdd-l2-l8-l17-supply: true
311        vdd-l3-l11-supply: true
312        vdd-l4-l5-supply: true
313        vdd-l6-supply: true
314        vdd-l7-l12-l14-l15-supply: true
315        vdd-l9-supply: true
316        vdd-l10-l23-l25-supply: true
317        vdd-l13-l19-l21-supply: true
318        vdd-l16-l28-supply: true
319        vdd-l18-l22-supply: true
320        vdd-l20-l24-supply: true
321        vdd-l26-supply: true
322        vin-lvs-1-2-supply: true
323      patternProperties:
324        "^vdd-s([1-9]|1[0-3])-supply$": true
325
326  - if:
327      properties:
328        compatible:
329          enum:
330            - qcom,pmg1110-rpmh-regulators
331    then:
332      properties:
333        vdd-s1-supply: true
334
335  - if:
336      properties:
337        compatible:
338          enum:
339            - qcom,pmi8998-rpmh-regulators
340    then:
341      properties:
342        vdd-bob-supply:
343          description: BOB regulator parent supply phandle.
344
345  - if:
346      properties:
347        compatible:
348          enum:
349            - qcom,pmr735a-rpmh-regulators
350    then:
351      properties:
352        vdd-l1-l2-supply: true
353        vdd-l3-supply: true
354        vdd-l4-supply: true
355        vdd-l5-l6-supply: true
356        vdd-l7-bob-supply: true
357      patternProperties:
358        "^vdd-s[1-3]-supply$": true
359
360  - if:
361      properties:
362        compatible:
363          enum:
364            - qcom,pmx55-rpmh-regulators
365    then:
366      properties:
367        vdd-l1-l2-supply: true
368        vdd-l3-l9-supply: true
369        vdd-l4-l12-supply: true
370        vdd-l5-l6-supply: true
371        vdd-l7-l8-supply: true
372        vdd-l10-l11-l13-supply: true
373      patternProperties:
374        "^vdd-l1[4-6]-supply$": true
375        "^vdd-s[1-7]-supply$": true
376
377  - if:
378      properties:
379        compatible:
380          enum:
381            - qcom,pmx65-rpmh-regulators
382    then:
383      properties:
384        vdd-l2-l18-supply: true
385        vdd-l5-l6-l16-supply: true
386        vdd-l8-l9-supply: true
387        vdd-l11-l13-supply: true
388      patternProperties:
389        "^vdd-l[1347]-supply$": true
390        "^vdd-l1[0245789]-supply$": true
391        "^vdd-l2[01]-supply$": true
392        "^vdd-s[1-8]-supply$": true
393
394unevaluatedProperties: false
395
396examples:
397  - |
398    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
399
400    pm8998-rpmh-regulators {
401        compatible = "qcom,pm8998-rpmh-regulators";
402        qcom,pmic-id = "a";
403
404        vdd-l7-l12-l14-l15-supply = <&pm8998_s5>;
405
406        smps2 {
407            regulator-min-microvolt = <1100000>;
408            regulator-max-microvolt = <1100000>;
409        };
410
411        ldo7 {
412            regulator-min-microvolt = <1800000>;
413            regulator-max-microvolt = <1800000>;
414            regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
415            regulator-allowed-modes =
416                <RPMH_REGULATOR_MODE_LPM
417                 RPMH_REGULATOR_MODE_HPM>;
418            regulator-allow-set-load;
419        };
420
421        lvs1 {
422            regulator-min-microvolt = <1800000>;
423            regulator-max-microvolt = <1800000>;
424        };
425    };
426
427    pmi8998-rpmh-regulators {
428        compatible = "qcom,pmi8998-rpmh-regulators";
429        qcom,pmic-id = "b";
430
431        bob {
432            regulator-min-microvolt = <3312000>;
433            regulator-max-microvolt = <3600000>;
434            regulator-allowed-modes =
435                <RPMH_REGULATOR_MODE_AUTO
436                 RPMH_REGULATOR_MODE_HPM>;
437            regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
438        };
439    };
440...
441