xref: /linux/Documentation/devicetree/bindings/regulator/dlg,da9121.yaml (revision fc2d791a43d3880496d1c729b8bd74d2c19cb4e7)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/regulator/dlg,da9121.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Dialog Semiconductor DA9121 voltage regulator
8
9maintainers:
10  - Adam Ward <Adam.Ward.opensource@diasemi.com>
11
12description: |
13  Dialog Semiconductor DA9121 Single-channel 10A double-phase buck converter
14  Dialog Semiconductor DA9122 Double-channel  5A single-phase buck converter
15  Dialog Semiconductor DA9220 Double-channel  3A single-phase buck converter
16  Dialog Semiconductor DA9217 Single-channel  6A double-phase buck converter
17  Dialog Semiconductor DA9130 Single-channel 10A double-phase buck converter
18  Dialog Semiconductor DA9131 Double-channel  5A single-phase buck converter
19  Dialog Semiconductor DA9132 Double-channel  3A single-phase buck converter
20  Dialog Semiconductor DA9141 Single-channel 40A   quad-phase buck converter
21  Dialog Semiconductor DA9142 Single-channel 20A double-phase buck converter
22
23  Device parameter ranges
24
25  The current limits can be set to at/near double the rated current per channel
26  to allow for transient peaks.
27  Current limit changes when the output is enabled are not supported, as a
28  precaution against undefined behaviour.
29
30  |----------------------------------------------|
31  |               | range & reset default value  |
32  | Device        |------------------------------|
33  |               | microvolt    | microamp      |
34  |----------------------------------------------|
35  | DA9121/DA9130 | Min:  300000 | Min:  7000000 |
36  |               | Max: 1900000 | Max: 20000000 |
37  |----------------------------------------------|
38  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
39  |               | Max: 1900000 | Max: 10000000 |
40  |----------------------------------------------|
41  | DA9121/DA9131 | Min:  300000 | Min:  3500000 |
42  |               | Max: 1900000 | Max:  6000000 |
43  |----------------------------------------------|
44  | DA9217        | Min:  300000 | Min:  7000000 |
45  |               | Max: 1900000 | Max: 12000000 |
46  |----------------------------------------------|
47  | DA9141        | Min:  300000 | Min: 26000000 |
48  |               | Max: 1300000 | Max: 78000000 |
49  |----------------------------------------------|
50  | DA9142        | Min:  300000 | Min: 13000000 |
51  |               | Max: 1300000 | Max: 39000000 |
52  |----------------------------------------------|
53
54properties:
55  $nodename:
56    pattern: "pmic@[0-9a-f]{1,2}"
57  compatible:
58    enum:
59      - dlg,da9121
60      - dlg,da9122
61      - dlg,da9220
62      - dlg,da9217
63      - dlg,da9130
64      - dlg,da9131
65      - dlg,da9132
66      - dlg,da9141
67      - dlg,da9142
68
69  reg:
70    maxItems: 1
71    description: Specifies the I2C slave address.
72
73  interrupts:
74    maxItems: 1
75    description: IRQ line information.
76
77  dlg,irq-polling-delay-passive-ms:
78    minimum: 1000
79    maximum: 10000
80    description: |
81      Specify the polling period, measured in milliseconds, between interrupt status
82      update checks. Range 1000-10000 ms.
83
84  dlg,no-gpio-control:
85    type: boolean
86    description: |
87      Available GPIO input pins of the regulator are strapped to fixed levels, therefore
88      GPIO configurable input functions, DVC/RELOAD/EN, cannot dynamically update BUCK
89      registers. GPIO pins connected as output pins are not required to be strapped to a
90      fixed level. Not allowed together with enable-gpios.
91
92  regulators:
93    type: object
94    additionalProperties: false
95    description: |
96      List of regulators provided by the device
97
98    patternProperties:
99      "^buck([1-2])$":
100        type: object
101        $ref: regulator.yaml#
102        description: |
103          Properties for a single BUCK regulator
104
105        properties:
106          regulator-initial-mode:
107            enum: [ 0, 1, 2, 3 ]
108            description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
109
110          enable-gpios:
111            maxItems: 1
112            description: Specify a valid GPIO for platform control of the regulator
113
114          dlg,ripple-cancel:
115            $ref: /schemas/types.yaml#/definitions/uint32
116            enum: [ 0, 1, 2, 3 ]
117            description: |
118              Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
119              Only present on multi-channel devices (DA9122, DA9220, DA9131, DA9132)
120
121        unevaluatedProperties: false
122
123required:
124  - compatible
125  - reg
126  - regulators
127
128allOf:
129  - if:
130      properties:
131        compatible:
132          not:
133            contains:
134              enum:
135                - dlg,da9122
136                - dlg,da9131
137                - dlg,da9132
138                - dlg,da9220
139    then:
140      properties:
141        regulators:
142          properties:
143            buck2: false
144
145  - if:
146      required:
147        - dlg,no-gpio-control
148    then:
149      properties:
150        regulators:
151          patternProperties:
152            "^buck([1-2])$":
153              properties:
154                enable-gpios: false
155
156additionalProperties: false
157
158examples:
159  - |
160    #include <dt-bindings/gpio/gpio.h>
161    #include <dt-bindings/interrupt-controller/irq.h>
162    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
163    i2c {
164      #address-cells = <1>;
165      #size-cells = <0>;
166      pmic@68 {
167        compatible = "dlg,da9121";
168        reg = <0x68>;
169
170        interrupt-parent = <&gpio6>;
171        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
172
173        dlg,irq-polling-delay-passive-ms = <2000>;
174
175        regulators {
176          DA9121_BUCK1: buck1 {
177            regulator-name = "BUCK1";
178            regulator-min-microvolt = <300000>;
179            regulator-max-microvolt = <1900000>;
180            regulator-min-microamp = <7000000>;
181            regulator-max-microamp = <20000000>;
182            regulator-boot-on;
183            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
184            enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
185          };
186        };
187      };
188    };
189
190  - |
191    #include <dt-bindings/interrupt-controller/irq.h>
192    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
193    i2c {
194      #address-cells = <1>;
195      #size-cells = <0>;
196      pmic@68 {
197        compatible = "dlg,da9121";
198        reg = <0x68>;
199
200        interrupt-parent = <&gpio6>;
201        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
202
203        dlg,irq-polling-delay-passive-ms = <2000>;
204        dlg,no-gpio-control;
205
206        regulators {
207          DA9121_BUCK: buck1 {
208            regulator-name = "BUCK1";
209            regulator-min-microvolt = <300000>;
210            regulator-max-microvolt = <1900000>;
211            regulator-min-microamp = <7000000>;
212            regulator-max-microamp = <20000000>;
213            regulator-boot-on;
214            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
215          };
216        };
217      };
218    };
219
220  - |
221    #include <dt-bindings/gpio/gpio.h>
222    #include <dt-bindings/interrupt-controller/irq.h>
223    #include <dt-bindings/regulator/dlg,da9121-regulator.h>
224    i2c {
225      #address-cells = <1>;
226      #size-cells = <0>;
227      pmic@68 {
228        compatible = "dlg,da9122";
229        reg = <0x68>;
230
231        interrupt-parent = <&gpio6>;
232        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
233
234        dlg,irq-polling-delay-passive-ms = <2000>;
235
236        regulators {
237          DA9122_BUCK1: buck1 {
238            regulator-name = "BUCK1";
239            regulator-min-microvolt = <300000>;
240            regulator-max-microvolt = <1900000>;
241            regulator-min-microamp = <3500000>;
242            regulator-max-microamp = <10000000>;
243            regulator-boot-on;
244            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
245            enable-gpios = <&gpio6 1 GPIO_ACTIVE_HIGH>;
246            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
247          };
248          DA9122_BUCK2: buck2 {
249            regulator-name = "BUCK2";
250            regulator-min-microvolt = <300000>;
251            regulator-max-microvolt = <1900000>;
252            regulator-min-microamp = <3500000>;
253            regulator-max-microamp = <10000000>;
254            regulator-boot-on;
255            regulator-initial-mode = <DA9121_BUCK_MODE_AUTO>;
256            enable-gpios = <&gpio6 2 GPIO_ACTIVE_HIGH>;
257            dlg,ripple-cancel = <DA9121_BUCK_RIPPLE_CANCEL_NONE>;
258          };
259        };
260      };
261    };
262...
263