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