GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / mfd / rockchip,rk817.yaml
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
7 title: RK817 Power Management Integrated Circuit
8
9 maintainers:
10   - Chris Zhong <zyw@rock-chips.com>
11   - Zhang Qing <zhangqing@rock-chips.com>
12
13 description: |
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
18 properties:
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
120 allOf:
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
136 required:
137   - compatible
138   - reg
139   - interrupts
140   - "#clock-cells"
141
142 additionalProperties: false
143
144 examples:
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     };