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