blob: 80fc53c807a42c09faeca9b436e5ffe39865764a [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Hardkernel Co., Ltd
4 * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH
5 * Copyright (c) 2022 Maya Matuszczyk <maccraft123mc@gmail.com>
6 */
7
8/dts-v1/;
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/leds/common.h>
12#include <dt-bindings/pinctrl/rockchip.h>
13#include "rk3326.dtsi"
14
15/ {
16 aliases {
17 mmc0 = &sdmmc;
18 };
19
20 chosen {
21 stdout-path = "serial2:115200n8";
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 power-supply = <&vcc_bl>;
27 pwms = <&pwm1 0 25000 0>;
28 };
29
30 builtin_gamepad: gpio-keys {
31 compatible = "gpio-keys";
32 pinctrl-names = "default";
33 pinctrl-0 = <&btn_pins>;
34
35 button-sw1 {
36 gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>;
37 label = "DPAD-UP";
38 linux,code = <BTN_DPAD_UP>;
39 };
40 button-sw2 {
41 gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>;
42 label = "DPAD-DOWN";
43 linux,code = <BTN_DPAD_DOWN>;
44 };
45 button-sw3 {
46 gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>;
47 label = "DPAD-LEFT";
48 linux,code = <BTN_DPAD_LEFT>;
49 };
50 button-sw4 {
51 gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>;
52 label = "DPAD-RIGHT";
53 linux,code = <BTN_DPAD_RIGHT>;
54 };
55 button-sw5 {
56 gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_LOW>;
57 label = "BTN-A";
58 linux,code = <BTN_EAST>;
59 };
60 button-sw6 {
61 gpios = <&gpio1 RK_PA5 GPIO_ACTIVE_LOW>;
62 label = "BTN-B";
63 linux,code = <BTN_SOUTH>;
64 };
65 button-sw7 {
66 gpios = <&gpio1 RK_PA6 GPIO_ACTIVE_LOW>;
67 label = "BTN-Y";
68 linux,code = <BTN_WEST>;
69 };
70 button-sw8 {
71 gpios = <&gpio1 RK_PA7 GPIO_ACTIVE_LOW>;
72 label = "BTN-X";
73 linux,code = <BTN_NORTH>;
74 };
75 btn_f1: button-sw9 {
76 gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>;
77 label = "F1";
78 linux,code = <BTN_TRIGGER_HAPPY1>;
79 };
80 btn_f2: button-sw10 {
81 gpios = <&gpio2 RK_PA1 GPIO_ACTIVE_LOW>;
82 label = "F2";
83 linux,code = <BTN_TRIGGER_HAPPY2>;
84 };
85 btn_f3: button-sw11 {
86 gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
87 label = "F3";
88 linux,code = <BTN_TRIGGER_HAPPY3>;
89 };
90 btn_f4: button-sw12 {
91 gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>;
92 label = "F4";
93 linux,code = <BTN_TRIGGER_HAPPY4>;
94 };
95 btn_f5: button-sw13 {
96 gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>;
97 label = "F5";
98 linux,code = <BTN_TRIGGER_HAPPY5>;
99 };
100 btn_f6: button-sw14 {
101 gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>;
102 label = "F6";
103 linux,code = <BTN_TRIGGER_HAPPY6>;
104 };
105 button-sw15 {
106 gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>;
107 label = "TOP-LEFT";
108 linux,code = <BTN_TL>;
109 };
110 button-sw16 {
111 gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>;
112 label = "TOP-RIGHT";
113 linux,code = <BTN_TR>;
114 };
115 };
116
117 /* led-1 is wired directly to output of always-on regulator */
118
119 gpio_led: gpio-leds {
120 compatible = "gpio-leds";
121 pinctrl-names = "default";
122 pinctrl-0 = <&red_led_pin>;
123
124 red_led: led-3 {
125 color = <LED_COLOR_ID_RED>;
126 gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
127 function = LED_FUNCTION_CHARGING;
128 };
129 };
130
131 pwm_led: led-controller {
132 compatible = "pwm-leds";
133
134 blue_led: led-2 {
135 color = <LED_COLOR_ID_BLUE>;
136 function = LED_FUNCTION_STATUS;
137 linux,default-trigger = "heartbeat";
138 max-brightness = <255>;
139 pwms = <&pwm3 0 25000 0>;
140 };
141 };
142
143 rk817-sound {
144 compatible = "simple-audio-card";
145 simple-audio-card,name = "rk817_int";
146 simple-audio-card,format = "i2s";
147 simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
148 simple-audio-card,mclk-fs = <256>;
149 simple-audio-card,widgets =
150 "Microphone", "Mic Jack",
151 "Headphone", "Headphones",
152 "Speaker", "Speaker";
153 simple-audio-card,routing =
154 "MICL", "Mic Jack",
155 "Headphones", "HPOL",
156 "Headphones", "HPOR",
157 "Speaker", "SPKO";
158
159 simple-audio-card,codec {
160 sound-dai = <&rk817>;
161 };
162
163 simple-audio-card,cpu {
164 sound-dai = <&i2s1_2ch>;
165 };
166 };
167
168 vccsys: vccsys {
169 compatible = "regulator-fixed";
170 regulator-name = "vcc3v8_sys";
171 regulator-always-on;
172 regulator-min-microvolt = <3800000>;
173 regulator-max-microvolt = <3800000>;
174 };
175
176 vcc_host: vcc_host {
177 compatible = "regulator-fixed";
178 regulator-name = "vcc_host";
179 regulator-min-microvolt = <5000000>;
180 regulator-max-microvolt = <5000000>;
181
182 gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
183 enable-active-high;
184 regulator-always-on;
185 regulator-boot-on;
186 vin-supply = <&usb_midu>;
187 };
188};
189
190&cpu0 {
191 cpu-supply = <&vdd_arm>;
192};
193
194&cpu1 {
195 cpu-supply = <&vdd_arm>;
196};
197
198&cpu2 {
199 cpu-supply = <&vdd_arm>;
200};
201
202&cpu3 {
203 cpu-supply = <&vdd_arm>;
204};
205
206&cru {
207 assigned-clocks = <&cru PLL_NPLL>,
208 <&cru ACLK_BUS_PRE>, <&cru ACLK_PERI_PRE>,
209 <&cru HCLK_BUS_PRE>, <&cru HCLK_PERI_PRE>,
210 <&cru PCLK_BUS_PRE>, <&cru SCLK_GPU>;
211
212 assigned-clock-rates = <1188000000>,
213 <200000000>, <200000000>,
214 <150000000>, <150000000>,
215 <100000000>, <200000000>;
216};
217
218&display_subsystem {
219 status = "okay";
220};
221
222&dsi {
223 status = "okay";
224
225 ports {
226 mipi_out: port@1 {
227 reg = <1>;
228
229 mipi_out_panel: endpoint {
230 remote-endpoint = <&mipi_in_panel>;
231 };
232 };
233 };
234
235 internal_display: panel@0 {
236 reg = <0>;
237 backlight = <&backlight>;
238 reset-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
239 rotation = <270>;
240
241 port {
242 mipi_in_panel: endpoint {
243 remote-endpoint = <&mipi_out_panel>;
244 };
245 };
246 };
247};
248
249&dsi_dphy {
250 status = "okay";
251};
252
253&gpu {
254 mali-supply = <&vdd_logic>;
255 status = "okay";
256};
257
258&i2c0 {
259 clock-frequency = <400000>;
260 i2c-scl-falling-time-ns = <16>;
261 i2c-scl-rising-time-ns = <280>;
262 status = "okay";
263
264 rk817: pmic@20 {
265 compatible = "rockchip,rk817";
266 reg = <0x20>;
267 interrupt-parent = <&gpio0>;
268 interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>;
269 clock-output-names = "rk808-clkout1", "xin32k";
270 clock-names = "mclk";
271 clocks = <&cru SCLK_I2S1_OUT>;
272 pinctrl-names = "default";
273 pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
274 wakeup-source;
275 #clock-cells = <1>;
276 #sound-dai-cells = <0>;
277
278 vcc1-supply = <&vccsys>;
279 vcc2-supply = <&vccsys>;
280 vcc3-supply = <&vccsys>;
281 vcc4-supply = <&vccsys>;
282 vcc5-supply = <&vccsys>;
283 vcc6-supply = <&vccsys>;
284 vcc7-supply = <&vccsys>;
285 vcc8-supply = <&vccsys>;
286
287 regulators {
288 vdd_logic: DCDC_REG1 {
289 regulator-name = "vdd_logic";
290 regulator-min-microvolt = <950000>;
291 regulator-max-microvolt = <1150000>;
292 regulator-ramp-delay = <6001>;
293 regulator-always-on;
294 regulator-boot-on;
295
296 regulator-state-mem {
297 regulator-on-in-suspend;
298 regulator-suspend-microvolt = <950000>;
299 };
300 };
301
302 vdd_arm: DCDC_REG2 {
303 regulator-name = "vdd_arm";
304 regulator-min-microvolt = <950000>;
305 regulator-max-microvolt = <1350000>;
306 regulator-ramp-delay = <6001>;
307 regulator-always-on;
308 regulator-boot-on;
309
310 regulator-state-mem {
311 regulator-off-in-suspend;
312 regulator-suspend-microvolt = <950000>;
313 };
314 };
315
316 vcc_ddr: DCDC_REG3 {
317 regulator-name = "vcc_ddr";
318 regulator-always-on;
319 regulator-boot-on;
320
321 regulator-state-mem {
322 regulator-on-in-suspend;
323 };
324 };
325
326 vcc_3v3: DCDC_REG4 {
327 regulator-name = "vcc_3v3";
328 regulator-min-microvolt = <3300000>;
329 regulator-max-microvolt = <3300000>;
330 regulator-always-on;
331 regulator-boot-on;
332
333 regulator-state-mem {
334 regulator-off-in-suspend;
335 regulator-suspend-microvolt = <3300000>;
336 };
337 };
338
339 vcc_1v8: LDO_REG2 {
340 regulator-name = "vcc_1v8";
341 regulator-min-microvolt = <1800000>;
342 regulator-max-microvolt = <1800000>;
343 regulator-always-on;
344 regulator-boot-on;
345
346 regulator-state-mem {
347 regulator-on-in-suspend;
348 regulator-suspend-microvolt = <1800000>;
349 };
350 };
351
352 vdd_1v0: LDO_REG3 {
353 regulator-name = "vdd_1v0";
354 regulator-min-microvolt = <1000000>;
355 regulator-max-microvolt = <1000000>;
356 regulator-always-on;
357 regulator-boot-on;
358
359 regulator-state-mem {
360 regulator-on-in-suspend;
361 regulator-suspend-microvolt = <1000000>;
362 };
363 };
364
365 vcc3v3_pmu: LDO_REG4 {
366 regulator-name = "vcc3v3_pmu";
367 regulator-min-microvolt = <3300000>;
368 regulator-max-microvolt = <3300000>;
369 regulator-always-on;
370 regulator-boot-on;
371
372 regulator-state-mem {
373 regulator-on-in-suspend;
374 regulator-suspend-microvolt = <3300000>;
375 };
376 };
377
378 vccio_sd: LDO_REG5 {
379 regulator-name = "vccio_sd";
380 regulator-min-microvolt = <1800000>;
381 regulator-max-microvolt = <3300000>;
382 regulator-always-on;
383 regulator-boot-on;
384
385 regulator-state-mem {
386 regulator-on-in-suspend;
387 regulator-suspend-microvolt = <3300000>;
388 };
389 };
390
391 vcc_sd: LDO_REG6 {
392 regulator-name = "vcc_sd";
393 regulator-min-microvolt = <3300000>;
394 regulator-max-microvolt = <3300000>;
395 regulator-boot-on;
396
397 regulator-state-mem {
398 regulator-on-in-suspend;
399 regulator-suspend-microvolt = <3300000>;
400 };
401 };
402
403 vcc_bl: LDO_REG7 {
404 regulator-name = "vcc_bl";
405 regulator-min-microvolt = <3300000>;
406 regulator-max-microvolt = <3300000>;
407
408 regulator-state-mem {
409 regulator-off-in-suspend;
410 regulator-suspend-microvolt = <3300000>;
411 };
412 };
413
414 vcc_lcd: LDO_REG8 {
415 regulator-name = "vcc_lcd";
416 regulator-min-microvolt = <2800000>;
417 regulator-max-microvolt = <2800000>;
418
419 regulator-state-mem {
420 regulator-off-in-suspend;
421 regulator-suspend-microvolt = <2800000>;
422 };
423 };
424
425 LDO_REG9 {
426 /* unused */
427 };
428
429 usb_midu: BOOST {
430 regulator-name = "usb_midu";
431 regulator-min-microvolt = <5000000>;
432 regulator-max-microvolt = <5400000>;
433 regulator-always-on;
434 regulator-boot-on;
435 };
436 };
437
438 rk817_charger: charger {
439 rockchip,resistor-sense-micro-ohms = <10000>;
440 rockchip,sleep-enter-current-microamp = <300000>;
441 rockchip,sleep-filter-current-microamp = <100000>;
442 };
443
444 rk817_codec: codec {
445 rockchip,mic-in-differential;
446 };
447 };
448};
449
450/* EXT Header(P2): 7(SCL:GPIO0.C2), 8(SDA:GPIO0.C3) */
451&i2c1 {
452 clock-frequency = <400000>;
453 status = "okay";
454};
455
456/* I2S 1 Channel Used */
457&i2s1_2ch {
458 status = "okay";
459};
460
461&io_domains {
462 vccio1-supply = <&vcc_3v3>;
463 vccio2-supply = <&vccio_sd>;
464 vccio3-supply = <&vcc_3v3>;
465 vccio4-supply = <&vcc_3v3>;
466 vccio5-supply = <&vcc_3v3>;
467 vccio6-supply = <&vcc_3v3>;
468 status = "okay";
469};
470
471&pmu_io_domains {
472 pmuio1-supply = <&vcc3v3_pmu>;
473 pmuio2-supply = <&vcc3v3_pmu>;
474 status = "okay";
475};
476
477&pwm1 {
478 status = "okay";
479};
480
481&pwm3 {
482 status = "okay";
483};
484
485&saradc {
486 vref-supply = <&vcc_1v8>;
487 status = "okay";
488};
489
490&sdmmc {
491 cap-sd-highspeed;
492 card-detect-delay = <200>;
493 cd-gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_LOW>; /*[> CD GPIO <]*/
494 sd-uhs-sdr12;
495 sd-uhs-sdr25;
496 sd-uhs-sdr50;
497 sd-uhs-sdr104;
498 vmmc-supply = <&vcc_sd>;
499 vqmmc-supply = <&vccio_sd>;
500 status = "okay";
501};
502
503&sfc {
504 pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>;
505 pinctrl-names = "default";
506 #address-cells = <1>;
507 #size-cells = <0>;
508 status = "okay";
509
510 flash@0 {
511 compatible = "jedec,spi-nor";
512 reg = <0>;
513 spi-max-frequency = <108000000>;
514 spi-rx-bus-width = <2>;
515 spi-tx-bus-width = <1>;
516 };
517};
518
519&tsadc {
520 status = "okay";
521};
522
523&u2phy {
524 status = "okay";
525
526 u2phy_host: host-port {
527 status = "okay";
528 };
529
530 u2phy_otg: otg-port {
531 status = "disabled";
532 };
533};
534
535&usb20_otg {
536 status = "okay";
537};
538
539/* EXT Header(P2): 2(RXD:GPIO1.C0),3(TXD:.C1),4(CTS:.C2),5(RTS:.C3) */
540&uart1 {
541 pinctrl-names = "default";
542 pinctrl-0 = <&uart1_xfer &uart1_cts>;
543 status = "okay";
544};
545
546&uart2 {
547 pinctrl-names = "default";
548 pinctrl-0 = <&uart2m1_xfer>;
549 status = "okay";
550};
551
552&vopb {
553 status = "okay";
554};
555
556&vopb_mmu {
557 status = "okay";
558};
559
560&pinctrl {
561 btns {
562 btn_pins: btn-pins {
563 rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
564 <1 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
565 <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
566 <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>,
567 <1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>,
568 <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>,
569 <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>,
570 <1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>,
571 <2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,
572 <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>,
573 <2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
574 <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
575 <2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
576 <2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
577 <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
578 <2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
579 };
580 };
581
582 headphone {
583 hp_det: hp-det {
584 rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>;
585 };
586 };
587
588 leds {
589 red_led_pin: red-led-pin {
590 rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
591 };
592 };
593
594 pmic {
595 dc_det: dc-det {
596 rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
597 };
598
599 pmic_int: pmic-int {
600 rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
601 };
602
603 soc_slppin_gpio: soc_slppin_gpio {
604 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
605 };
606
607 soc_slppin_rst: soc_slppin_rst {
608 rockchip,pins = <0 RK_PA4 2 &pcfg_pull_none>;
609 };
610
611 soc_slppin_slp: soc_slppin_slp {
612 rockchip,pins = <0 RK_PA4 1 &pcfg_pull_none>;
613 };
614 };
615};