1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/rockchip,rk817.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: RK817 Power Management Integrated Circuit
8
9maintainers:
10  - Chris Zhong <zyw@rock-chips.com>
11  - Zhang Qing <zhangqing@rock-chips.com>
12
13description: |
14  Rockchip RK817 series PMIC. This device consists of an i2c controlled MFD
15  that includes regulators, an RTC, a power button, an audio codec, and a
16  battery charger manager.
17
18properties:
19  compatible:
20    enum:
21      - rockchip,rk817
22
23  reg:
24    maxItems: 1
25
26  interrupts:
27    maxItems: 1
28
29  '#clock-cells':
30    description:
31      See <dt-bindings/clock/rockchip,rk808.h> for clock IDs.
32    minimum: 0
33    maximum: 1
34
35  clock-output-names:
36    description:
37      From common clock binding to override the default output clock name.
38
39  rockchip,system-power-controller:
40    type: boolean
41    description:
42      Telling whether or not this PMIC is controlling the system power.
43
44  wakeup-source:
45    type: boolean
46    description:
47      Device can be used as a wakeup source.
48
49  vcc1-supply:
50    description:
51      The input supply for DCDC_REG1.
52
53  vcc2-supply:
54    description:
55      The input supply for DCDC_REG2.
56
57  vcc3-supply:
58    description:
59      The input supply for DCDC_REG3.
60
61  vcc4-supply:
62    description:
63      The input supply for DCDC_REG4.
64
65  vcc5-supply:
66    description:
67      The input supply for LDO_REG1, LDO_REG2, and LDO_REG3.
68
69  vcc6-supply:
70    description:
71      The input supply for LDO_REG4, LDO_REG5, and LDO_REG6.
72
73  vcc7-supply:
74    description:
75      The input supply for LDO_REG7, LDO_REG8, and LDO_REG9.
76
77  vcc8-supply:
78    description:
79      The input supply for BOOST.
80
81  vcc9-supply:
82    description:
83      The input supply for OTG_SWITCH.
84
85  regulators:
86    type: object
87    patternProperties:
88      "^(LDO_REG[1-9]|DCDC_REG[1-4]|BOOST|OTG_SWITCH)$":
89        type: object
90        $ref: ../regulator/regulator.yaml#
91    unevaluatedProperties: false
92
93  clocks:
94    description:
95      The input clock for the audio codec.
96
97  clock-names:
98    description:
99      The clock name for the codec clock.
100    items:
101      - const: mclk
102
103  '#sound-dai-cells':
104    description:
105      Needed for the interpretation of sound dais.
106    const: 0
107
108  codec:
109    description: |
110      The child node for the codec to hold additional properties. If no
111      additional properties are required for the codec, this node can be
112      omitted.
113    type: object
114    properties:
115      rockchip,mic-in-differential:
116        type: boolean
117        description:
118          Describes if the microphone uses differential mode.
119
120allOf:
121  - if:
122      properties:
123        '#clock-cells':
124          const: 0
125
126    then:
127      properties:
128        clock-output-names:
129          maxItems: 1
130
131    else:
132      properties:
133        clock-output-names:
134          maxItems: 2
135
136required:
137  - compatible
138  - reg
139  - interrupts
140  - "#clock-cells"
141
142additionalProperties: false
143
144examples:
145  - |
146    #include <dt-bindings/clock/px30-cru.h>
147    #include <dt-bindings/pinctrl/rockchip.h>
148    #include <dt-bindings/interrupt-controller/irq.h>
149    #include <dt-bindings/gpio/gpio.h>
150    i2c {
151        #address-cells = <1>;
152        #size-cells = <0>;
153
154        rk817: pmic@20 {
155            compatible = "rockchip,rk817";
156            reg = <0x20>;
157            interrupt-parent = <&gpio0>;
158            interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
159            clock-output-names = "rk808-clkout1", "xin32k";
160            clock-names = "mclk";
161            clocks = <&cru SCLK_I2S1_OUT>;
162            pinctrl-names = "default";
163            pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
164            wakeup-source;
165            #clock-cells = <1>;
166            #sound-dai-cells = <0>;
167
168            vcc1-supply = <&vccsys>;
169            vcc2-supply = <&vccsys>;
170            vcc3-supply = <&vccsys>;
171            vcc4-supply = <&vccsys>;
172            vcc5-supply = <&vccsys>;
173            vcc6-supply = <&vccsys>;
174            vcc7-supply = <&vccsys>;
175
176            regulators {
177                vdd_logic: DCDC_REG1 {
178                    regulator-name = "vdd_logic";
179                    regulator-min-microvolt = <950000>;
180                    regulator-max-microvolt = <1150000>;
181                    regulator-ramp-delay = <6001>;
182                    regulator-always-on;
183                    regulator-boot-on;
184
185                    regulator-state-mem {
186                        regulator-on-in-suspend;
187                        regulator-suspend-microvolt = <950000>;
188                    };
189                };
190
191                vdd_arm: DCDC_REG2 {
192                    regulator-name = "vdd_arm";
193                    regulator-min-microvolt = <950000>;
194                    regulator-max-microvolt = <1350000>;
195                    regulator-ramp-delay = <6001>;
196                    regulator-always-on;
197                    regulator-boot-on;
198
199                    regulator-state-mem {
200                        regulator-off-in-suspend;
201                        regulator-suspend-microvolt = <950000>;
202                    };
203                };
204
205                vcc_ddr: DCDC_REG3 {
206                    regulator-name = "vcc_ddr";
207                    regulator-always-on;
208                    regulator-boot-on;
209
210                    regulator-state-mem {
211                        regulator-on-in-suspend;
212                    };
213                };
214
215                vcc_3v3: DCDC_REG4 {
216                    regulator-name = "vcc_3v3";
217                    regulator-min-microvolt = <3300000>;
218                    regulator-max-microvolt = <3300000>;
219                    regulator-always-on;
220                    regulator-boot-on;
221
222                    regulator-state-mem {
223                        regulator-off-in-suspend;
224                        regulator-suspend-microvolt = <3300000>;
225                    };
226                };
227
228                vcc_1v8: LDO_REG2 {
229                    regulator-name = "vcc_1v8";
230                    regulator-min-microvolt = <1800000>;
231                    regulator-max-microvolt = <1800000>;
232                    regulator-always-on;
233                    regulator-boot-on;
234
235                    regulator-state-mem {
236                        regulator-on-in-suspend;
237                        regulator-suspend-microvolt = <1800000>;
238                    };
239                };
240
241                vdd_1v0: LDO_REG3 {
242                    regulator-name = "vdd_1v0";
243                    regulator-min-microvolt = <1000000>;
244                    regulator-max-microvolt = <1000000>;
245                    regulator-always-on;
246                    regulator-boot-on;
247
248                    regulator-state-mem {
249                        regulator-on-in-suspend;
250                        regulator-suspend-microvolt = <1000000>;
251                    };
252                };
253
254                vcc3v3_pmu: LDO_REG4 {
255                    regulator-name = "vcc3v3_pmu";
256                    regulator-min-microvolt = <3300000>;
257                    regulator-max-microvolt = <3300000>;
258                    regulator-always-on;
259                    regulator-boot-on;
260
261                    regulator-state-mem {
262                        regulator-on-in-suspend;
263                        regulator-suspend-microvolt = <3300000>;
264                    };
265                };
266
267                vccio_sd: LDO_REG5 {
268                    regulator-name = "vccio_sd";
269                    regulator-min-microvolt = <1800000>;
270                    regulator-max-microvolt = <3300000>;
271                    regulator-always-on;
272                    regulator-boot-on;
273
274                    regulator-state-mem {
275                        regulator-on-in-suspend;
276                        regulator-suspend-microvolt = <3300000>;
277                    };
278                };
279
280                vcc_sd: LDO_REG6 {
281                    regulator-name = "vcc_sd";
282                    regulator-min-microvolt = <3300000>;
283                    regulator-max-microvolt = <3300000>;
284                    regulator-boot-on;
285
286                    regulator-state-mem {
287                        regulator-on-in-suspend;
288                        regulator-suspend-microvolt = <3300000>;
289                    };
290                };
291
292                vcc_bl: LDO_REG7 {
293                    regulator-name = "vcc_bl";
294                    regulator-min-microvolt = <3300000>;
295                    regulator-max-microvolt = <3300000>;
296
297                    regulator-state-mem {
298                        regulator-off-in-suspend;
299                        regulator-suspend-microvolt = <3300000>;
300                    };
301                };
302
303                vcc_lcd: LDO_REG8 {
304                    regulator-name = "vcc_lcd";
305                    regulator-min-microvolt = <2800000>;
306                    regulator-max-microvolt = <2800000>;
307
308                    regulator-state-mem {
309                        regulator-off-in-suspend;
310                        regulator-suspend-microvolt = <2800000>;
311                    };
312                };
313
314                vcc_cam: LDO_REG9 {
315                    regulator-name = "vcc_cam";
316                    regulator-min-microvolt = <3000000>;
317                    regulator-max-microvolt = <3000000>;
318
319                    regulator-state-mem {
320                        regulator-off-in-suspend;
321                        regulator-suspend-microvolt = <3000000>;
322                    };
323                };
324            };
325
326            rk817_codec: codec {
327                rockchip,mic-in-differential;
328            };
329        };
330    };
331