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 PM7325, smps1 - smps8, ldo1 - ldo19
41      For PM8005, smps1 - smps4
42      For PM8009, smps1 - smps2, ldo1 - ldo7
43      For PM8150, smps1 - smps10, ldo1 - ldo18
44      For PM8150L, smps1 - smps8, ldo1 - ldo11, bob, flash, rgb
45      For PM8350, smps1 - smps12, ldo1 - ldo10
46      For PM8350C, smps1 - smps10, ldo1 - ldo13, bob
47      For PM8450, smps1 - smps6, ldo1 - ldo4
48      For PM8998, smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
49      For PMI8998, bob
50      For PMR735A, smps1 - smps3, ldo1 - ldo7
51      For PMX55, smps1 - smps7, ldo1 - ldo16
52      For PMX65, smps1 - smps8, ldo1 - ldo21
53
54properties:
55  compatible:
56    enum:
57      - qcom,pm6150-rpmh-regulators
58      - qcom,pm6150l-rpmh-regulators
59      - qcom,pm6350-rpmh-regulators
60      - qcom,pm7325-rpmh-regulators
61      - qcom,pm8005-rpmh-regulators
62      - qcom,pm8009-rpmh-regulators
63      - qcom,pm8009-1-rpmh-regulators
64      - qcom,pm8150-rpmh-regulators
65      - qcom,pm8150l-rpmh-regulators
66      - qcom,pm8350-rpmh-regulators
67      - qcom,pm8350c-rpmh-regulators
68      - qcom,pm8450-rpmh-regulators
69      - qcom,pm8998-rpmh-regulators
70      - qcom,pmg1110-rpmh-regulators
71      - qcom,pmi8998-rpmh-regulators
72      - qcom,pmm8155au-rpmh-regulators
73      - qcom,pmr735a-rpmh-regulators
74      - qcom,pmx55-rpmh-regulators
75      - qcom,pmx65-rpmh-regulators
76
77  qcom,pmic-id:
78    description: |
79        RPMh resource name suffix used for the regulators found
80        on this PMIC.
81    $ref: /schemas/types.yaml#/definitions/string
82    enum: [a, b, c, d, e, f, h, k]
83
84  qcom,always-wait-for-ack:
85    description: |
86        Boolean flag which indicates that the application processor
87        must wait for an ACK or a NACK from RPMh for every request
88        sent for this regulator including those which are for a
89        strictly lower power state.
90    $ref: /schemas/types.yaml#/definitions/flag
91
92  vdd-flash-supply:
93    description: Input supply phandle of flash.
94
95  vdd-rgb-supply:
96    description: Input supply phandle of rgb.
97
98  bob:
99    type: object
100    $ref: "regulator.yaml#"
101    description: BOB regulator node.
102
103patternProperties:
104  "^(smps|ldo|lvs)[0-9]+$":
105    type: object
106    $ref: "regulator.yaml#"
107    description: smps/ldo regulator nodes(s).
108
109required:
110  - compatible
111  - qcom,pmic-id
112
113allOf:
114  - if:
115      properties:
116        compatible:
117          enum:
118            - qcom,pm6150-rpmh-regulators
119    then:
120      properties:
121        vdd-l2-l3-supply: true
122        vdd-l4-l7-l8-supply: true
123        vdd-l5-l16-l17-l18-l19-supply: true
124        vdd-l10-l14-l15-supply: true
125        vdd-l11-l12-l13-supply: true
126      patternProperties:
127        "^vdd-l[169]-supply$": true
128        "^vdd-s[1-5]-supply$": true
129
130  - if:
131      properties:
132        compatible:
133          enum:
134            - qcom,pm6150l-rpmh-regulators
135    then:
136      properties:
137        vdd-bob-supply:
138          description: BOB regulator parent supply phandle.
139        vdd-l1-l8-supply: true
140        vdd-l2-l3-supply: true
141        vdd-l4-l5-l6-supply: true
142        vdd-l7-l11-supply: true
143        vdd-l9-l10-supply: true
144      patternProperties:
145        "^vdd-s[1-8]-supply$": true
146
147  - if:
148      properties:
149        compatible:
150          enum:
151            - qcom,pm7325-rpmh-regulators
152    then:
153      properties:
154        vdd-l1-l4-l12-l15-supply: true
155        vdd-l2-l7-supply: true
156        vdd-l6-l9-l10-supply: true
157        vdd-l11-l17-l18-l19-supply: true
158        vdd-l13-supply: true
159        vdd-l14-l16-supply: true
160      patternProperties:
161        "^vdd-l[358]-supply$": true
162        "^vdd-s[1-8]-supply$": true
163
164  - if:
165      properties:
166        compatible:
167          enum:
168            - qcom,pm8005-rpmh-regulators
169    then:
170      patternProperties:
171        "^vdd-s[1-4]-supply$": true
172
173  - if:
174      properties:
175        compatible:
176          enum:
177            - qcom,pm8009-rpmh-regulators
178            - qcom,pm8009-1-rpmh-regulators
179    then:
180      properties:
181        vdd-l5-l6-supply: true
182      patternProperties:
183        "^vdd-l[1-47]-supply$": true
184        "^vdd-s[1-2]-supply$": true
185
186  - if:
187      properties:
188        compatible:
189          enum:
190            - qcom,pm8150-rpmh-regulators
191            - qcom,pmm8155au-rpmh-regulators
192    then:
193      properties:
194        vdd-l1-l8-l11-supply: true
195        vdd-l2-l10-supply: true
196        vdd-l3-l4-l5-l18-supply: true
197        vdd-l6-l9-supply: true
198        vdd-l7-l12-l14-l15-supply: true
199        vdd-l13-l16-l17-supply: true
200      patternProperties:
201        "^vdd-s([1-9]|10)-supply$": true
202
203  - if:
204      properties:
205        compatible:
206          enum:
207            - qcom,pm8150l-rpmh-regulators
208    then:
209      properties:
210        vdd-bob-supply:
211          description: BOB regulator parent supply phandle.
212        vdd-l1-l8-supply: true
213        vdd-l2-l3-supply: true
214        vdd-l4-l5-l6-supply: true
215        vdd-l7-l11-supply: true
216        vdd-l9-l10-supply: true
217      patternProperties:
218        "^vdd-s[1-8]-supply$": true
219
220  - if:
221      properties:
222        compatible:
223          enum:
224            - qcom,pm8350-rpmh-regulators
225    then:
226      properties:
227        vdd-l1-l4-supply: true
228        vdd-l2-l7-supply: true
229        vdd-l3-l5-supply: true
230        vdd-l6-l9-l10-supply: true
231        vdd-l8-supply: true
232      patternProperties:
233        "^vdd-s([1-9]|1[0-2])-supply$": true
234
235  - if:
236      properties:
237        compatible:
238          enum:
239            - qcom,pm8350c-rpmh-regulators
240    then:
241      properties:
242        vdd-bob-supply:
243          description: BOB regulator parent supply phandle.
244        vdd-l1-l12-supply: true
245        vdd-l2-l8-supply: true
246        vdd-l3-l4-l5-l7-l13-supply: true
247        vdd-l6-l9-l11-supply: true
248        vdd-l10-supply: true
249      patternProperties:
250        "^vdd-s([1-9]|10)-supply$": true
251
252  - if:
253      properties:
254        compatible:
255          enum:
256            - qcom,pm8450-rpmh-regulators
257    then:
258      patternProperties:
259        "^vdd-l[1-4]-supply$": true
260        "^vdd-s[1-6]-supply$": true
261
262  - if:
263      properties:
264        compatible:
265          enum:
266            - qcom,pm8998-rpmh-regulators
267    then:
268      properties:
269        vdd-l1-l27-supply: true
270        vdd-l2-l8-l17-supply: true
271        vdd-l3-l11-supply: true
272        vdd-l4-l5-supply: true
273        vdd-l6-supply: true
274        vdd-l7-l12-l14-l15-supply: true
275        vdd-l9-supply: true
276        vdd-l10-l23-l25-supply: true
277        vdd-l13-l19-l21-supply: true
278        vdd-l16-l28-supply: true
279        vdd-l18-l22-supply: true
280        vdd-l20-l24-supply: true
281        vdd-l26-supply: true
282        vin-lvs-1-2-supply: true
283      patternProperties:
284        "^vdd-s([1-9]|1[0-3])-supply$": true
285
286  - if:
287      properties:
288        compatible:
289          enum:
290            - qcom,pmg1110-rpmh-regulators
291    then:
292      properties:
293        vdd-s1-supply: true
294
295  - if:
296      properties:
297        compatible:
298          enum:
299            - qcom,pmi8998-rpmh-regulators
300    then:
301      properties:
302        vdd-bob-supply:
303          description: BOB regulator parent supply phandle.
304
305  - if:
306      properties:
307        compatible:
308          enum:
309            - qcom,pmr735a-rpmh-regulators
310    then:
311      properties:
312        vdd-l1-l2-supply: true
313        vdd-l3-supply: true
314        vdd-l4-supply: true
315        vdd-l5-l6-supply: true
316        vdd-l7-bob-supply: true
317      patternProperties:
318        "^vdd-s[1-3]-supply$": true
319
320  - if:
321      properties:
322        compatible:
323          enum:
324            - qcom,pmx55-rpmh-regulators
325    then:
326      properties:
327        vdd-l1-l2-supply: true
328        vdd-l3-l9-supply: true
329        vdd-l4-l12-supply: true
330        vdd-l5-l6-supply: true
331        vdd-l7-l8-supply: true
332        vdd-l10-l11-l13-supply: true
333      patternProperties:
334        "^vdd-l1[4-6]-supply$": true
335        "^vdd-s[1-7]-supply$": true
336
337  - if:
338      properties:
339        compatible:
340          enum:
341            - qcom,pmx65-rpmh-regulators
342    then:
343      properties:
344        vdd-l2-l18-supply: true
345        vdd-l5-l6-l16-supply: true
346        vdd-l8-l9-supply: true
347        vdd-l11-l13-supply: true
348      patternProperties:
349        "^vdd-l[1347]-supply$": true
350        "^vdd-l1[0245789]-supply$": true
351        "^vdd-l2[01]-supply$": true
352        "^vdd-s[1-8]-supply$": true
353
354unevaluatedProperties: false
355
356examples:
357  - |
358    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
359
360    pm8998-rpmh-regulators {
361        compatible = "qcom,pm8998-rpmh-regulators";
362        qcom,pmic-id = "a";
363
364        vdd-l7-l12-l14-l15-supply = <&pm8998_s5>;
365
366        smps2 {
367            regulator-min-microvolt = <1100000>;
368            regulator-max-microvolt = <1100000>;
369        };
370
371        ldo7 {
372            regulator-min-microvolt = <1800000>;
373            regulator-max-microvolt = <1800000>;
374            regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
375            regulator-allowed-modes =
376                <RPMH_REGULATOR_MODE_LPM
377                 RPMH_REGULATOR_MODE_HPM>;
378            regulator-allow-set-load;
379        };
380
381        lvs1 {
382            regulator-min-microvolt = <1800000>;
383            regulator-max-microvolt = <1800000>;
384        };
385    };
386
387    pmi8998-rpmh-regulators {
388        compatible = "qcom,pmi8998-rpmh-regulators";
389        qcom,pmic-id = "b";
390
391        bob {
392            regulator-min-microvolt = <3312000>;
393            regulator-max-microvolt = <3600000>;
394            regulator-allowed-modes =
395                <RPMH_REGULATOR_MODE_AUTO
396                 RPMH_REGULATOR_MODE_HPM>;
397            regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
398        };
399    };
400...
401