xref: /linux/Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml (revision 4b132aacb0768ac1e652cf517097ea6f237214b9)
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: RK809/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 RK809/RK817 series PMIC. This device consists of an i2c controlled
15  MFD that includes regulators, an RTC, a power button and an audio codec.
16  The RK817 variant also provides a battery charger manager.
17
18properties:
19  compatible:
20    enum:
21      - rockchip,rk809
22      - rockchip,rk817
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    maxItems: 1
29
30  '#clock-cells':
31    description:
32      See <dt-bindings/clock/rockchip,rk808.h> for clock IDs.
33    minimum: 0
34    maximum: 1
35
36  clocks:
37    maxItems: 1
38
39  clock-names:
40    items:
41      - const: mclk
42
43  clock-output-names:
44    description:
45      From common clock binding to override the default output clock name.
46
47  rockchip,system-power-controller:
48    type: boolean
49    deprecated: true
50    description:
51      Telling whether or not this PMIC is controlling the system power.
52
53  '#sound-dai-cells':
54    const: 0
55
56  system-power-controller: true
57
58  wakeup-source:
59    type: boolean
60    description:
61      Device can be used as a wakeup source.
62
63  vcc1-supply:
64    description:
65      The input supply for DCDC_REG1.
66
67  vcc2-supply:
68    description:
69      The input supply for DCDC_REG2.
70
71  vcc3-supply:
72    description:
73      The input supply for DCDC_REG3.
74
75  vcc4-supply:
76    description:
77      The input supply for DCDC_REG4.
78
79  vcc5-supply:
80    description:
81      The input supply for LDO_REG1, LDO_REG2, and LDO_REG3.
82
83  vcc6-supply:
84    description:
85      The input supply for LDO_REG4, LDO_REG5, and LDO_REG6.
86
87  vcc7-supply:
88    description:
89      The input supply for LDO_REG7, LDO_REG8, and LDO_REG9.
90
91  vcc8-supply:
92    description:
93      The input supply for BOOST on RK817, or for SWITCH_REG2 on RK809.
94
95  vcc9-supply:
96    description:
97      The input supply for OTG_SWITCH on RK817,
98      or for DCDC_REG5 and SWITCH_REG1 on RK809.
99
100  regulators:
101    type: object
102    patternProperties:
103      "^(LDO_REG[1-9]|DCDC_REG[1-5]|BOOST|OTG_SWITCH|SWITCH_REG[1-2])$":
104        $ref: /schemas/regulator/regulator.yaml
105        unevaluatedProperties: false
106    additionalProperties: false
107
108  codec:
109    type: object
110    additionalProperties: false
111    properties:
112      rockchip,mic-in-differential:
113        type: boolean
114        description:
115          Describes if the microphone uses differential mode.
116
117  charger:
118    type: object
119    $ref: /schemas/power/supply/power-supply.yaml
120
121    properties:
122      monitored-battery:
123        description: |
124          A phandle to a monitored battery node that contains a valid
125          value for:
126          charge-full-design-microamp-hours,
127          charge-term-current-microamp,
128          constant-charge-current-max-microamp,
129          constant-charge-voltage-max-microvolt,
130          voltage-max-design-microvolt,
131          voltage-min-design-microvolt,
132          and a valid ocv-capacity table.
133
134      rockchip,resistor-sense-micro-ohms:
135        description: |
136          Value in microohms of the battery sense resistor. This value is
137          used by the driver to set the correct divisor value to translate
138          ADC readings into the proper units of measure.
139        enum: [10000, 20000]
140
141      rockchip,sleep-enter-current-microamp:
142        description: |
143          Value in microamps of the sleep enter current for the charger.
144          Value is used by the driver to calibrate the relax threshold.
145
146      rockchip,sleep-filter-current-microamp:
147        description:
148          Value in microamps of the sleep filter current for the charger.
149          Value is used by the driver to derive the sleep sample current.
150
151    required:
152      - monitored-battery
153      - rockchip,resistor-sense-micro-ohms
154      - rockchip,sleep-enter-current-microamp
155      - rockchip,sleep-filter-current-microamp
156
157    additionalProperties: false
158
159allOf:
160  - $ref: /schemas/sound/dai-common.yaml#
161  - if:
162      properties:
163        '#clock-cells':
164          const: 0
165
166    then:
167      properties:
168        clock-output-names:
169          maxItems: 1
170
171    else:
172      properties:
173        clock-output-names:
174          maxItems: 2
175
176  - if:
177      properties:
178        compatible:
179          contains:
180            const: rockchip,rk817
181    then:
182      properties:
183        regulators:
184          patternProperties:
185            "^(DCDC_REG5|SWITCH_REG[1-2])$": false
186    else:
187      properties:
188        regulators:
189          patternProperties:
190            "^(BOOST|OTG_SWITCH)$": false
191
192required:
193  - compatible
194  - reg
195  - interrupts
196  - "#clock-cells"
197
198additionalProperties: false
199
200examples:
201  - |
202    #include <dt-bindings/clock/px30-cru.h>
203    #include <dt-bindings/pinctrl/rockchip.h>
204    #include <dt-bindings/interrupt-controller/irq.h>
205    #include <dt-bindings/gpio/gpio.h>
206    i2c {
207        #address-cells = <1>;
208        #size-cells = <0>;
209
210        rk817: pmic@20 {
211            compatible = "rockchip,rk817";
212            reg = <0x20>;
213            interrupt-parent = <&gpio0>;
214            interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
215            clock-output-names = "rk808-clkout1", "xin32k";
216            clock-names = "mclk";
217            clocks = <&cru SCLK_I2S1_OUT>;
218            pinctrl-names = "default";
219            pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
220            wakeup-source;
221            #clock-cells = <1>;
222            #sound-dai-cells = <0>;
223
224            vcc1-supply = <&vccsys>;
225            vcc2-supply = <&vccsys>;
226            vcc3-supply = <&vccsys>;
227            vcc4-supply = <&vccsys>;
228            vcc5-supply = <&vccsys>;
229            vcc6-supply = <&vccsys>;
230            vcc7-supply = <&vccsys>;
231
232            regulators {
233                vdd_logic: DCDC_REG1 {
234                    regulator-name = "vdd_logic";
235                    regulator-min-microvolt = <950000>;
236                    regulator-max-microvolt = <1150000>;
237                    regulator-ramp-delay = <6001>;
238                    regulator-always-on;
239                    regulator-boot-on;
240
241                    regulator-state-mem {
242                        regulator-on-in-suspend;
243                        regulator-suspend-microvolt = <950000>;
244                    };
245                };
246
247                vdd_arm: DCDC_REG2 {
248                    regulator-name = "vdd_arm";
249                    regulator-min-microvolt = <950000>;
250                    regulator-max-microvolt = <1350000>;
251                    regulator-ramp-delay = <6001>;
252                    regulator-always-on;
253                    regulator-boot-on;
254
255                    regulator-state-mem {
256                        regulator-off-in-suspend;
257                        regulator-suspend-microvolt = <950000>;
258                    };
259                };
260
261                vcc_ddr: DCDC_REG3 {
262                    regulator-name = "vcc_ddr";
263                    regulator-always-on;
264                    regulator-boot-on;
265
266                    regulator-state-mem {
267                        regulator-on-in-suspend;
268                    };
269                };
270
271                vcc_3v3: DCDC_REG4 {
272                    regulator-name = "vcc_3v3";
273                    regulator-min-microvolt = <3300000>;
274                    regulator-max-microvolt = <3300000>;
275                    regulator-always-on;
276                    regulator-boot-on;
277
278                    regulator-state-mem {
279                        regulator-off-in-suspend;
280                        regulator-suspend-microvolt = <3300000>;
281                    };
282                };
283
284                vcc_1v8: LDO_REG2 {
285                    regulator-name = "vcc_1v8";
286                    regulator-min-microvolt = <1800000>;
287                    regulator-max-microvolt = <1800000>;
288                    regulator-always-on;
289                    regulator-boot-on;
290
291                    regulator-state-mem {
292                        regulator-on-in-suspend;
293                        regulator-suspend-microvolt = <1800000>;
294                    };
295                };
296
297                vdd_1v0: LDO_REG3 {
298                    regulator-name = "vdd_1v0";
299                    regulator-min-microvolt = <1000000>;
300                    regulator-max-microvolt = <1000000>;
301                    regulator-always-on;
302                    regulator-boot-on;
303
304                    regulator-state-mem {
305                        regulator-on-in-suspend;
306                        regulator-suspend-microvolt = <1000000>;
307                    };
308                };
309
310                vcc3v3_pmu: LDO_REG4 {
311                    regulator-name = "vcc3v3_pmu";
312                    regulator-min-microvolt = <3300000>;
313                    regulator-max-microvolt = <3300000>;
314                    regulator-always-on;
315                    regulator-boot-on;
316
317                    regulator-state-mem {
318                        regulator-on-in-suspend;
319                        regulator-suspend-microvolt = <3300000>;
320                    };
321                };
322
323                vccio_sd: LDO_REG5 {
324                    regulator-name = "vccio_sd";
325                    regulator-min-microvolt = <1800000>;
326                    regulator-max-microvolt = <3300000>;
327                    regulator-always-on;
328                    regulator-boot-on;
329
330                    regulator-state-mem {
331                        regulator-on-in-suspend;
332                        regulator-suspend-microvolt = <3300000>;
333                    };
334                };
335
336                vcc_sd: LDO_REG6 {
337                    regulator-name = "vcc_sd";
338                    regulator-min-microvolt = <3300000>;
339                    regulator-max-microvolt = <3300000>;
340                    regulator-boot-on;
341
342                    regulator-state-mem {
343                        regulator-on-in-suspend;
344                        regulator-suspend-microvolt = <3300000>;
345                    };
346                };
347
348                vcc_bl: LDO_REG7 {
349                    regulator-name = "vcc_bl";
350                    regulator-min-microvolt = <3300000>;
351                    regulator-max-microvolt = <3300000>;
352
353                    regulator-state-mem {
354                        regulator-off-in-suspend;
355                        regulator-suspend-microvolt = <3300000>;
356                    };
357                };
358
359                vcc_lcd: LDO_REG8 {
360                    regulator-name = "vcc_lcd";
361                    regulator-min-microvolt = <2800000>;
362                    regulator-max-microvolt = <2800000>;
363
364                    regulator-state-mem {
365                        regulator-off-in-suspend;
366                        regulator-suspend-microvolt = <2800000>;
367                    };
368                };
369
370                vcc_cam: LDO_REG9 {
371                    regulator-name = "vcc_cam";
372                    regulator-min-microvolt = <3000000>;
373                    regulator-max-microvolt = <3000000>;
374
375                    regulator-state-mem {
376                        regulator-off-in-suspend;
377                        regulator-suspend-microvolt = <3000000>;
378                    };
379                };
380            };
381
382            rk817_charger: charger {
383                monitored-battery = <&battery>;
384                rockchip,resistor-sense-micro-ohms = <10000>;
385                rockchip,sleep-enter-current-microamp = <300000>;
386                rockchip,sleep-filter-current-microamp = <100000>;
387            };
388
389            rk817_codec: codec {
390                rockchip,mic-in-differential;
391            };
392        };
393    };
394