xref: /linux/Documentation/devicetree/bindings/mfd/dlg,da9063.yaml (revision d30c1683aaecb93d2ab95685dc4300a33d3cea7a)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/dlg,da9063.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Dialog DA906{3L,3,2,1} Power Management Integrated Circuit (PMIC)
8
9maintainers:
10  - Steve Twiss <stwiss.opensource@diasemi.com>
11
12description: |
13  For device-tree bindings of other sub-modules refer to the binding documents
14  under the respective sub-system directories.
15  Using regulator-{uv,ov}-{warn,error,protection}-microvolt requires special
16  handling: First, when GP_FB2 is used, it must be ensured that there is no
17  moment where all voltage monitors are disabled. Next, as da9063 only supports
18  UV *and* OV monitoring, both must be set to the same severity and value
19  (0: disable, 1: enable).
20  Product information for the DA906{3L,3,2,1} devices can be found here:
21  - https://www.dialog-semiconductor.com/products/da9063l
22  - https://www.dialog-semiconductor.com/products/da9063
23  - https://www.dialog-semiconductor.com/products/da9062
24  - https://www.dialog-semiconductor.com/products/da9061
25
26properties:
27  compatible:
28    enum:
29      - dlg,da9061
30      - dlg,da9062
31      - dlg,da9063
32      - dlg,da9063l
33
34  reg:
35    maxItems: 1
36
37  interrupts:
38    maxItems: 1
39
40  interrupt-controller: true
41
42  "#interrupt-cells":
43    const: 2
44
45  gpio-controller: true
46
47  "#gpio-cells":
48    const: 2
49
50  gpio:
51    type: object
52    additionalProperties: false
53    properties:
54      compatible:
55        const: dlg,da9062-gpio
56
57  onkey:
58    $ref: /schemas/input/dlg,da9062-onkey.yaml
59
60  regulators:
61    type: object
62    additionalProperties: false
63    patternProperties:
64      "^(ldo([1-9]|1[01])|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck[1-4])$":
65        $ref: /schemas/regulator/regulator.yaml
66        unevaluatedProperties: false
67
68  rtc:
69    type: object
70    $ref: /schemas/rtc/rtc.yaml#
71    unevaluatedProperties: false
72    properties:
73      compatible:
74        enum:
75          - dlg,da9062-rtc
76          - dlg,da9063-rtc
77
78  thermal:
79    $ref: /schemas/thermal/dlg,da9062-thermal.yaml
80
81  watchdog:
82    $ref: /schemas/watchdog/dlg,da9062-watchdog.yaml
83
84  wakeup-source: true
85
86patternProperties:
87  "^(.+-hog(-[0-9]+)?)$":
88    type: object
89
90    required:
91      - gpio-hog
92
93required:
94  - compatible
95  - reg
96
97allOf:
98  - if:
99      properties:
100        compatible:
101          contains:
102            enum:
103              - dlg,da9063
104              - dlg,da9063l
105    then:
106      properties:
107        gpio-controller: false
108        "#gpio-cells": false
109        gpio: false
110        regulators:
111          patternProperties:
112            "^buck[1-4]$": false
113        thermal: false
114      required:
115        - interrupts
116        - interrupt-controller
117        - '#interrupt-cells'
118
119  - if:
120      properties:
121        compatible:
122          contains:
123            enum:
124              - dlg,da9062
125    then:
126      properties:
127        regulators:
128          patternProperties:
129            "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged)$": false
130      required:
131        - gpio
132        - onkey
133        - rtc
134        - thermal
135        - watchdog
136
137  - if:
138      properties:
139        compatible:
140          contains:
141            enum:
142              - dlg,da9061
143    then:
144      properties:
145        gpio-controller: false
146        "#gpio-cells": false
147        gpio: false
148        regulators:
149          patternProperties:
150            "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck4)$": false
151        rtc: false
152      required:
153        - onkey
154        - thermal
155        - watchdog
156
157additionalProperties: false
158
159examples:
160  - |
161    #include <dt-bindings/interrupt-controller/irq.h>
162    i2c {
163      #address-cells = <1>;
164      #size-cells = <0>;
165      pmic@58 {
166        compatible = "dlg,da9063";
167        reg = <0x58>;
168        interrupt-parent = <&gpio6>;
169        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
170        interrupt-controller;
171        #interrupt-cells = <2>;
172
173        rtc {
174          compatible = "dlg,da9063-rtc";
175        };
176
177        watchdog {
178          compatible = "dlg,da9063-watchdog";
179        };
180
181        onkey {
182          compatible = "dlg,da9063-onkey";
183          dlg,disable-key-power;
184        };
185
186        regulators {
187          bcore1 {
188            regulator-name = "BCORE1";
189            regulator-min-microvolt = <300000>;
190            regulator-max-microvolt = <1570000>;
191            regulator-min-microamp = <500000>;
192            regulator-max-microamp = <2000000>;
193            regulator-boot-on;
194          };
195          ldo6 {
196            /* UNUSED */
197            regulator-name = "LDO_6";
198            regulator-uv-protection-microvolt = <0>;
199            regulator-ov-protection-microvolt = <0>;
200          };
201          ldo11 {
202            regulator-name = "LDO_11";
203            regulator-min-microvolt = <900000>;
204            regulator-max-microvolt = <900000>;
205            regulator-uv-protection-microvolt = <1>;
206            regulator-ov-protection-microvolt = <1>;
207            regulator-always-on;
208          };
209        };
210      };
211    };
212
213  - |
214    #include <dt-bindings/interrupt-controller/irq.h>
215    #include <dt-bindings/regulator/dlg,da9063-regulator.h>
216    i2c {
217      #address-cells = <1>;
218      #size-cells = <0>;
219      pmic@58 {
220        compatible = "dlg,da9062";
221        reg = <0x58>;
222        gpio-controller;
223        #gpio-cells = <2>;
224
225        sd0-pwr-sel-hog {
226          gpio-hog;
227          gpios = <1 0>;
228          input;
229          line-name = "SD0_PWR_SEL";
230        };
231
232        sd1-pwr-sel-hog {
233          gpio-hog;
234          gpios = <2 0>;
235          input;
236          line-name = "SD1_PWR_SEL";
237        };
238
239        sw-et0-en-hog {
240          gpio-hog;
241          gpios = <3 0>;
242          input;
243          line-name = "SW_ET0_EN#";
244        };
245
246        pmic-good-hog {
247          gpio-hog;
248          gpios = <4 0>;
249          output-high;
250          line-name = "PMIC_PGOOD";
251        };
252
253        gpio {
254          compatible = "dlg,da9062-gpio";
255        };
256
257        onkey {
258          compatible = "dlg,da9062-onkey";
259        };
260
261        regulators {
262          buck1 {
263            regulator-name = "vdd_arm";
264            regulator-min-microvolt = <925000>;
265            regulator-max-microvolt = <1380000>;
266            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
267            regulator-always-on;
268          };
269          buck2 {
270            regulator-name = "vdd_soc";
271            regulator-min-microvolt = <1150000>;
272            regulator-max-microvolt = <1380000>;
273            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
274            regulator-always-on;
275          };
276          buck3 {
277            regulator-name = "vdd_ddr3";
278            regulator-min-microvolt = <1500000>;
279            regulator-max-microvolt = <1500000>;
280            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
281            regulator-always-on;
282          };
283          buck4 {
284            regulator-name = "vdd_eth";
285            regulator-min-microvolt = <1200000>;
286            regulator-max-microvolt = <1200000>;
287            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
288            regulator-always-on;
289          };
290          ldo1 {
291            regulator-name = "vdd_snvs";
292            regulator-min-microvolt = <3000000>;
293            regulator-max-microvolt = <3000000>;
294            regulator-always-on;
295          };
296          ldo2 {
297            regulator-name = "vdd_high";
298            regulator-min-microvolt = <3000000>;
299            regulator-max-microvolt = <3000000>;
300            regulator-always-on;
301          };
302          ldo3 {
303            regulator-name = "vdd_eth_io";
304            regulator-min-microvolt = <2500000>;
305            regulator-max-microvolt = <2500000>;
306          };
307          ldo4 {
308            regulator-name = "vdd_emmc";
309            regulator-min-microvolt = <1800000>;
310            regulator-max-microvolt = <1800000>;
311            regulator-always-on;
312          };
313        };
314
315        rtc {
316          compatible = "dlg,da9062-rtc";
317        };
318
319        thermal {
320          compatible = "dlg,da9062-thermal";
321        };
322
323        watchdog {
324          compatible = "dlg,da9062-watchdog";
325          dlg,use-sw-pm;
326        };
327      };
328    };
329...
330