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