162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/x-powers,axp152.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: X-Powers AXP PMIC
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Chen-Yu Tsai <wens@csie.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - if:
1462306a36Sopenharmony_ci      properties:
1562306a36Sopenharmony_ci        compatible:
1662306a36Sopenharmony_ci          contains:
1762306a36Sopenharmony_ci            enum:
1862306a36Sopenharmony_ci              - x-powers,axp152
1962306a36Sopenharmony_ci              - x-powers,axp202
2062306a36Sopenharmony_ci              - x-powers,axp209
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci    then:
2362306a36Sopenharmony_ci      properties:
2462306a36Sopenharmony_ci        regulators:
2562306a36Sopenharmony_ci          properties:
2662306a36Sopenharmony_ci            x-powers,dcdc-freq:
2762306a36Sopenharmony_ci              minimum: 750
2862306a36Sopenharmony_ci              maximum: 1875
2962306a36Sopenharmony_ci              default: 1500
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci    else:
3262306a36Sopenharmony_ci      properties:
3362306a36Sopenharmony_ci        regulators:
3462306a36Sopenharmony_ci          properties:
3562306a36Sopenharmony_ci            x-powers,dcdc-freq:
3662306a36Sopenharmony_ci              minimum: 1800
3762306a36Sopenharmony_ci              maximum: 4050
3862306a36Sopenharmony_ci              default: 3000
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  - if:
4162306a36Sopenharmony_ci      properties:
4262306a36Sopenharmony_ci        compatible:
4362306a36Sopenharmony_ci          contains:
4462306a36Sopenharmony_ci            enum:
4562306a36Sopenharmony_ci              - x-powers,axp152
4662306a36Sopenharmony_ci              - x-powers,axp202
4762306a36Sopenharmony_ci              - x-powers,axp209
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci    then:
5062306a36Sopenharmony_ci      properties:
5162306a36Sopenharmony_ci        x-powers,drive-vbus-en: false
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  - if:
5462306a36Sopenharmony_ci      not:
5562306a36Sopenharmony_ci        properties:
5662306a36Sopenharmony_ci          compatible:
5762306a36Sopenharmony_ci            contains:
5862306a36Sopenharmony_ci              const: x-powers,axp806
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci    then:
6162306a36Sopenharmony_ci      properties:
6262306a36Sopenharmony_ci        x-powers,self-working-mode: false
6362306a36Sopenharmony_ci        x-powers,master-mode: false
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  - if:
6662306a36Sopenharmony_ci      not:
6762306a36Sopenharmony_ci        properties:
6862306a36Sopenharmony_ci          compatible:
6962306a36Sopenharmony_ci            contains:
7062306a36Sopenharmony_ci              const: x-powers,axp305
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci    then:
7362306a36Sopenharmony_ci      required:
7462306a36Sopenharmony_ci        - interrupts
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  - if:
7762306a36Sopenharmony_ci      properties:
7862306a36Sopenharmony_ci        compatible:
7962306a36Sopenharmony_ci          contains:
8062306a36Sopenharmony_ci            enum:
8162306a36Sopenharmony_ci              - x-powers,axp313a
8262306a36Sopenharmony_ci              - x-powers,axp15060
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci    then:
8562306a36Sopenharmony_ci      properties:
8662306a36Sopenharmony_ci        x-powers,dcdc-freq: false
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciproperties:
8962306a36Sopenharmony_ci  compatible:
9062306a36Sopenharmony_ci    oneOf:
9162306a36Sopenharmony_ci      - enum:
9262306a36Sopenharmony_ci          - x-powers,axp152
9362306a36Sopenharmony_ci          - x-powers,axp192
9462306a36Sopenharmony_ci          - x-powers,axp202
9562306a36Sopenharmony_ci          - x-powers,axp209
9662306a36Sopenharmony_ci          - x-powers,axp221
9762306a36Sopenharmony_ci          - x-powers,axp223
9862306a36Sopenharmony_ci          - x-powers,axp313a
9962306a36Sopenharmony_ci          - x-powers,axp803
10062306a36Sopenharmony_ci          - x-powers,axp806
10162306a36Sopenharmony_ci          - x-powers,axp809
10262306a36Sopenharmony_ci          - x-powers,axp813
10362306a36Sopenharmony_ci          - x-powers,axp15060
10462306a36Sopenharmony_ci      - items:
10562306a36Sopenharmony_ci          - const: x-powers,axp228
10662306a36Sopenharmony_ci          - const: x-powers,axp221
10762306a36Sopenharmony_ci      - items:
10862306a36Sopenharmony_ci          - const: x-powers,axp805
10962306a36Sopenharmony_ci          - const: x-powers,axp806
11062306a36Sopenharmony_ci      - items:
11162306a36Sopenharmony_ci          - const: x-powers,axp305
11262306a36Sopenharmony_ci          - const: x-powers,axp805
11362306a36Sopenharmony_ci          - const: x-powers,axp806
11462306a36Sopenharmony_ci      - items:
11562306a36Sopenharmony_ci          - const: x-powers,axp818
11662306a36Sopenharmony_ci          - const: x-powers,axp813
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  reg:
11962306a36Sopenharmony_ci    maxItems: 1
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  interrupts:
12262306a36Sopenharmony_ci    maxItems: 1
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci  interrupt-controller: true
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci  "#interrupt-cells":
12762306a36Sopenharmony_ci    const: 1
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  x-powers,drive-vbus-en:
13062306a36Sopenharmony_ci    type: boolean
13162306a36Sopenharmony_ci    description: >
13262306a36Sopenharmony_ci      Set this when the N_VBUSEN pin is used as an output pin to control an
13362306a36Sopenharmony_ci      external regulator to drive the OTG VBus, rather then as an input pin
13462306a36Sopenharmony_ci      which signals whether the board is driving OTG VBus or not.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci  x-powers,self-working-mode:
13762306a36Sopenharmony_ci    type: boolean
13862306a36Sopenharmony_ci    description: >
13962306a36Sopenharmony_ci      Set this when the PMIC is wired for self-working mode through the MODESET
14062306a36Sopenharmony_ci      pin.
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci  x-powers,master-mode:
14362306a36Sopenharmony_ci    type: boolean
14462306a36Sopenharmony_ci    description: >
14562306a36Sopenharmony_ci      Set this when the PMIC is wired for master mode through the MODESET pin.
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci  vin1-supply:
14862306a36Sopenharmony_ci    description: >
14962306a36Sopenharmony_ci      DCDC1 power supply node, if present.
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci  vin2-supply:
15262306a36Sopenharmony_ci    description: >
15362306a36Sopenharmony_ci      DCDC2 power supply node, if present.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  vin3-supply:
15662306a36Sopenharmony_ci    description: >
15762306a36Sopenharmony_ci      DCDC3 power supply node, if present.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci  vin4-supply:
16062306a36Sopenharmony_ci    description: >
16162306a36Sopenharmony_ci      DCDC4 power supply node, if present.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci  vin5-supply:
16462306a36Sopenharmony_ci    description: >
16562306a36Sopenharmony_ci      DCDC5 power supply node, if present.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci  vin6-supply:
16862306a36Sopenharmony_ci    description: >
16962306a36Sopenharmony_ci      DCDC6 power supply node, if present.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci  vin7-supply:
17262306a36Sopenharmony_ci    description: >
17362306a36Sopenharmony_ci      DCDC7 power supply node, if present.
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci  vina-supply:
17662306a36Sopenharmony_ci    description: >
17762306a36Sopenharmony_ci      DCDCA power supply node, if present.
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci  vinb-supply:
18062306a36Sopenharmony_ci    description: >
18162306a36Sopenharmony_ci      DCDCB power supply node, if present.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci  vinc-supply:
18462306a36Sopenharmony_ci    description: >
18562306a36Sopenharmony_ci      DCDCC power supply node, if present.
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci  vind-supply:
18862306a36Sopenharmony_ci    description: >
18962306a36Sopenharmony_ci      DCDCD power supply node, if present.
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci  vine-supply:
19262306a36Sopenharmony_ci    description: >
19362306a36Sopenharmony_ci      DCDCE power supply node, if present.
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci  acin-supply:
19662306a36Sopenharmony_ci    description: >
19762306a36Sopenharmony_ci      LDO1 power supply node, if present.
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci  ldo24in-supply:
20062306a36Sopenharmony_ci    description: >
20162306a36Sopenharmony_ci      LDO2 and LDO4 power supply node, if present.
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci  ldo3in-supply:
20462306a36Sopenharmony_ci    description: >
20562306a36Sopenharmony_ci      LDO3 power supply node, if present.
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci  ldo5in-supply:
20862306a36Sopenharmony_ci    description: >
20962306a36Sopenharmony_ci      LDO5 power supply node, if present.
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci  aldoin-supply:
21262306a36Sopenharmony_ci    description: >
21362306a36Sopenharmony_ci      ALDO* power supply node, if present.
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci  bldoin-supply:
21662306a36Sopenharmony_ci    description: >
21762306a36Sopenharmony_ci      BLDO* power supply node, if present.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci  cldoin-supply:
22062306a36Sopenharmony_ci    description: >
22162306a36Sopenharmony_ci      CLDO* power supply node, if present.
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci  dldoin-supply:
22462306a36Sopenharmony_ci    description: >
22562306a36Sopenharmony_ci      DLDO* power supply node, if present.
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci  eldoin-supply:
22862306a36Sopenharmony_ci    description: >
22962306a36Sopenharmony_ci      ELDO* power supply node, if present.
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci  fldoin-supply:
23262306a36Sopenharmony_ci    description: >
23362306a36Sopenharmony_ci      FLDO* power supply node, if present.
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci  ips-supply:
23662306a36Sopenharmony_ci    description: >
23762306a36Sopenharmony_ci      LDO_IO0, LDO_IO1 and RTC_LDO power supply node, if present.
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci  drivevbus-supply:
24062306a36Sopenharmony_ci    description: >
24162306a36Sopenharmony_ci      DRIVEVBUS power supply node, if present.
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci  swin-supply:
24462306a36Sopenharmony_ci    description: >
24562306a36Sopenharmony_ci      SW power supply node, if present.
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci  adc:
24862306a36Sopenharmony_ci    $ref: /schemas/iio/adc/x-powers,axp209-adc.yaml#
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci  gpio:
25162306a36Sopenharmony_ci    $ref: /schemas/gpio/x-powers,axp209-gpio.yaml#
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci  ac-power:
25462306a36Sopenharmony_ci    $ref: /schemas/power/supply/x-powers,axp20x-ac-power-supply.yaml#
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci  battery-power:
25762306a36Sopenharmony_ci    $ref: /schemas/power/supply/x-powers,axp20x-battery-power-supply.yaml#
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci  usb-power:
26062306a36Sopenharmony_ci    $ref: /schemas/power/supply/x-powers,axp20x-usb-power-supply.yaml#
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci  regulators:
26362306a36Sopenharmony_ci    type: object
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ci    properties:
26662306a36Sopenharmony_ci      x-powers,dcdc-freq:
26762306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
26862306a36Sopenharmony_ci        description: >
26962306a36Sopenharmony_ci          Defines the work frequency of DC-DC in kHz.
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci    patternProperties:
27262306a36Sopenharmony_ci      "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo)$":
27362306a36Sopenharmony_ci        $ref: /schemas/regulator/regulator.yaml#
27462306a36Sopenharmony_ci        type: object
27562306a36Sopenharmony_ci        unevaluatedProperties: false
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci        properties:
27862306a36Sopenharmony_ci          regulator-ramp-delay:
27962306a36Sopenharmony_ci            description: >
28062306a36Sopenharmony_ci              Only 800 and 1600 are valid for the DCDC2 and LDO3 regulators on
28162306a36Sopenharmony_ci              the AXP209.
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci          regulator-soft-start:
28462306a36Sopenharmony_ci            description: >
28562306a36Sopenharmony_ci              Only valid for the LDO3 regulator.
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci          x-powers,dcdc-workmode:
28862306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
28962306a36Sopenharmony_ci            enum: [0, 1]
29062306a36Sopenharmony_ci            description: >
29162306a36Sopenharmony_ci              Only valid for DCDC regulators. Setup 1 for PWM mode, 0
29262306a36Sopenharmony_ci              for AUTO (PWM/PFM) mode. The DCDC regulators work in a
29362306a36Sopenharmony_ci              mixed PWM/PFM mode, using PFM under light loads and
29462306a36Sopenharmony_ci              switching to PWM for heavier loads. Forcing PWM mode
29562306a36Sopenharmony_ci              trades efficiency under light loads for lower output
29662306a36Sopenharmony_ci              noise. This probably makes sense for HiFi audio related
29762306a36Sopenharmony_ci              applications that aren't battery constrained.
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci    additionalProperties: false
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_cirequired:
30262306a36Sopenharmony_ci  - compatible
30362306a36Sopenharmony_ci  - reg
30462306a36Sopenharmony_ci  - "#interrupt-cells"
30562306a36Sopenharmony_ci  - interrupt-controller
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciadditionalProperties: false
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ciexamples:
31062306a36Sopenharmony_ci  - |
31162306a36Sopenharmony_ci      i2c {
31262306a36Sopenharmony_ci          #address-cells = <1>;
31362306a36Sopenharmony_ci          #size-cells = <0>;
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ci          pmic@30 {
31662306a36Sopenharmony_ci              compatible = "x-powers,axp152";
31762306a36Sopenharmony_ci              reg = <0x30>;
31862306a36Sopenharmony_ci              interrupts = <0>;
31962306a36Sopenharmony_ci              interrupt-controller;
32062306a36Sopenharmony_ci              #interrupt-cells = <1>;
32162306a36Sopenharmony_ci          };
32262306a36Sopenharmony_ci      };
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci  - |
32562306a36Sopenharmony_ci      #include <dt-bindings/interrupt-controller/irq.h>
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci      i2c {
32862306a36Sopenharmony_ci          #address-cells = <1>;
32962306a36Sopenharmony_ci          #size-cells = <0>;
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci          pmic@34 {
33262306a36Sopenharmony_ci              compatible = "x-powers,axp209";
33362306a36Sopenharmony_ci              reg = <0x34>;
33462306a36Sopenharmony_ci              interrupt-parent = <&nmi_intc>;
33562306a36Sopenharmony_ci              interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
33662306a36Sopenharmony_ci              interrupt-controller;
33762306a36Sopenharmony_ci              #interrupt-cells = <1>;
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci              ac_power_supply: ac-power {
34062306a36Sopenharmony_ci                  compatible = "x-powers,axp202-ac-power-supply";
34162306a36Sopenharmony_ci              };
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_ci              axp_adc: adc {
34462306a36Sopenharmony_ci                  compatible = "x-powers,axp209-adc";
34562306a36Sopenharmony_ci                  #io-channel-cells = <1>;
34662306a36Sopenharmony_ci              };
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci              axp_gpio: gpio {
34962306a36Sopenharmony_ci                  compatible = "x-powers,axp209-gpio";
35062306a36Sopenharmony_ci                  gpio-controller;
35162306a36Sopenharmony_ci                  #gpio-cells = <2>;
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci                  gpio0-adc-pin {
35462306a36Sopenharmony_ci                      pins = "GPIO0";
35562306a36Sopenharmony_ci                      function = "adc";
35662306a36Sopenharmony_ci                  };
35762306a36Sopenharmony_ci              };
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ci              battery_power_supply: battery-power {
36062306a36Sopenharmony_ci                  compatible = "x-powers,axp209-battery-power-supply";
36162306a36Sopenharmony_ci              };
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci              regulators {
36462306a36Sopenharmony_ci                  /* Default work frequency for buck regulators */
36562306a36Sopenharmony_ci                  x-powers,dcdc-freq = <1500>;
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci                  reg_dcdc2: dcdc2 {
36862306a36Sopenharmony_ci                      regulator-always-on;
36962306a36Sopenharmony_ci                      regulator-min-microvolt = <1000000>;
37062306a36Sopenharmony_ci                      regulator-max-microvolt = <1450000>;
37162306a36Sopenharmony_ci                      regulator-name = "vdd-cpu";
37262306a36Sopenharmony_ci                  };
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ci                  reg_dcdc3: dcdc3 {
37562306a36Sopenharmony_ci                      regulator-always-on;
37662306a36Sopenharmony_ci                      regulator-min-microvolt = <1000000>;
37762306a36Sopenharmony_ci                      regulator-max-microvolt = <1400000>;
37862306a36Sopenharmony_ci                      regulator-name = "vdd-int-dll";
37962306a36Sopenharmony_ci                  };
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ci                  reg_ldo1: ldo1 {
38262306a36Sopenharmony_ci                      /* LDO1 is a fixed output regulator */
38362306a36Sopenharmony_ci                      regulator-always-on;
38462306a36Sopenharmony_ci                      regulator-min-microvolt = <1300000>;
38562306a36Sopenharmony_ci                      regulator-max-microvolt = <1300000>;
38662306a36Sopenharmony_ci                      regulator-name = "vdd-rtc";
38762306a36Sopenharmony_ci                  };
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci                  reg_ldo2: ldo2 {
39062306a36Sopenharmony_ci                      regulator-always-on;
39162306a36Sopenharmony_ci                      regulator-min-microvolt = <3000000>;
39262306a36Sopenharmony_ci                      regulator-max-microvolt = <3000000>;
39362306a36Sopenharmony_ci                      regulator-name = "avcc";
39462306a36Sopenharmony_ci                  };
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci                  reg_ldo3: ldo3 {
39762306a36Sopenharmony_ci                      regulator-name = "ldo3";
39862306a36Sopenharmony_ci                  };
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci                  reg_ldo4: ldo4 {
40162306a36Sopenharmony_ci                      regulator-name = "ldo4";
40262306a36Sopenharmony_ci                  };
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ci                  reg_ldo5: ldo5 {
40562306a36Sopenharmony_ci                      regulator-name = "ldo5";
40662306a36Sopenharmony_ci                  };
40762306a36Sopenharmony_ci              };
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ci              usb_power_supply: usb-power {
41062306a36Sopenharmony_ci                  compatible = "x-powers,axp202-usb-power-supply";
41162306a36Sopenharmony_ci              };
41262306a36Sopenharmony_ci          };
41362306a36Sopenharmony_ci      };
414