1239f2bb1SMaxime Ripard# SPDX-License-Identifier: GPL-2.0
2239f2bb1SMaxime Ripard%YAML 1.2
3239f2bb1SMaxime Ripard---
4239f2bb1SMaxime Ripard$id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
5239f2bb1SMaxime Ripard$schema: http://devicetree.org/meta-schemas/core.yaml#
6239f2bb1SMaxime Ripard
7*dd3cb467SAndrew Lunntitle: X-Powers AXP PMIC
8239f2bb1SMaxime Ripard
9239f2bb1SMaxime Ripardmaintainers:
10239f2bb1SMaxime Ripard  - Chen-Yu Tsai <wens@csie.org>
11239f2bb1SMaxime Ripard
12239f2bb1SMaxime RipardallOf:
13239f2bb1SMaxime Ripard  - if:
14239f2bb1SMaxime Ripard      properties:
15239f2bb1SMaxime Ripard        compatible:
16239f2bb1SMaxime Ripard          contains:
17239f2bb1SMaxime Ripard            enum:
18239f2bb1SMaxime Ripard              - x-powers,axp152
19239f2bb1SMaxime Ripard              - x-powers,axp202
20239f2bb1SMaxime Ripard              - x-powers,axp209
21239f2bb1SMaxime Ripard
22239f2bb1SMaxime Ripard    then:
23239f2bb1SMaxime Ripard      properties:
24239f2bb1SMaxime Ripard        regulators:
25239f2bb1SMaxime Ripard          properties:
26239f2bb1SMaxime Ripard            x-powers,dcdc-freq:
27239f2bb1SMaxime Ripard              minimum: 750
28239f2bb1SMaxime Ripard              maximum: 1875
29239f2bb1SMaxime Ripard              default: 1500
30239f2bb1SMaxime Ripard
31239f2bb1SMaxime Ripard    else:
32239f2bb1SMaxime Ripard      properties:
33239f2bb1SMaxime Ripard        regulators:
34239f2bb1SMaxime Ripard          properties:
35239f2bb1SMaxime Ripard            x-powers,dcdc-freq:
36239f2bb1SMaxime Ripard              minimum: 1800
37239f2bb1SMaxime Ripard              maximum: 4050
38239f2bb1SMaxime Ripard              default: 3000
39239f2bb1SMaxime Ripard
40239f2bb1SMaxime Ripard  - if:
41239f2bb1SMaxime Ripard      properties:
42239f2bb1SMaxime Ripard        compatible:
43239f2bb1SMaxime Ripard          contains:
44239f2bb1SMaxime Ripard            enum:
45239f2bb1SMaxime Ripard              - x-powers,axp152
46239f2bb1SMaxime Ripard              - x-powers,axp202
47239f2bb1SMaxime Ripard              - x-powers,axp209
48239f2bb1SMaxime Ripard
49239f2bb1SMaxime Ripard    then:
50239f2bb1SMaxime Ripard      not:
51239f2bb1SMaxime Ripard        required:
52239f2bb1SMaxime Ripard          - x-powers,drive-vbus-en
53239f2bb1SMaxime Ripard
54239f2bb1SMaxime Ripard  - if:
55239f2bb1SMaxime Ripard      not:
56239f2bb1SMaxime Ripard        properties:
57239f2bb1SMaxime Ripard          compatible:
58239f2bb1SMaxime Ripard            contains:
59239f2bb1SMaxime Ripard              const: x-powers,axp806
60239f2bb1SMaxime Ripard
61239f2bb1SMaxime Ripard    then:
62239f2bb1SMaxime Ripard      allOf:
63239f2bb1SMaxime Ripard        - not:
64239f2bb1SMaxime Ripard            required:
65239f2bb1SMaxime Ripard              - x-powers,self-working-mode
66239f2bb1SMaxime Ripard
67239f2bb1SMaxime Ripard        - not:
68239f2bb1SMaxime Ripard            required:
69239f2bb1SMaxime Ripard              - x-powers,master-mode
70239f2bb1SMaxime Ripard
71239f2bb1SMaxime Ripard  - if:
72239f2bb1SMaxime Ripard      not:
73239f2bb1SMaxime Ripard        properties:
74239f2bb1SMaxime Ripard          compatible:
75239f2bb1SMaxime Ripard            contains:
76239f2bb1SMaxime Ripard              const: x-powers,axp305
77239f2bb1SMaxime Ripard
78239f2bb1SMaxime Ripard    then:
79239f2bb1SMaxime Ripard      required:
80239f2bb1SMaxime Ripard        - interrupts
81239f2bb1SMaxime Ripard
82239f2bb1SMaxime Ripardproperties:
83239f2bb1SMaxime Ripard  compatible:
84239f2bb1SMaxime Ripard    oneOf:
85239f2bb1SMaxime Ripard      - enum:
86239f2bb1SMaxime Ripard          - x-powers,axp152
87239f2bb1SMaxime Ripard          - x-powers,axp202
88239f2bb1SMaxime Ripard          - x-powers,axp209
89239f2bb1SMaxime Ripard          - x-powers,axp221
90239f2bb1SMaxime Ripard          - x-powers,axp223
91239f2bb1SMaxime Ripard          - x-powers,axp803
92239f2bb1SMaxime Ripard          - x-powers,axp806
93239f2bb1SMaxime Ripard          - x-powers,axp809
94239f2bb1SMaxime Ripard          - x-powers,axp813
95239f2bb1SMaxime Ripard      - items:
96239f2bb1SMaxime Ripard          - const: x-powers,axp805
97239f2bb1SMaxime Ripard          - const: x-powers,axp806
98239f2bb1SMaxime Ripard      - items:
99239f2bb1SMaxime Ripard          - const: x-powers,axp305
100239f2bb1SMaxime Ripard          - const: x-powers,axp805
101239f2bb1SMaxime Ripard          - const: x-powers,axp806
102239f2bb1SMaxime Ripard      - items:
103239f2bb1SMaxime Ripard          - const: x-powers,axp818
104239f2bb1SMaxime Ripard          - const: x-powers,axp813
105239f2bb1SMaxime Ripard
106239f2bb1SMaxime Ripard  reg:
107239f2bb1SMaxime Ripard    maxItems: 1
108239f2bb1SMaxime Ripard
109239f2bb1SMaxime Ripard  interrupts:
110239f2bb1SMaxime Ripard    maxItems: 1
111239f2bb1SMaxime Ripard
112239f2bb1SMaxime Ripard  interrupt-controller: true
113239f2bb1SMaxime Ripard
114239f2bb1SMaxime Ripard  "#interrupt-cells":
115239f2bb1SMaxime Ripard    const: 1
116239f2bb1SMaxime Ripard
117239f2bb1SMaxime Ripard  x-powers,drive-vbus-en:
118239f2bb1SMaxime Ripard    type: boolean
119239f2bb1SMaxime Ripard    description: >
120239f2bb1SMaxime Ripard      Set this when the N_VBUSEN pin is used as an output pin to control an
121239f2bb1SMaxime Ripard      external regulator to drive the OTG VBus, rather then as an input pin
122239f2bb1SMaxime Ripard      which signals whether the board is driving OTG VBus or not.
123239f2bb1SMaxime Ripard
124239f2bb1SMaxime Ripard  x-powers,self-working-mode:
125239f2bb1SMaxime Ripard    type: boolean
126239f2bb1SMaxime Ripard    description: >
127239f2bb1SMaxime Ripard      Set this when the PMIC is wired for self-working mode through the MODESET
128239f2bb1SMaxime Ripard      pin.
129239f2bb1SMaxime Ripard
130239f2bb1SMaxime Ripard  x-powers,master-mode:
131239f2bb1SMaxime Ripard    type: boolean
132239f2bb1SMaxime Ripard    description: >
133239f2bb1SMaxime Ripard      Set this when the PMIC is wired for master mode through the MODESET pin.
134239f2bb1SMaxime Ripard
135239f2bb1SMaxime Ripard  vin1-supply:
136239f2bb1SMaxime Ripard    description: >
137239f2bb1SMaxime Ripard      DCDC1 power supply node, if present.
138239f2bb1SMaxime Ripard
139239f2bb1SMaxime Ripard  vin2-supply:
140239f2bb1SMaxime Ripard    description: >
141239f2bb1SMaxime Ripard      DCDC2 power supply node, if present.
142239f2bb1SMaxime Ripard
143239f2bb1SMaxime Ripard  vin3-supply:
144239f2bb1SMaxime Ripard    description: >
145239f2bb1SMaxime Ripard      DCDC3 power supply node, if present.
146239f2bb1SMaxime Ripard
147239f2bb1SMaxime Ripard  vin4-supply:
148239f2bb1SMaxime Ripard    description: >
149239f2bb1SMaxime Ripard      DCDC4 power supply node, if present.
150239f2bb1SMaxime Ripard
151239f2bb1SMaxime Ripard  vin5-supply:
152239f2bb1SMaxime Ripard    description: >
153239f2bb1SMaxime Ripard      DCDC5 power supply node, if present.
154239f2bb1SMaxime Ripard
155239f2bb1SMaxime Ripard  vin6-supply:
156239f2bb1SMaxime Ripard    description: >
157239f2bb1SMaxime Ripard      DCDC6 power supply node, if present.
158239f2bb1SMaxime Ripard
159239f2bb1SMaxime Ripard  vin7-supply:
160239f2bb1SMaxime Ripard    description: >
161239f2bb1SMaxime Ripard      DCDC7 power supply node, if present.
162239f2bb1SMaxime Ripard
163239f2bb1SMaxime Ripard  vina-supply:
164239f2bb1SMaxime Ripard    description: >
165239f2bb1SMaxime Ripard      DCDCA power supply node, if present.
166239f2bb1SMaxime Ripard
167239f2bb1SMaxime Ripard  vinb-supply:
168239f2bb1SMaxime Ripard    description: >
169239f2bb1SMaxime Ripard      DCDCB power supply node, if present.
170239f2bb1SMaxime Ripard
171239f2bb1SMaxime Ripard  vinc-supply:
172239f2bb1SMaxime Ripard    description: >
173239f2bb1SMaxime Ripard      DCDCC power supply node, if present.
174239f2bb1SMaxime Ripard
175239f2bb1SMaxime Ripard  vind-supply:
176239f2bb1SMaxime Ripard    description: >
177239f2bb1SMaxime Ripard      DCDCD power supply node, if present.
178239f2bb1SMaxime Ripard
179239f2bb1SMaxime Ripard  vine-supply:
180239f2bb1SMaxime Ripard    description: >
181239f2bb1SMaxime Ripard      DCDCE power supply node, if present.
182239f2bb1SMaxime Ripard
183239f2bb1SMaxime Ripard  acin-supply:
184239f2bb1SMaxime Ripard    description: >
185239f2bb1SMaxime Ripard      LDO1 power supply node, if present.
186239f2bb1SMaxime Ripard
187239f2bb1SMaxime Ripard  ldo24in-supply:
188239f2bb1SMaxime Ripard    description: >
189239f2bb1SMaxime Ripard      LDO2 and LDO4 power supply node, if present.
190239f2bb1SMaxime Ripard
191239f2bb1SMaxime Ripard  ldo3in-supply:
192239f2bb1SMaxime Ripard    description: >
193239f2bb1SMaxime Ripard      LDO3 power supply node, if present.
194239f2bb1SMaxime Ripard
195239f2bb1SMaxime Ripard  ldo5in-supply:
196239f2bb1SMaxime Ripard    description: >
197239f2bb1SMaxime Ripard      LDO5 power supply node, if present.
198239f2bb1SMaxime Ripard
199239f2bb1SMaxime Ripard  aldoin-supply:
200239f2bb1SMaxime Ripard    description: >
201239f2bb1SMaxime Ripard      ALDO* power supply node, if present.
202239f2bb1SMaxime Ripard
203239f2bb1SMaxime Ripard  bldoin-supply:
204239f2bb1SMaxime Ripard    description: >
205239f2bb1SMaxime Ripard      BLDO* power supply node, if present.
206239f2bb1SMaxime Ripard
207239f2bb1SMaxime Ripard  cldoin-supply:
208239f2bb1SMaxime Ripard    description: >
209239f2bb1SMaxime Ripard      CLDO* power supply node, if present.
210239f2bb1SMaxime Ripard
211239f2bb1SMaxime Ripard  dldoin-supply:
212239f2bb1SMaxime Ripard    description: >
213239f2bb1SMaxime Ripard      DLDO* power supply node, if present.
214239f2bb1SMaxime Ripard
215239f2bb1SMaxime Ripard  eldoin-supply:
216239f2bb1SMaxime Ripard    description: >
217239f2bb1SMaxime Ripard      ELDO* power supply node, if present.
218239f2bb1SMaxime Ripard
219239f2bb1SMaxime Ripard  fldoin-supply:
220239f2bb1SMaxime Ripard    description: >
221239f2bb1SMaxime Ripard      FLDO* power supply node, if present.
222239f2bb1SMaxime Ripard
223239f2bb1SMaxime Ripard  ips-supply:
224239f2bb1SMaxime Ripard    description: >
225239f2bb1SMaxime Ripard      LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.
226239f2bb1SMaxime Ripard
227239f2bb1SMaxime Ripard  drivevbus-supply:
228239f2bb1SMaxime Ripard    description: >
229239f2bb1SMaxime Ripard      DRIVEVBUS power supply node, if present.
230239f2bb1SMaxime Ripard
231239f2bb1SMaxime Ripard  swin-supply:
232239f2bb1SMaxime Ripard    description: >
233239f2bb1SMaxime Ripard      SW power supply node, if present.
234239f2bb1SMaxime Ripard
235239f2bb1SMaxime Ripard  adc:
236239f2bb1SMaxime Ripard    $ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#
237239f2bb1SMaxime Ripard
238239f2bb1SMaxime Ripard  gpio:
239239f2bb1SMaxime Ripard    $ref: /schemas/gpio/x-powers,axp209-gpio.yaml#
240239f2bb1SMaxime Ripard
241239f2bb1SMaxime Ripard  ac-power:
242239f2bb1SMaxime Ripard    $ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#
243239f2bb1SMaxime Ripard
244239f2bb1SMaxime Ripard  battery-power:
245239f2bb1SMaxime Ripard    $ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#
246239f2bb1SMaxime Ripard
247239f2bb1SMaxime Ripard  usb-power:
248239f2bb1SMaxime Ripard    $ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#
249239f2bb1SMaxime Ripard
250239f2bb1SMaxime Ripard  regulators:
251239f2bb1SMaxime Ripard    type: object
252239f2bb1SMaxime Ripard
253239f2bb1SMaxime Ripard    properties:
254239f2bb1SMaxime Ripard      x-powers,dcdc-freq:
255239f2bb1SMaxime Ripard        $ref: /schemas/types.yaml#/definitions/uint32
256239f2bb1SMaxime Ripard        description: >
257239f2bb1SMaxime Ripard          Defines the work frequency of DC-DC in kHz.
258239f2bb1SMaxime Ripard
259239f2bb1SMaxime Ripard    patternProperties:
260239f2bb1SMaxime Ripard      "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|drivevbus|dc5ldo)$":
261239f2bb1SMaxime Ripard        $ref: /schemas/regulator/regulator.yaml#
262239f2bb1SMaxime Ripard        type: object
263239f2bb1SMaxime Ripard
264239f2bb1SMaxime Ripard        properties:
265239f2bb1SMaxime Ripard          regulator-ramp-delay:
266239f2bb1SMaxime Ripard            description: >
267239f2bb1SMaxime Ripard              Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
268239f2bb1SMaxime Ripard              the AXP209.
269239f2bb1SMaxime Ripard
270239f2bb1SMaxime Ripard          regulator-soft-start:
271239f2bb1SMaxime Ripard            description: >
272239f2bb1SMaxime Ripard              Only valid for the LDO3 regulator.
273239f2bb1SMaxime Ripard
274239f2bb1SMaxime Ripard          x-powers,dcdc-workmode:
275239f2bb1SMaxime Ripard            $ref: /schemas/types.yaml#/definitions/uint32
276239f2bb1SMaxime Ripard            enum: [0, 1]
277239f2bb1SMaxime Ripard            description: >
278239f2bb1SMaxime Ripard              Only valid for DCDC regulators. Setup 1 for PWM mode, 0
279239f2bb1SMaxime Ripard              for AUTO (PWM/PFM) mode. The DCDC regulators work in a
280239f2bb1SMaxime Ripard              mixed PWM/PFM mode, using PFM under light loads and
281239f2bb1SMaxime Ripard              switching to PWM for heavier loads. Forcing PWM mode
282239f2bb1SMaxime Ripard              trades efficiency under light loads for lower output
283239f2bb1SMaxime Ripard              noise. This probably makes sense for HiFi audio related
284239f2bb1SMaxime Ripard              applications that aren't battery constrained.
285239f2bb1SMaxime Ripard
286239f2bb1SMaxime Ripard    additionalProperties: false
287239f2bb1SMaxime Ripard
288239f2bb1SMaxime Ripardrequired:
289239f2bb1SMaxime Ripard  - compatible
290239f2bb1SMaxime Ripard  - reg
291239f2bb1SMaxime Ripard  - "#interrupt-cells"
292239f2bb1SMaxime Ripard  - interrupt-controller
293239f2bb1SMaxime Ripard
294239f2bb1SMaxime RipardadditionalProperties: false
295239f2bb1SMaxime Ripard
296239f2bb1SMaxime Ripardexamples:
297239f2bb1SMaxime Ripard  - |
298239f2bb1SMaxime Ripard      i2c0 {
299239f2bb1SMaxime Ripard          #address-cells = <1>;
300239f2bb1SMaxime Ripard          #size-cells = <0>;
301239f2bb1SMaxime Ripard
302239f2bb1SMaxime Ripard          pmic@30 {
303239f2bb1SMaxime Ripard              compatible = "x-powers,axp152";
304239f2bb1SMaxime Ripard              reg = <0x30>;
305239f2bb1SMaxime Ripard              interrupts = <0>;
306239f2bb1SMaxime Ripard              interrupt-controller;
307239f2bb1SMaxime Ripard              #interrupt-cells = <1>;
308239f2bb1SMaxime Ripard          };
309239f2bb1SMaxime Ripard      };
310239f2bb1SMaxime Ripard
311239f2bb1SMaxime Ripard  - |
312239f2bb1SMaxime Ripard      #include <dt-bindings/interrupt-controller/irq.h>
313239f2bb1SMaxime Ripard
314239f2bb1SMaxime Ripard      i2c0 {
315239f2bb1SMaxime Ripard          #address-cells = <1>;
316239f2bb1SMaxime Ripard          #size-cells = <0>;
317239f2bb1SMaxime Ripard
318239f2bb1SMaxime Ripard          pmic@34 {
319239f2bb1SMaxime Ripard              compatible = "x-powers,axp209";
320239f2bb1SMaxime Ripard              reg = <0x34>;
321239f2bb1SMaxime Ripard              interrupt-parent = <&nmi_intc>;
322239f2bb1SMaxime Ripard              interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
323239f2bb1SMaxime Ripard              interrupt-controller;
324239f2bb1SMaxime Ripard              #interrupt-cells = <1>;
325239f2bb1SMaxime Ripard
326239f2bb1SMaxime Ripard              ac_power_supply: ac-power {
327239f2bb1SMaxime Ripard                  compatible = "x-powers,axp202-ac-power-supply";
328239f2bb1SMaxime Ripard              };
329239f2bb1SMaxime Ripard
330239f2bb1SMaxime Ripard              axp_adc: adc {
331239f2bb1SMaxime Ripard                  compatible = "x-powers,axp209-adc";
332239f2bb1SMaxime Ripard                  #io-channel-cells = <1>;
333239f2bb1SMaxime Ripard              };
334239f2bb1SMaxime Ripard
335239f2bb1SMaxime Ripard              axp_gpio: gpio {
336239f2bb1SMaxime Ripard                  compatible = "x-powers,axp209-gpio";
337239f2bb1SMaxime Ripard                  gpio-controller;
338239f2bb1SMaxime Ripard                  #gpio-cells = <2>;
339239f2bb1SMaxime Ripard
340239f2bb1SMaxime Ripard                  gpio0-adc-pin {
341239f2bb1SMaxime Ripard                      pins = "GPIO0";
342239f2bb1SMaxime Ripard                      function = "adc";
343239f2bb1SMaxime Ripard                  };
344239f2bb1SMaxime Ripard              };
345239f2bb1SMaxime Ripard
346239f2bb1SMaxime Ripard              battery_power_supply: battery-power {
347239f2bb1SMaxime Ripard                  compatible = "x-powers,axp209-battery-power-supply";
348239f2bb1SMaxime Ripard              };
349239f2bb1SMaxime Ripard
350239f2bb1SMaxime Ripard              regulators {
351239f2bb1SMaxime Ripard                  /* Default work frequency for buck regulators */
352239f2bb1SMaxime Ripard                  x-powers,dcdc-freq = <1500>;
353239f2bb1SMaxime Ripard
354239f2bb1SMaxime Ripard                  reg_dcdc2: dcdc2 {
355239f2bb1SMaxime Ripard                      regulator-always-on;
356239f2bb1SMaxime Ripard                      regulator-min-microvolt = <1000000>;
357239f2bb1SMaxime Ripard                      regulator-max-microvolt = <1450000>;
358239f2bb1SMaxime Ripard                      regulator-name = "vdd-cpu";
359239f2bb1SMaxime Ripard                  };
360239f2bb1SMaxime Ripard
361239f2bb1SMaxime Ripard                  reg_dcdc3: dcdc3 {
362239f2bb1SMaxime Ripard                      regulator-always-on;
363239f2bb1SMaxime Ripard                      regulator-min-microvolt = <1000000>;
364239f2bb1SMaxime Ripard                      regulator-max-microvolt = <1400000>;
365239f2bb1SMaxime Ripard                      regulator-name = "vdd-int-dll";
366239f2bb1SMaxime Ripard                  };
367239f2bb1SMaxime Ripard
368239f2bb1SMaxime Ripard                  reg_ldo1: ldo1 {
369239f2bb1SMaxime Ripard                      /* LDO1 is a fixed output regulator */
370239f2bb1SMaxime Ripard                      regulator-always-on;
371239f2bb1SMaxime Ripard                      regulator-min-microvolt = <1300000>;
372239f2bb1SMaxime Ripard                      regulator-max-microvolt = <1300000>;
373239f2bb1SMaxime Ripard                      regulator-name = "vdd-rtc";
374239f2bb1SMaxime Ripard                  };
375239f2bb1SMaxime Ripard
376239f2bb1SMaxime Ripard                  reg_ldo2: ldo2 {
377239f2bb1SMaxime Ripard                      regulator-always-on;
378239f2bb1SMaxime Ripard                      regulator-min-microvolt = <3000000>;
379239f2bb1SMaxime Ripard                      regulator-max-microvolt = <3000000>;
380239f2bb1SMaxime Ripard                      regulator-name = "avcc";
381239f2bb1SMaxime Ripard                  };
382239f2bb1SMaxime Ripard
383239f2bb1SMaxime Ripard                  reg_ldo3: ldo3 {
384239f2bb1SMaxime Ripard                      regulator-name = "ldo3";
385239f2bb1SMaxime Ripard                  };
386239f2bb1SMaxime Ripard
387239f2bb1SMaxime Ripard                  reg_ldo4: ldo4 {
388239f2bb1SMaxime Ripard                      regulator-name = "ldo4";
389239f2bb1SMaxime Ripard                  };
390239f2bb1SMaxime Ripard
391239f2bb1SMaxime Ripard                  reg_ldo5: ldo5 {
392239f2bb1SMaxime Ripard                      regulator-name = "ldo5";
393239f2bb1SMaxime Ripard                  };
394239f2bb1SMaxime Ripard              };
395239f2bb1SMaxime Ripard
396239f2bb1SMaxime Ripard              usb_power_supply: usb-power {
397239f2bb1SMaxime Ripard                  compatible = "x-powers,axp202-usb-power-supply";
398239f2bb1SMaxime Ripard              };
399239f2bb1SMaxime Ripard          };
400239f2bb1SMaxime Ripard      };
401