Linux 6.9-rc1
[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     additionalProperties: false
115     description:
116       List of child nodes that specify the regulators.
117
118     patternProperties:
119       # 1-18 and 21 LDOs
120       "^LDO([1-9]|1[0-8]|21)$":
121         type: object
122         $ref: regulator.yaml#
123         description:
124           Properties for single LDO regulator.
125
126         properties:
127           regulator-name: true
128
129         required:
130           - regulator-name
131
132         unevaluatedProperties: false
133
134       # 7 bucks
135       "^BUCK[1-7]$":
136         type: object
137         $ref: regulator.yaml#
138         description:
139           Properties for single BUCK regulator.
140
141         properties:
142           regulator-name: true
143
144         required:
145           - regulator-name
146
147         unevaluatedProperties: false
148
149       "^EN32KHZ_[AC]P$":
150         type: object
151         $ref: regulator.yaml#
152         description:
153           32768 Hz clock output (modelled as regulator)
154
155         properties:
156           regulator-name: true
157           regulator-always-on: true
158           regulator-boot-on: true
159
160         required:
161           - regulator-name
162
163         additionalProperties: false
164
165     properties:
166       CHARGER:
167         type: object
168         $ref: regulator.yaml#
169         description: main battery charger current control
170
171         properties:
172           regulator-name: true
173
174         required:
175           - regulator-name
176
177         unevaluatedProperties: false
178
179       CHARGER_CV:
180         type: object
181         $ref: regulator.yaml#
182         description: main battery charger voltage control
183
184         properties:
185           regulator-name: true
186
187         required:
188           - regulator-name
189
190         unevaluatedProperties: false
191
192       CHARGER_TOPOFF:
193         type: object
194         $ref: regulator.yaml#
195         description: end of charge current threshold level
196
197         properties:
198           regulator-name: true
199
200         required:
201           - regulator-name
202
203         unevaluatedProperties: false
204
205       ENVICHG:
206         type: object
207         $ref: regulator.yaml#
208         description: |
209           Battery Charging Current Monitor Output. This is a fixed voltage type
210           regulator
211         properties:
212           regulator-name: true
213
214         required:
215           - regulator-name
216
217         unevaluatedProperties: false
218
219       ESAFEOUT1:
220         type: object
221         $ref: regulator.yaml#
222         description: LDO19
223
224         properties:
225           regulator-name: true
226
227         required:
228           - regulator-name
229
230         unevaluatedProperties: false
231
232       ESAFEOUT2:
233         type: object
234         $ref: regulator.yaml#
235         description: LDO20
236
237         properties:
238           regulator-name: true
239
240         required:
241           - regulator-name
242
243         unevaluatedProperties: false
244
245 required:
246   - compatible
247   - max8997,pmic-buck1-dvs-voltage
248   - max8997,pmic-buck2-dvs-voltage
249   - max8997,pmic-buck5-dvs-voltage
250   - reg
251   - regulators
252
253 dependencies:
254   max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
255   max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
256   max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
257
258 additionalProperties: false
259
260 if:
261   anyOf:
262     - required:
263         - max8997,pmic-buck1-uses-gpio-dvs
264     - required:
265         - max8997,pmic-buck2-uses-gpio-dvs
266     - required:
267         - max8997,pmic-buck5-uses-gpio-dvs
268 then:
269   properties:
270     max8997,pmic-buck1-dvs-voltage:
271       minItems: 8
272       maxItems: 8
273     max8997,pmic-buck2-dvs-voltage:
274       minItems: 8
275       maxItems: 8
276     max8997,pmic-buck5-dvs-voltage:
277       minItems: 8
278       maxItems: 8
279
280 examples:
281   - |
282     #include <dt-bindings/gpio/gpio.h>
283     #include <dt-bindings/interrupt-controller/irq.h>
284
285     i2c {
286         #address-cells = <1>;
287         #size-cells = <0>;
288
289         pmic@66 {
290             compatible = "maxim,max8997-pmic";
291             reg = <0x66>;
292
293             interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
294                                   <&gpx2 3 IRQ_TYPE_EDGE_FALLING>;
295
296             max8997,pmic-buck1-uses-gpio-dvs;
297             max8997,pmic-buck2-uses-gpio-dvs;
298             max8997,pmic-buck5-uses-gpio-dvs;
299
300             max8997,pmic-ignore-gpiodvs-side-effect;
301             max8997,pmic-buck125-default-dvs-idx = <0>;
302
303             max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
304                                              <&gpx0 6 GPIO_ACTIVE_HIGH>,
305                                              <&gpl0 0 GPIO_ACTIVE_HIGH>;
306
307             max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
308                                              <1250000>, <1200000>,
309                                              <1150000>, <1100000>,
310                                              <1000000>, <950000>;
311
312             max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
313                                              <950000>,  <900000>,
314                                              <1100000>, <1000000>,
315                                              <950000>,  <900000>;
316
317             max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
318                                              <1200000>, <1200000>,
319                                              <1200000>, <1200000>,
320                                              <1200000>, <1200000>;
321
322             pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
323             pinctrl-names = "default";
324
325             charger-supply = <&charger_reg>;
326
327             regulators {
328                 LDO1 {
329                     regulator-name = "VADC_3.3V_C210";
330                     regulator-min-microvolt = <3300000>;
331                     regulator-max-microvolt = <3300000>;
332                     regulator-always-on;
333                 };
334
335                 LDO2 {
336                     regulator-name = "VALIVE_1.1V_C210";
337                     regulator-min-microvolt = <1100000>;
338                     regulator-max-microvolt = <1100000>;
339                     regulator-always-on;
340                 };
341
342                 BUCK1 {
343                     regulator-name = "VARM_1.2V_C210";
344                     regulator-min-microvolt = <65000>;
345                     regulator-max-microvolt = <2225000>;
346                     regulator-always-on;
347                 };
348
349                 // ...
350
351                 BUCK7 {
352                     regulator-name = "VCC_SUB_2.0V";
353                     regulator-min-microvolt = <2000000>;
354                     regulator-max-microvolt = <2000000>;
355                     regulator-always-on;
356                 };
357
358                 ESAFEOUT1 {
359                     regulator-name = "SAFEOUT1";
360                 };
361
362                 ESAFEOUT2 {
363                     regulator-name = "SAFEOUT2";
364                     regulator-boot-on;
365                 };
366
367                 EN32KHZ_AP {
368                     regulator-name = "EN32KHZ_AP";
369                     regulator-always-on;
370                 };
371
372                 EN32KHZ_CP {
373                     regulator-name = "EN32KHZ_CP";
374                     regulator-always-on;
375                 };
376
377                 CHARGER {
378                     regulator-name = "CHARGER";
379                     regulator-min-microamp = <200000>;
380                     regulator-max-microamp = <950000>;
381                 };
382
383                 CHARGER_CV {
384                     regulator-name = "CHARGER_CV";
385                     regulator-min-microvolt = <4200000>;
386                     regulator-max-microvolt = <4200000>;
387                     regulator-always-on;
388                 };
389
390                 CHARGER_TOPOFF {
391                     regulator-name = "CHARGER_TOPOFF";
392                     regulator-min-microamp = <200000>;
393                     regulator-max-microamp = <200000>;
394                     regulator-always-on;
395                 };
396             };
397         };
398     };
399
400   - |
401     #include <dt-bindings/interrupt-controller/irq.h>
402
403     i2c {
404         #address-cells = <1>;
405         #size-cells = <0>;
406
407         pmic@66 {
408             compatible = "maxim,max8997-pmic";
409             reg = <0x66>;
410
411             interrupt-parent = <&gpx0>;
412             interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
413                          <3 IRQ_TYPE_EDGE_FALLING>;
414             pinctrl-names = "default";
415             pinctrl-0 = <&max8997_irq>;
416
417             max8997,pmic-buck1-dvs-voltage = <1350000>;
418             max8997,pmic-buck2-dvs-voltage = <1100000>;
419             max8997,pmic-buck5-dvs-voltage = <1200000>;
420
421             regulators {
422                 LDO1 {
423                     regulator-name = "VDD_ABB_3.3V";
424                     regulator-min-microvolt = <3300000>;
425                     regulator-max-microvolt = <3300000>;
426                 };
427
428                 // ...
429
430                 BUCK1 {
431                     regulator-name = "VDD_ARM_1.2V";
432                     regulator-min-microvolt = <950000>;
433                     regulator-max-microvolt = <1350000>;
434                     regulator-always-on;
435                     regulator-boot-on;
436                 };
437
438                 // ...
439
440                 EN32KHZ_AP {
441                     regulator-name = "EN32KHZ_AP";
442                     regulator-always-on;
443                 };
444             };
445         };
446     };