162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/regulator/dlg,da9121.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Dialog Semiconductor DA9121 voltage regulator
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Adam Ward <Adam.Ward.opensource@diasemi.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  Dialog Semiconductor DA9121 Single-channel 10A double-phase buck converter
1462306a36Sopenharmony_ci  Dialog Semiconductor DA9122 Double-channel  5A single-phase buck converter
1562306a36Sopenharmony_ci  Dialog Semiconductor DA9220 Double-channel  3A single-phase buck converter
1662306a36Sopenharmony_ci  Dialog Semiconductor DA9217 Single-channel  6A double-phase buck converter
1762306a36Sopenharmony_ci  Dialog Semiconductor DA9130 Single-channel 10A double-phase buck converter
1862306a36Sopenharmony_ci  Dialog Semiconductor DA9131 Double-channel  5A single-phase buck converter
1962306a36Sopenharmony_ci  Dialog Semiconductor DA9132 Double-channel  3A single-phase buck converter
2062306a36Sopenharmony_ci  Dialog Semiconductor DA9141 Single-channel 40A   quad-phase buck converter
2162306a36Sopenharmony_ci  Dialog Semiconductor DA9142 Single-channel 20A double-phase buck converter
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  Device parameter ranges
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  The current limits can be set to at/near double the rated current per channel
2662306a36Sopenharmony_ci  to allow for transient peaks.
2762306a36Sopenharmony_ci  Current limit changes when the output is enabled are not supported, as a
2862306a36Sopenharmony_ci  precaution against undefined behaviour.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  |----------------------------------------------|
3162306a36Sopenharmony_ci  |               | range & reset default value  |
3262306a36Sopenharmony_ci  | Device        |------------------------------|
3362306a36Sopenharmony_ci  |               | microvolt    | microamp      |
3462306a36Sopenharmony_ci  |----------------------------------------------|
3562306a36Sopenharmony_ci  | DA9121/DA9130 | Min:  300000 | Min:  7000000 |
3662306a36Sopenharmony_ci  |               | Max: 1900000 | Max: 20000000 |
3762306a36Sopenharmony_ci  |----------------------------------------------|
3862306a36Sopenharmony_ci  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
3962306a36Sopenharmony_ci  |               | Max: 1900000 | Max: 10000000 |
4062306a36Sopenharmony_ci  |----------------------------------------------|
4162306a36Sopenharmony_ci  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
4262306a36Sopenharmony_ci  |               | Max: 1900000 | Max:  6000000 |
4362306a36Sopenharmony_ci  |----------------------------------------------|
4462306a36Sopenharmony_ci  | DA9217        | Min:  300000 | Min:  7000000 |
4562306a36Sopenharmony_ci  |               | Max: 1900000 | Max: 12000000 |
4662306a36Sopenharmony_ci  |----------------------------------------------|
4762306a36Sopenharmony_ci  | DA9141        | Min:  300000 | Min: 26000000 |
4862306a36Sopenharmony_ci  |               | Max: 1300000 | Max: 78000000 |
4962306a36Sopenharmony_ci  |----------------------------------------------|
5062306a36Sopenharmony_ci  | DA9142        | Min:  300000 | Min: 13000000 |
5162306a36Sopenharmony_ci  |               | Max: 1300000 | Max: 39000000 |
5262306a36Sopenharmony_ci  |----------------------------------------------|
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciproperties:
5562306a36Sopenharmony_ci  $nodename:
5662306a36Sopenharmony_ci    pattern: "pmic@[0-9a-f]{1,2}"
5762306a36Sopenharmony_ci  compatible:
5862306a36Sopenharmony_ci    enum:
5962306a36Sopenharmony_ci      - dlg,da9121
6062306a36Sopenharmony_ci      - dlg,da9122
6162306a36Sopenharmony_ci      - dlg,da9220
6262306a36Sopenharmony_ci      - dlg,da9217
6362306a36Sopenharmony_ci      - dlg,da9130
6462306a36Sopenharmony_ci      - dlg,da9131
6562306a36Sopenharmony_ci      - dlg,da9132
6662306a36Sopenharmony_ci      - dlg,da9141
6762306a36Sopenharmony_ci      - dlg,da9142
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  reg:
7062306a36Sopenharmony_ci    maxItems: 1
7162306a36Sopenharmony_ci    description: Specifies the I2C slave address.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  interrupts:
7462306a36Sopenharmony_ci    maxItems: 1
7562306a36Sopenharmony_ci    description: IRQ line information.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  dlg,irq-polling-delay-passive-ms:
7862306a36Sopenharmony_ci    minimum: 1000
7962306a36Sopenharmony_ci    maximum: 10000
8062306a36Sopenharmony_ci    description: |
8162306a36Sopenharmony_ci      Specify the polling period, measured in milliseconds, between interrupt status
8262306a36Sopenharmony_ci      update checks. Range 1000-10000 ms.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci  regulators:
8562306a36Sopenharmony_ci    type: object
8662306a36Sopenharmony_ci    additionalProperties: false
8762306a36Sopenharmony_ci    description: |
8862306a36Sopenharmony_ci      List of regulators provided by the device
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci    patternProperties:
9162306a36Sopenharmony_ci      "^buck([1-2])$":
9262306a36Sopenharmony_ci        type: object
9362306a36Sopenharmony_ci        $ref: regulator.yaml#
9462306a36Sopenharmony_ci        description: |
9562306a36Sopenharmony_ci          Properties for a single BUCK regulator
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci        properties:
9862306a36Sopenharmony_ci          regulator-initial-mode:
9962306a36Sopenharmony_ci            enum: [ 0, 1, 2, 3 ]
10062306a36Sopenharmony_ci            description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci          enable-gpios:
10362306a36Sopenharmony_ci            maxItems: 1
10462306a36Sopenharmony_ci            description: Specify a valid GPIO for platform control of the regulator
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci          dlg,ripple-cancel:
10762306a36Sopenharmony_ci            $ref: /schemas/types.yaml#/definitions/uint32
10862306a36Sopenharmony_ci            enum: [ 0, 1, 2, 3 ]
10962306a36Sopenharmony_ci            description: |
11062306a36Sopenharmony_ci              Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
11162306a36Sopenharmony_ci              Only present on multi-channel devices (DA9122, DA9220, DA9131, DA9132)
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci        unevaluatedProperties: false
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_cirequired:
11662306a36Sopenharmony_ci  - compatible
11762306a36Sopenharmony_ci  - reg
11862306a36Sopenharmony_ci  - regulators
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciallOf:
12162306a36Sopenharmony_ci  - if:
12262306a36Sopenharmony_ci      properties:
12362306a36Sopenharmony_ci        compatible:
12462306a36Sopenharmony_ci          not:
12562306a36Sopenharmony_ci            contains:
12662306a36Sopenharmony_ci              enum:
12762306a36Sopenharmony_ci                - dlg,da9122
12862306a36Sopenharmony_ci                - dlg,da9131
12962306a36Sopenharmony_ci                - dlg,da9132
13062306a36Sopenharmony_ci                - dlg,da9220
13162306a36Sopenharmony_ci    then:
13262306a36Sopenharmony_ci      properties:
13362306a36Sopenharmony_ci        regulators:
13462306a36Sopenharmony_ci          properties:
13562306a36Sopenharmony_ci            buck2: false
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciadditionalProperties: false
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ciexamples:
14062306a36Sopenharmony_ci  - |
14162306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
14262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
14362306a36Sopenharmony_ci    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
14462306a36Sopenharmony_ci    i2c {
14562306a36Sopenharmony_ci      #address-cells = <1>;
14662306a36Sopenharmony_ci      #size-cells = <0>;
14762306a36Sopenharmony_ci      pmic@68 {
14862306a36Sopenharmony_ci        compatible = "dlg,da9121";
14962306a36Sopenharmony_ci        reg = <0x68>;
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci        interrupt-parent = <&gpio6>;
15262306a36Sopenharmony_ci        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci        dlg,irq-polling-delay-passive-ms = <2000>;
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci        regulators {
15762306a36Sopenharmony_ci          DA9121_BUCK1: buck1 {
15862306a36Sopenharmony_ci            regulator-name = "BUCK1";
15962306a36Sopenharmony_ci            regulator-min-microvolt = <300000>;
16062306a36Sopenharmony_ci            regulator-max-microvolt = <1900000>;
16162306a36Sopenharmony_ci            regulator-min-microamp = <7000000>;
16262306a36Sopenharmony_ci            regulator-max-microamp = <20000000>;
16362306a36Sopenharmony_ci            regulator-boot-on;
16462306a36Sopenharmony_ci            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
16562306a36Sopenharmony_ci            enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
16662306a36Sopenharmony_ci          };
16762306a36Sopenharmony_ci        };
16862306a36Sopenharmony_ci      };
16962306a36Sopenharmony_ci    };
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci  - |
17262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
17362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
17462306a36Sopenharmony_ci    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
17562306a36Sopenharmony_ci    i2c {
17662306a36Sopenharmony_ci      #address-cells = <1>;
17762306a36Sopenharmony_ci      #size-cells = <0>;
17862306a36Sopenharmony_ci      pmic@68 {
17962306a36Sopenharmony_ci        compatible = "dlg,da9122";
18062306a36Sopenharmony_ci        reg = <0x68>;
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci        interrupt-parent = <&gpio6>;
18362306a36Sopenharmony_ci        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci        dlg,irq-polling-delay-passive-ms = <2000>;
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci        regulators {
18862306a36Sopenharmony_ci          DA9122_BUCK1: buck1 {
18962306a36Sopenharmony_ci            regulator-name = "BUCK1";
19062306a36Sopenharmony_ci            regulator-min-microvolt = <300000>;
19162306a36Sopenharmony_ci            regulator-max-microvolt = <1900000>;
19262306a36Sopenharmony_ci            regulator-min-microamp = <3500000>;
19362306a36Sopenharmony_ci            regulator-max-microamp = <10000000>;
19462306a36Sopenharmony_ci            regulator-boot-on;
19562306a36Sopenharmony_ci            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
19662306a36Sopenharmony_ci            enable-gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
19762306a36Sopenharmony_ci            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
19862306a36Sopenharmony_ci          };
19962306a36Sopenharmony_ci          DA9122_BUCK2: buck2 {
20062306a36Sopenharmony_ci            regulator-name = "BUCK2";
20162306a36Sopenharmony_ci            regulator-min-microvolt = <300000>;
20262306a36Sopenharmony_ci            regulator-max-microvolt = <1900000>;
20362306a36Sopenharmony_ci            regulator-min-microamp = <3500000>;
20462306a36Sopenharmony_ci            regulator-max-microamp = <10000000>;
20562306a36Sopenharmony_ci            regulator-boot-on;
20662306a36Sopenharmony_ci            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
20762306a36Sopenharmony_ci            enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
20862306a36Sopenharmony_ci            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
20962306a36Sopenharmony_ci          };
21062306a36Sopenharmony_ci        };
21162306a36Sopenharmony_ci      };
21262306a36Sopenharmony_ci    };
21362306a36Sopenharmony_ci...
214