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