GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / regulator / qcom,rpmh-regulator.yaml
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
7 title: Qualcomm Technologies, Inc. RPMh Regulators
8
9 maintainers:
10   - Bjorn Andersson <bjorn.andersson@linaro.org>
11   - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
12
13 description: |
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
54 properties:
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
103 patternProperties:
104   "^(smps|ldo|lvs)[0-9]+$":
105     type: object
106     $ref: "regulator.yaml#"
107     description: smps/ldo regulator nodes(s).
108
109 required:
110   - compatible
111   - qcom,pmic-id
112
113 allOf:
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
354 unevaluatedProperties: false
355
356 examples:
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 ...