Merge 5.18-rc5 into tty-next
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / regulator / maxim,max8997.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/regulator/maxim,max8997.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Maxim MAX8997 Power Management IC
8
9 maintainers:
10   - Krzysztof Kozlowski <krzk@kernel.org>
11
12 description: |
13   The Maxim MAX8997 is a Power Management IC which includes voltage and current
14   regulators, charger controller with fuel gauge, RTC, clock outputs, haptic
15   motor driver, flash LED driver and Micro-USB Interface Controller.
16
17   The binding here is not complete and describes only regulator and charger
18   controller parts.
19
20 properties:
21   compatible:
22     const: maxim,max8997-pmic
23
24   charger-supply:
25     description: |
26       Regulator node for charging current.
27
28   interrupts:
29     items:
30       - description: irq1 interrupt
31       - description: alert interrupt
32
33   max8997,pmic-buck1-dvs-voltage:
34     $ref: /schemas/types.yaml#/definitions/uint32-array
35     minItems: 1
36     maxItems: 8
37     description: |
38       A set of 8 voltage values in micro-volt (uV) units for buck1 when
39       changing voltage using GPIO DVS.
40       If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
41       specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
42       specify at least one voltage level (which would be a safe operating
43       voltage).
44
45   max8997,pmic-buck2-dvs-voltage:
46     $ref: /schemas/types.yaml#/definitions/uint32-array
47     minItems: 1
48     maxItems: 8
49     description: |
50       A set of 8 voltage values in micro-volt (uV) units for buck2 when
51       changing voltage using GPIO DVS.
52       If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
53       specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
54       specify at least one voltage level (which would be a safe operating
55       voltage).
56
57   max8997,pmic-buck5-dvs-voltage:
58     $ref: /schemas/types.yaml#/definitions/uint32-array
59     minItems: 1
60     maxItems: 8
61     description: |
62       A set of 8 voltage values in micro-volt (uV) units for buck5 when
63       changing voltage using GPIO DVS.
64       If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
65       specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
66       specify at least one voltage level (which would be a safe operating
67       voltage).
68
69   max8997,pmic-buck1-uses-gpio-dvs:
70     type: boolean
71     description: |
72       buck1 can be controlled by GPIO DVS.
73
74   max8997,pmic-buck2-uses-gpio-dvs:
75     type: boolean
76     description: |
77       buck2 can be controlled by GPIO DVS.
78
79   max8997,pmic-buck5-uses-gpio-dvs:
80     type: boolean
81     description: |
82       buck5 can be controlled by GPIO DVS.
83
84   max8997,pmic-buck125-default-dvs-idx:
85     $ref: /schemas/types.yaml#/definitions/uint32
86     minimum: 0
87     maximum: 7
88     default: 0
89     description: |
90       Default voltage setting selected from the possible 8 options selectable
91       by the dvs gpios. The value of this property should be between 0 and 7.
92       If not specified or if out of range, the default value of this property
93       is set to 0.
94
95   max8997,pmic-buck125-dvs-gpios:
96     minItems: 3
97     maxItems: 3
98     description: |
99       GPIO specifiers for three host gpio's used for DVS.
100
101   max8997,pmic-ignore-gpiodvs-side-effect:
102     type: boolean
103     description: |
104       When GPIO-DVS mode is used for multiple bucks, changing the voltage value
105       of one of the bucks may affect that of another buck, which is the side
106       effect of the change (set_voltage).  Use this property to ignore such
107       side effects and change the voltage.
108
109   reg:
110     maxItems: 1
111
112   regulators:
113     type: object
114     description:
115       List of child nodes that specify the regulators.
116
117     patternProperties:
118       # 1-18 and 21 LDOs
119       "^LDO([1-9]|1[0-8]|21)$":
120         type: object
121         $ref: regulator.yaml#
122         description:
123           Properties for single LDO regulator.
124
125         properties:
126           regulator-name: true
127
128         required:
129           - regulator-name
130
131         unevaluatedProperties: false
132
133       # 7 bucks
134       "^BUCK[1-7]$":
135         type: object
136         $ref: regulator.yaml#
137         description:
138           Properties for single BUCK regulator.
139
140         properties:
141           regulator-name: true
142
143         required:
144           - regulator-name
145
146         unevaluatedProperties: false
147
148       "^EN32KHZ_[AC]P$":
149         type: object
150         $ref: regulator.yaml#
151         description:
152           32768 Hz clock output (modelled as regulator)
153
154         properties:
155           regulator-name: true
156           regulator-always-on: true
157           regulator-boot-on: true
158
159         required:
160           - regulator-name
161
162         additionalProperties: false
163
164     properties:
165       CHARGER:
166         type: object
167         $ref: regulator.yaml#
168         description: main battery charger current control
169
170         properties:
171           regulator-name: true
172
173         required:
174           - regulator-name
175
176         unevaluatedProperties: false
177
178       CHARGER_CV:
179         type: object
180         $ref: regulator.yaml#
181         description: main battery charger voltage control
182
183         properties:
184           regulator-name: true
185
186         required:
187           - regulator-name
188
189         unevaluatedProperties: false
190
191       CHARGER_TOPOFF:
192         type: object
193         $ref: regulator.yaml#
194         description: end of charge current threshold level
195
196         properties:
197           regulator-name: true
198
199         required:
200           - regulator-name
201
202         unevaluatedProperties: false
203
204       ENVICHG:
205         type: object
206         $ref: regulator.yaml#
207         description: |
208           Battery Charging Current Monitor Output. This is a fixed voltage type
209           regulator
210         properties:
211           regulator-name: true
212
213         required:
214           - regulator-name
215
216         unevaluatedProperties: false
217
218       ESAFEOUT1:
219         type: object
220         $ref: regulator.yaml#
221         description: LDO19
222
223         properties:
224           regulator-name: true
225
226         required:
227           - regulator-name
228
229         unevaluatedProperties: false
230
231       ESAFEOUT2:
232         type: object
233         $ref: regulator.yaml#
234         description: LDO20
235
236         properties:
237           regulator-name: true
238
239         required:
240           - regulator-name
241
242         unevaluatedProperties: false
243
244 required:
245   - compatible
246   - max8997,pmic-buck1-dvs-voltage
247   - max8997,pmic-buck2-dvs-voltage
248   - max8997,pmic-buck5-dvs-voltage
249   - reg
250   - regulators
251
252 dependencies:
253   max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
254   max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
255   max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
256
257 additionalProperties: false
258
259 if:
260   anyOf:
261     - required:
262         - max8997,pmic-buck1-uses-gpio-dvs
263     - required:
264         - max8997,pmic-buck2-uses-gpio-dvs
265     - required:
266         - max8997,pmic-buck5-uses-gpio-dvs
267 then:
268   properties:
269     max8997,pmic-buck1-dvs-voltage:
270       minItems: 8
271       maxItems: 8
272     max8997,pmic-buck2-dvs-voltage:
273       minItems: 8
274       maxItems: 8
275     max8997,pmic-buck5-dvs-voltage:
276       minItems: 8
277       maxItems: 8
278
279 examples:
280   - |
281     #include <dt-bindings/gpio/gpio.h>
282     #include <dt-bindings/interrupt-controller/irq.h>
283
284     i2c {
285         #address-cells = <1>;
286         #size-cells = <0>;
287
288         pmic@66 {
289             compatible = "maxim,max8997-pmic";
290             reg = <0x66>;
291
292             interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
293                                   <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;
294
295             max8997,pmic-buck1-uses-gpio-dvs;
296             max8997,pmic-buck2-uses-gpio-dvs;
297             max8997,pmic-buck5-uses-gpio-dvs;
298
299             max8997,pmic-ignore-gpiodvs-side-effect;
300             max8997,pmic-buck125-default-dvs-idx = <0>;
301
302             max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
303                                              <&gpx0 6 GPIO_ACTIVE_HIGH>,
304                                              <&gpl0 0 GPIO_ACTIVE_HIGH>;
305
306             max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
307                                              <1250000>, <1200000>,
308                                              <1150000>, <1100000>,
309                                              <1000000>, <950000>;
310
311             max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
312                                              <950000>,  <900000>,
313                                              <1100000>, <1000000>,
314                                              <950000>,  <900000>;
315
316             max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
317                                              <1200000>, <1200000>,
318                                              <1200000>, <1200000>,
319                                              <1200000>, <1200000>;
320
321             pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
322             pinctrl-names = "default";
323
324             charger-supply = <&charger_reg>;
325
326             regulators {
327                 LDO1 {
328                     regulator-name = "VADC_3.3V_C210";
329                     regulator-min-microvolt = <3300000>;
330                     regulator-max-microvolt = <3300000>;
331                     regulator-always-on;
332                 };
333
334                 LDO2 {
335                     regulator-name = "VALIVE_1.1V_C210";
336                     regulator-min-microvolt = <1100000>;
337                     regulator-max-microvolt = <1100000>;
338                     regulator-always-on;
339                 };
340
341                 BUCK1 {
342                     regulator-name = "VARM_1.2V_C210";
343                     regulator-min-microvolt = <65000>;
344                     regulator-max-microvolt = <2225000>;
345                     regulator-always-on;
346                 };
347
348                 // ...
349
350                 BUCK7 {
351                     regulator-name = "VCC_SUB_2.0V";
352                     regulator-min-microvolt = <2000000>;
353                     regulator-max-microvolt = <2000000>;
354                     regulator-always-on;
355                 };
356
357                 ESAFEOUT1 {
358                     regulator-name = "SAFEOUT1";
359                 };
360
361                 ESAFEOUT2 {
362                     regulator-name = "SAFEOUT2";
363                     regulator-boot-on;
364                 };
365
366                 EN32KHZ_AP {
367                     regulator-name = "EN32KHZ_AP";
368                     regulator-always-on;
369                 };
370
371                 EN32KHZ_CP {
372                     regulator-name = "EN32KHZ_CP";
373                     regulator-always-on;
374                 };
375
376                 CHARGER {
377                     regulator-name = "CHARGER";
378                     regulator-min-microamp = <200000>;
379                     regulator-max-microamp = <950000>;
380                 };
381
382                 CHARGER_CV {
383                     regulator-name = "CHARGER_CV";
384                     regulator-min-microvolt = <4200000>;
385                     regulator-max-microvolt = <4200000>;
386                     regulator-always-on;
387                 };
388
389                 CHARGER_TOPOFF {
390                     regulator-name = "CHARGER_TOPOFF";
391                     regulator-min-microamp = <200000>;
392                     regulator-max-microamp = <200000>;
393                     regulator-always-on;
394                 };
395             };
396         };
397     };
398
399   - |
400     #include <dt-bindings/interrupt-controller/irq.h>
401
402     i2c {
403         #address-cells = <1>;
404         #size-cells = <0>;
405
406         pmic@66 {
407             compatible = "maxim,max8997-pmic";
408             reg = <0x66>;
409
410             interrupt-parent = <&gpx0>;
411             interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
412                          <3 IRQ_TYPE_EDGE_FALLING>;
413             pinctrl-names = "default";
414             pinctrl-0 = <&max8997_irq>;
415
416             max8997,pmic-buck1-dvs-voltage = <1350000>;
417             max8997,pmic-buck2-dvs-voltage = <1100000>;
418             max8997,pmic-buck5-dvs-voltage = <1200000>;
419
420             regulators {
421                 LDO1 {
422                     regulator-name = "VDD_ABB_3.3V";
423                     regulator-min-microvolt = <3300000>;
424                     regulator-max-microvolt = <3300000>;
425                 };
426
427                 // ...
428
429                 BUCK1 {
430                     regulator-name = "VDD_ARM_1.2V";
431                     regulator-min-microvolt = <950000>;
432                     regulator-max-microvolt = <1350000>;
433                     regulator-always-on;
434                     regulator-boot-on;
435                 };
436
437                 // ...
438
439                 EN32KHZ_AP {
440                     regulator-name = "EN32KHZ_AP";
441                     regulator-always-on;
442                 };
443             };
444         };
445     };