GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / mfd / x-powers,axp152.yaml
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: X-Powers AXP PMIC
8
9 maintainers:
10   - Chen-Yu Tsai <wens@csie.org>
11
12 allOf:
13   - if:
14       properties:
15         compatible:
16           contains:
17             enum:
18               - x-powers,axp152
19               - x-powers,axp202
20               - x-powers,axp209
21
22     then:
23       properties:
24         regulators:
25           properties:
26             x-powers,dcdc-freq:
27               minimum: 750
28               maximum: 1875
29               default: 1500
30
31     else:
32       properties:
33         regulators:
34           properties:
35             x-powers,dcdc-freq:
36               minimum: 1800
37               maximum: 4050
38               default: 3000
39
40   - if:
41       properties:
42         compatible:
43           contains:
44             enum:
45               - x-powers,axp152
46               - x-powers,axp202
47               - x-powers,axp209
48
49     then:
50       not:
51         required:
52           - x-powers,drive-vbus-en
53
54   - if:
55       not:
56         properties:
57           compatible:
58             contains:
59               const: x-powers,axp806
60
61     then:
62       allOf:
63         - not:
64             required:
65               - x-powers,self-working-mode
66
67         - not:
68             required:
69               - x-powers,master-mode
70
71   - if:
72       not:
73         properties:
74           compatible:
75             contains:
76               const: x-powers,axp305
77
78     then:
79       required:
80         - interrupts
81
82 properties:
83   compatible:
84     oneOf:
85       - enum:
86           - x-powers,axp152
87           - x-powers,axp202
88           - x-powers,axp209
89           - x-powers,axp221
90           - x-powers,axp223
91           - x-powers,axp803
92           - x-powers,axp806
93           - x-powers,axp809
94           - x-powers,axp813
95       - items:
96           - const: x-powers,axp228
97           - const: x-powers,axp221
98       - items:
99           - const: x-powers,axp805
100           - const: x-powers,axp806
101       - items:
102           - const: x-powers,axp305
103           - const: x-powers,axp805
104           - const: x-powers,axp806
105       - items:
106           - const: x-powers,axp818
107           - const: x-powers,axp813
108
109   reg:
110     maxItems: 1
111
112   interrupts:
113     maxItems: 1
114
115   interrupt-controller: true
116
117   "#interrupt-cells":
118     const: 1
119
120   x-powers,drive-vbus-en:
121     type: boolean
122     description: >
123       Set this when the N_VBUSEN pin is used as an output pin to control an
124       external regulator to drive the OTG VBus, rather then as an input pin
125       which signals whether the board is driving OTG VBus or not.
126
127   x-powers,self-working-mode:
128     type: boolean
129     description: >
130       Set this when the PMIC is wired for self-working mode through the MODESET
131       pin.
132
133   x-powers,master-mode:
134     type: boolean
135     description: >
136       Set this when the PMIC is wired for master mode through the MODESET pin.
137
138   vin1-supply:
139     description: >
140       DCDC1 power supply node, if present.
141
142   vin2-supply:
143     description: >
144       DCDC2 power supply node, if present.
145
146   vin3-supply:
147     description: >
148       DCDC3 power supply node, if present.
149
150   vin4-supply:
151     description: >
152       DCDC4 power supply node, if present.
153
154   vin5-supply:
155     description: >
156       DCDC5 power supply node, if present.
157
158   vin6-supply:
159     description: >
160       DCDC6 power supply node, if present.
161
162   vin7-supply:
163     description: >
164       DCDC7 power supply node, if present.
165
166   vina-supply:
167     description: >
168       DCDCA power supply node, if present.
169
170   vinb-supply:
171     description: >
172       DCDCB power supply node, if present.
173
174   vinc-supply:
175     description: >
176       DCDCC power supply node, if present.
177
178   vind-supply:
179     description: >
180       DCDCD power supply node, if present.
181
182   vine-supply:
183     description: >
184       DCDCE power supply node, if present.
185
186   acin-supply:
187     description: >
188       LDO1 power supply node, if present.
189
190   ldo24in-supply:
191     description: >
192       LDO2 and LDO4 power supply node, if present.
193
194   ldo3in-supply:
195     description: >
196       LDO3 power supply node, if present.
197
198   ldo5in-supply:
199     description: >
200       LDO5 power supply node, if present.
201
202   aldoin-supply:
203     description: >
204       ALDO* power supply node, if present.
205
206   bldoin-supply:
207     description: >
208       BLDO* power supply node, if present.
209
210   cldoin-supply:
211     description: >
212       CLDO* power supply node, if present.
213
214   dldoin-supply:
215     description: >
216       DLDO* power supply node, if present.
217
218   eldoin-supply:
219     description: >
220       ELDO* power supply node, if present.
221
222   fldoin-supply:
223     description: >
224       FLDO* power supply node, if present.
225
226   ips-supply:
227     description: >
228       LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.
229
230   drivevbus-supply:
231     description: >
232       DRIVEVBUS power supply node, if present.
233
234   swin-supply:
235     description: >
236       SW power supply node, if present.
237
238   adc:
239     $ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#
240
241   gpio:
242     $ref: /schemas/gpio/x-powers,axp209-gpio.yaml#
243
244   ac-power:
245     $ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#
246
247   battery-power:
248     $ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#
249
250   usb-power:
251     $ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#
252
253   regulators:
254     type: object
255
256     properties:
257       x-powers,dcdc-freq:
258         $ref: /schemas/types.yaml#/definitions/uint32
259         description: >
260           Defines the work frequency of DC-DC in kHz.
261
262     patternProperties:
263       "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|drivevbus|dc5ldo)$":
264         $ref: /schemas/regulator/regulator.yaml#
265         type: object
266         unevaluatedProperties: false
267
268         properties:
269           regulator-ramp-delay:
270             description: >
271               Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
272               the AXP209.
273
274           regulator-soft-start:
275             description: >
276               Only valid for the LDO3 regulator.
277
278           x-powers,dcdc-workmode:
279             $ref: /schemas/types.yaml#/definitions/uint32
280             enum: [0, 1]
281             description: >
282               Only valid for DCDC regulators. Setup 1 for PWM mode, 0
283               for AUTO (PWM/PFM) mode. The DCDC regulators work in a
284               mixed PWM/PFM mode, using PFM under light loads and
285               switching to PWM for heavier loads. Forcing PWM mode
286               trades efficiency under light loads for lower output
287               noise. This probably makes sense for HiFi audio related
288               applications that aren't battery constrained.
289
290     additionalProperties: false
291
292 required:
293   - compatible
294   - reg
295   - "#interrupt-cells"
296   - interrupt-controller
297
298 additionalProperties: false
299
300 examples:
301   - |
302       i2c0 {
303           #address-cells = <1>;
304           #size-cells = <0>;
305
306           pmic@30 {
307               compatible = "x-powers,axp152";
308               reg = <0x30>;
309               interrupts = <0>;
310               interrupt-controller;
311               #interrupt-cells = <1>;
312           };
313       };
314
315   - |
316       #include <dt-bindings/interrupt-controller/irq.h>
317
318       i2c0 {
319           #address-cells = <1>;
320           #size-cells = <0>;
321
322           pmic@34 {
323               compatible = "x-powers,axp209";
324               reg = <0x34>;
325               interrupt-parent = <&nmi_intc>;
326               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
327               interrupt-controller;
328               #interrupt-cells = <1>;
329
330               ac_power_supply: ac-power {
331                   compatible = "x-powers,axp202-ac-power-supply";
332               };
333
334               axp_adc: adc {
335                   compatible = "x-powers,axp209-adc";
336                   #io-channel-cells = <1>;
337               };
338
339               axp_gpio: gpio {
340                   compatible = "x-powers,axp209-gpio";
341                   gpio-controller;
342                   #gpio-cells = <2>;
343
344                   gpio0-adc-pin {
345                       pins = "GPIO0";
346                       function = "adc";
347                   };
348               };
349
350               battery_power_supply: battery-power {
351                   compatible = "x-powers,axp209-battery-power-supply";
352               };
353
354               regulators {
355                   /* Default work frequency for buck regulators */
356                   x-powers,dcdc-freq = <1500>;
357
358                   reg_dcdc2: dcdc2 {
359                       regulator-always-on;
360                       regulator-min-microvolt = <1000000>;
361                       regulator-max-microvolt = <1450000>;
362                       regulator-name = "vdd-cpu";
363                   };
364
365                   reg_dcdc3: dcdc3 {
366                       regulator-always-on;
367                       regulator-min-microvolt = <1000000>;
368                       regulator-max-microvolt = <1400000>;
369                       regulator-name = "vdd-int-dll";
370                   };
371
372                   reg_ldo1: ldo1 {
373                       /* LDO1 is a fixed output regulator */
374                       regulator-always-on;
375                       regulator-min-microvolt = <1300000>;
376                       regulator-max-microvolt = <1300000>;
377                       regulator-name = "vdd-rtc";
378                   };
379
380                   reg_ldo2: ldo2 {
381                       regulator-always-on;
382                       regulator-min-microvolt = <3000000>;
383                       regulator-max-microvolt = <3000000>;
384                       regulator-name = "avcc";
385                   };
386
387                   reg_ldo3: ldo3 {
388                       regulator-name = "ldo3";
389                   };
390
391                   reg_ldo4: ldo4 {
392                       regulator-name = "ldo4";
393                   };
394
395                   reg_ldo5: ldo5 {
396                       regulator-name = "ldo5";
397                   };
398               };
399
400               usb_power_supply: usb-power {
401                   compatible = "x-powers,axp202-usb-power-supply";
402               };
403           };
404       };