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