blob: e87a04477440e29d2adbb144e66b1cbd48a38aed [file] [log] [blame]
Nick Xiea8398282019-07-30 11:51:14 +08001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Shenzhen Wesion Technology Co., Ltd.
4 * (https://www.khadas.com)
5 */
6
7/dts-v1/;
8#include <dt-bindings/input/linux-event-codes.h>
9#include <dt-bindings/pwm/pwm.h>
10#include "rk3399.dtsi"
11#include "rk3399-opp.dtsi"
12
13/ {
14 chosen {
15 stdout-path = "serial2:1500000n8";
16 };
17
18 clkin_gmac: external-gmac-clock {
19 compatible = "fixed-clock";
20 clock-frequency = <125000000>;
21 clock-output-names = "clkin_gmac";
22 #clock-cells = <0>;
23 };
24
25 sdio_pwrseq: sdio-pwrseq {
26 compatible = "mmc-pwrseq-simple";
27 clocks = <&rk808 1>;
28 clock-names = "ext_clock";
29 pinctrl-names = "default";
30 pinctrl-0 = <&wifi_enable_h>;
31
32 /*
33 * On the module itself this is one of these (depending
34 * on the actual card populated):
35 * - SDIO_RESET_L_WL_REG_ON
36 * - PDN (power down when low)
37 */
38 reset-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_LOW>;
39 };
40
41 /* switched by pmic_sleep */
42 vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
43 compatible = "regulator-fixed";
44 regulator-name = "vcc1v8_s3";
45 regulator-always-on;
46 regulator-boot-on;
47 regulator-min-microvolt = <1800000>;
48 regulator-max-microvolt = <1800000>;
49 vin-supply = <&vcc_1v8>;
50 };
51
52 vcc3v3_pcie: vcc3v3-pcie-regulator {
53 compatible = "regulator-fixed";
54 regulator-name = "vcc3v3_pcie";
55 regulator-always-on;
56 regulator-boot-on;
57 regulator-min-microvolt = <3300000>;
58 regulator-max-microvolt = <3300000>;
59 vin-supply = <&vsys_3v3>;
60 };
61
62 /* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
63 vcc5v0_host: vcc5v0-host-regulator {
64 compatible = "regulator-fixed";
65 enable-active-high;
66 gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
67 pinctrl-names = "default";
68 pinctrl-0 = <&vcc5v0_host_en>;
69 regulator-name = "vcc5v0_host";
70 regulator-always-on;
71 vin-supply = <&vsys_5v0>;
72 };
73
74 vdd_log: vdd-log {
75 compatible = "pwm-regulator";
76 pwms = <&pwm2 0 25000 1>;
77 regulator-name = "vdd_log";
78 regulator-always-on;
79 regulator-boot-on;
80 regulator-min-microvolt = <800000>;
81 regulator-max-microvolt = <1400000>;
82 vin-supply = <&vsys_3v3>;
83 };
84
85 vsys: vsys {
86 compatible = "regulator-fixed";
87 regulator-name = "vsys";
88 regulator-always-on;
89 regulator-boot-on;
90 };
91
92 vsys_3v3: vsys-3v3 {
93 compatible = "regulator-fixed";
94 regulator-name = "vsys_3v3";
95 regulator-always-on;
96 regulator-boot-on;
97 regulator-min-microvolt = <3300000>;
98 regulator-max-microvolt = <3300000>;
99 vin-supply = <&vsys>;
100 };
101
102 vsys_5v0: vsys-5v0 {
103 compatible = "regulator-fixed";
104 regulator-name = "vsys_5v0";
105 regulator-always-on;
106 regulator-boot-on;
107 regulator-min-microvolt = <5000000>;
108 regulator-max-microvolt = <5000000>;
109 vin-supply = <&vsys>;
110 };
111
112 adc-keys {
113 compatible = "adc-keys";
114 io-channels = <&saradc 1>;
115 io-channel-names = "buttons";
116 keyup-threshold-microvolt = <1800000>;
117 poll-interval = <100>;
118
119 recovery {
120 label = "Recovery";
121 linux,code = <KEY_VENDOR>;
122 press-threshold-microvolt = <18000>;
123 };
124 };
125
126 gpio-keys {
127 compatible = "gpio-keys";
128 autorepeat;
129 pinctrl-names = "default";
130 pinctrl-0 = <&pwrbtn>;
131
132 power {
133 debounce-interval = <100>;
134 gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
135 label = "GPIO Key Power";
136 linux,code = <KEY_POWER>;
137 wakeup-source;
138 };
139 };
140
141 leds {
142 compatible = "gpio-leds";
143 pinctrl-names = "default";
144 pinctrl-0 = <&sys_led_gpio>, <&user_led_gpio>;
145
146 sys-led {
147 label = "sys_led";
148 linux,default-trigger = "heartbeat";
149 gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
150 };
151
152 user-led {
153 label = "user_led";
154 default-state = "off";
155 gpios = <&gpio4 RK_PD0 GPIO_ACTIVE_HIGH>;
156 };
157 };
158
159 fan: pwm-fan {
160 compatible = "pwm-fan";
161 cooling-levels = <0 150 200 255>;
162 #cooling-cells = <2>;
163 fan-supply = <&vsys_5v0>;
164 pwms = <&pwm0 0 40000 0>;
165 };
166};
167
168&cpu_l0 {
169 cpu-supply = <&vdd_cpu_l>;
170};
171
172&cpu_l1 {
173 cpu-supply = <&vdd_cpu_l>;
174};
175
176&cpu_l2 {
177 cpu-supply = <&vdd_cpu_l>;
178};
179
180&cpu_l3 {
181 cpu-supply = <&vdd_cpu_l>;
182};
183
184&cpu_b0 {
185 cpu-supply = <&vdd_cpu_b>;
186};
187
188&cpu_b1 {
189 cpu-supply = <&vdd_cpu_b>;
190};
191
192&cpu_thermal {
193 trips {
194 cpu_warm: cpu_warm {
195 temperature = <55000>;
196 hysteresis = <2000>;
197 type = "active";
198 };
199
200 cpu_hot: cpu_hot {
201 temperature = <65000>;
202 hysteresis = <2000>;
203 type = "active";
204 };
205 };
206
207 cooling-maps {
208 map2 {
209 trip = <&cpu_warm>;
210 cooling-device = <&fan THERMAL_NO_LIMIT 1>;
211 };
212
213 map3 {
214 trip = <&cpu_hot>;
215 cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
216 };
217 };
218};
219
220&emmc_phy {
221 status = "okay";
222};
223
224&gmac {
225 assigned-clocks = <&cru SCLK_RMII_SRC>;
226 assigned-clock-parents = <&clkin_gmac>;
227 clock_in_out = "input";
228 phy-supply = <&vcc_lan>;
229 phy-mode = "rgmii";
230 pinctrl-names = "default";
231 pinctrl-0 = <&rgmii_pins>;
232 snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
233 snps,reset-active-low;
234 snps,reset-delays-us = <0 10000 50000>;
235 tx_delay = <0x28>;
236 rx_delay = <0x11>;
237};
238
239&gpu {
240 mali-supply = <&vdd_gpu>;
241 status = "okay";
242};
243
244&gpu_thermal {
245 trips {
246 gpu_warm: gpu_warm {
247 temperature = <55000>;
248 hysteresis = <2000>;
249 type = "active";
250 };
251
252 gpu_hot: gpu_hot {
253 temperature = <65000>;
254 hysteresis = <2000>;
255 type = "active";
256 };
257 };
258
259 cooling-maps {
260 map1 {
261 trip = <&gpu_warm>;
262 cooling-device = <&fan THERMAL_NO_LIMIT 1>;
263 };
264
265 map2 {
266 trip = <&gpu_hot>;
267 cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
268 };
269 };
270};
271
272&hdmi {
273 ddc-i2c-bus = <&i2c3>;
274 pinctrl-names = "default";
275 pinctrl-0 = <&hdmi_cec>;
276 status = "okay";
277};
278
279&hdmi_sound {
280 status = "okay";
281};
282
283&i2c3 {
284 i2c-scl-rising-time-ns = <450>;
285 i2c-scl-falling-time-ns = <15>;
286 status = "okay";
287};
288
289&i2c4 {
290 clock-frequency = <400000>;
291 i2c-scl-rising-time-ns = <168>;
292 i2c-scl-falling-time-ns = <4>;
293 status = "okay";
294
295 rk808: pmic@1b {
296 compatible = "rockchip,rk808";
297 reg = <0x1b>;
298 interrupt-parent = <&gpio1>;
299 interrupts = <RK_PC6 IRQ_TYPE_LEVEL_LOW>;
300 #clock-cells = <1>;
301 clock-output-names = "xin32k", "rk808-clkout2";
302 pinctrl-names = "default";
303 pinctrl-0 = <&pmic_int_l>;
304 rockchip,system-power-controller;
305 wakeup-source;
306
307 vcc1-supply = <&vsys_3v3>;
308 vcc2-supply = <&vsys_3v3>;
309 vcc3-supply = <&vsys_3v3>;
310 vcc4-supply = <&vsys_3v3>;
311 vcc6-supply = <&vsys_3v3>;
312 vcc7-supply = <&vsys_3v3>;
313 vcc8-supply = <&vsys_3v3>;
314 vcc9-supply = <&vsys_3v3>;
315 vcc10-supply = <&vsys_3v3>;
316 vcc11-supply = <&vsys_3v3>;
317 vcc12-supply = <&vsys_3v3>;
318 vddio-supply = <&vcc_1v8>;
319
320 regulators {
321 vdd_center: DCDC_REG1 {
322 regulator-name = "vdd_center";
323 regulator-always-on;
324 regulator-boot-on;
325 regulator-min-microvolt = <750000>;
326 regulator-max-microvolt = <1350000>;
327 regulator-ramp-delay = <6001>;
328
329 regulator-state-mem {
330 regulator-off-in-suspend;
331 };
332 };
333
334 vdd_cpu_l: DCDC_REG2 {
335 regulator-name = "vdd_cpu_l";
336 regulator-always-on;
337 regulator-boot-on;
338 regulator-min-microvolt = <750000>;
339 regulator-max-microvolt = <1350000>;
340 regulator-ramp-delay = <6001>;
341
342 regulator-state-mem {
343 regulator-off-in-suspend;
344 };
345 };
346
347 vcc_ddr: DCDC_REG3 {
348 regulator-name = "vcc_ddr";
349 regulator-always-on;
350 regulator-boot-on;
351
352 regulator-state-mem {
353 regulator-on-in-suspend;
354 };
355 };
356
357 vcc_1v8: DCDC_REG4 {
358 regulator-name = "vcc_1v8";
359 regulator-always-on;
360 regulator-boot-on;
361 regulator-min-microvolt = <1800000>;
362 regulator-max-microvolt = <1800000>;
363
364 regulator-state-mem {
365 regulator-on-in-suspend;
366 regulator-suspend-microvolt = <1800000>;
367 };
368 };
369
370 vcc1v8_apio2: LDO_REG1 {
371 regulator-name = "vcc1v8_apio2";
372 regulator-always-on;
373 regulator-boot-on;
374 regulator-min-microvolt = <1800000>;
375 regulator-max-microvolt = <1800000>;
376
377 regulator-state-mem {
378 regulator-off-in-suspend;
379 };
380 };
381
382 vcc_vldo2: LDO_REG2 {
383 regulator-name = "vcc_vldo2";
384 regulator-always-on;
385 regulator-boot-on;
386 regulator-min-microvolt = <3000000>;
387 regulator-max-microvolt = <3000000>;
388
389 regulator-state-mem {
390 regulator-off-in-suspend;
391 };
392 };
393
394 vcc1v8_pmupll: LDO_REG3 {
395 regulator-name = "vcc1v8_pmupll";
396 regulator-always-on;
397 regulator-boot-on;
398 regulator-min-microvolt = <1800000>;
399 regulator-max-microvolt = <1800000>;
400
401 regulator-state-mem {
402 regulator-on-in-suspend;
403 regulator-suspend-microvolt = <1800000>;
404 };
405 };
406
407 vccio_sd: LDO_REG4 {
408 regulator-name = "vccio_sd";
409 regulator-always-on;
410 regulator-boot-on;
411 regulator-min-microvolt = <1800000>;
412 regulator-max-microvolt = <3000000>;
413
414 regulator-state-mem {
415 regulator-on-in-suspend;
416 regulator-suspend-microvolt = <3000000>;
417 };
418 };
419
420 vcc_vldo5: LDO_REG5 {
421 regulator-name = "vcc_vldo5";
422 regulator-always-on;
423 regulator-boot-on;
424 regulator-min-microvolt = <3000000>;
425 regulator-max-microvolt = <3000000>;
426
427 regulator-state-mem {
428 regulator-off-in-suspend;
429 };
430 };
431
432 vcc_1v5: LDO_REG6 {
433 regulator-name = "vcc_1v5";
434 regulator-always-on;
435 regulator-boot-on;
436 regulator-min-microvolt = <1500000>;
437 regulator-max-microvolt = <1500000>;
438
439 regulator-state-mem {
440 regulator-on-in-suspend;
441 regulator-suspend-microvolt = <1500000>;
442 };
443 };
444
445 vcc1v8_codec: LDO_REG7 {
446 regulator-name = "vcc1v8_codec";
447 regulator-always-on;
448 regulator-boot-on;
449 regulator-min-microvolt = <1800000>;
450 regulator-max-microvolt = <1800000>;
451
452 regulator-state-mem {
453 regulator-off-in-suspend;
454 };
455 };
456
457 vcc_3v0: LDO_REG8 {
458 regulator-name = "vcc_3v0";
459 regulator-always-on;
460 regulator-boot-on;
461 regulator-min-microvolt = <3000000>;
462 regulator-max-microvolt = <3000000>;
463
464 regulator-state-mem {
465 regulator-on-in-suspend;
466 regulator-suspend-microvolt = <3000000>;
467 };
468 };
469
470 vcc3v3_s3: vcc_lan: SWITCH_REG1 {
471 regulator-name = "vcc3v3_s3";
472 regulator-always-on;
473 regulator-boot-on;
474
475 regulator-state-mem {
476 regulator-off-in-suspend;
477 };
478 };
479
480 vcc3v3_s0: SWITCH_REG2 {
481 regulator-name = "vcc3v3_s0";
482 regulator-always-on;
483 regulator-boot-on;
484
485 regulator-state-mem {
486 regulator-off-in-suspend;
487 };
488 };
489 };
490 };
491
492 vdd_cpu_b: regulator@40 {
493 compatible = "silergy,syr827";
494 reg = <0x40>;
495 fcs,suspend-voltage-selector = <1>;
496 pinctrl-names = "default";
497 pinctrl-0 = <&cpu_b_sleep>;
498 regulator-name = "vdd_cpu_b";
499 regulator-min-microvolt = <712500>;
500 regulator-max-microvolt = <1500000>;
501 regulator-ramp-delay = <1000>;
502 regulator-always-on;
503 regulator-boot-on;
504 vin-supply = <&vsys_3v3>;
505
506 regulator-state-mem {
507 regulator-off-in-suspend;
508 };
509 };
510
511 vdd_gpu: regulator@41 {
512 compatible = "silergy,syr828";
513 reg = <0x41>;
514 fcs,suspend-voltage-selector = <1>;
515 pinctrl-names = "default";
516 pinctrl-0 = <&gpu_sleep>;
517 regulator-name = "vdd_gpu";
518 regulator-min-microvolt = <712500>;
519 regulator-max-microvolt = <1500000>;
520 regulator-ramp-delay = <1000>;
521 regulator-always-on;
522 regulator-boot-on;
523 vin-supply = <&vsys_3v3>;
524
525 regulator-state-mem {
526 regulator-off-in-suspend;
527 };
528 };
529};
530
531&i2c8 {
532 clock-frequency = <400000>;
533 i2c-scl-rising-time-ns = <160>;
534 i2c-scl-falling-time-ns = <30>;
535 status = "okay";
536};
537
538&i2s0 {
539 rockchip,playback-channels = <8>;
540 rockchip,capture-channels = <8>;
541 status = "okay";
542};
543
544&i2s1 {
545 rockchip,playback-channels = <2>;
546 rockchip,capture-channels = <2>;
547 status = "okay";
548};
549
550&i2s2 {
551 status = "okay";
552};
553
554&io_domains {
555 bt656-supply = <&vcc1v8_apio2>;
556 audio-supply = <&vcc1v8_codec>;
557 sdmmc-supply = <&vccio_sd>;
558 gpio1830-supply = <&vcc_3v0>;
559 status = "okay";
560};
561
562&pmu_io_domains {
563 pmu1830-supply = <&vcc_1v8>;
564 status = "okay";
565};
566
567&pinctrl {
568 bt {
569 bt_host_wake_l: bt-host-wake-l {
570 rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
571 };
572
573 bt_reg_on_h: bt-reg-on-h {
574 rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
575 };
576
577 bt_wake_l: bt-wake-l {
578 rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
579 };
580 };
581
582 buttons {
583 pwrbtn: pwrbtn {
584 rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
585 };
586 };
587
588 leds {
589 sys_led_gpio: sys_led-gpio {
590 rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
591 };
592
593 user_led_gpio: user_led-gpio {
594 rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
595 };
596 };
597
598 pmic {
599 pmic_int_l: pmic-int-l {
600 rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
601 };
602
603 cpu_b_sleep: cpu-b-sleep {
604 rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
605 };
606
607 gpu_sleep: gpu-sleep {
608 rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
609 };
610 };
611
612 sdio-pwrseq {
613 wifi_enable_h: wifi-enable-h {
614 rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
615 };
616 };
617
618 usb2 {
619 vcc5v0_host_en: vcc5v0-host-en {
620 rockchip,pins = <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
621 };
622 };
623
624 wifi {
625 wifi_host_wake_l: wifi-host-wake-l {
626 rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
627 };
628 };
629};
630
631&pwm0 {
632 status = "okay";
633};
634
635&pwm2 {
636 status = "okay";
637};
638
639&saradc {
640 vref-supply = <&vcca1v8_s3>;
641 status = "okay";
642};
643
644&sdio0 {
645 /* WiFi & BT combo module Ampak AP6356S */
646 bus-width = <4>;
647 cap-sdio-irq;
648 cap-sd-highspeed;
649 keep-power-in-suspend;
650 mmc-pwrseq = <&sdio_pwrseq>;
651 non-removable;
652 pinctrl-names = "default";
653 pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
654 sd-uhs-sdr104;
655 vqmmc-supply = <&vcc1v8_s3>;
656 vmmc-supply = <&vccio_sd>;
Jagan Teki167efc22020-04-28 15:30:17 +0530657 #address-cells = <1>;
658 #size-cells = <0>;
Nick Xiea8398282019-07-30 11:51:14 +0800659 status = "okay";
660
661 brcmf: wifi@1 {
Jagan Teki167efc22020-04-28 15:30:17 +0530662 reg = <1>;
Nick Xiea8398282019-07-30 11:51:14 +0800663 compatible = "brcm,bcm4329-fmac";
664 interrupt-parent = <&gpio0>;
665 interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
666 interrupt-names = "host-wake";
667 brcm,drive-strength = <5>;
668 pinctrl-names = "default";
669 pinctrl-0 = <&wifi_host_wake_l>;
670 };
671};
672
673&sdmmc {
674 bus-width = <4>;
675 cap-mmc-highspeed;
676 cap-sd-highspeed;
677 cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
678 disable-wp;
679 max-frequency = <150000000>;
680 pinctrl-names = "default";
681 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
682 status = "okay";
683};
684
685&sdhci {
686 bus-width = <8>;
687 mmc-hs400-1_8v;
688 mmc-hs400-enhanced-strobe;
689 non-removable;
690 status = "okay";
691};
692
693&tcphy0 {
694 status = "okay";
695};
696
697&tcphy1 {
698 status = "okay";
699};
700
701&tsadc {
702 /* tshut mode 0:CRU 1:GPIO */
703 rockchip,hw-tshut-mode = <1>;
704 /* tshut polarity 0:LOW 1:HIGH */
705 rockchip,hw-tshut-polarity = <1>;
706 status = "okay";
707};
708
709&u2phy0 {
710 status = "okay";
711
712 u2phy0_otg: otg-port {
713 status = "okay";
714 };
715
716 u2phy0_host: host-port {
717 phy-supply = <&vcc5v0_host>;
718 status = "okay";
719 };
720};
721
722&u2phy1 {
723 status = "okay";
724
725 u2phy1_otg: otg-port {
726 status = "okay";
727 };
728
729 u2phy1_host: host-port {
730 phy-supply = <&vcc5v0_host>;
731 status = "okay";
732 };
733};
734
735&uart0 {
736 pinctrl-names = "default";
737 pinctrl-0 = <&uart0_xfer &uart0_rts &uart0_cts>;
738 status = "okay";
739
740 bluetooth {
741 compatible = "brcm,bcm43438-bt";
742 clocks = <&rk808 1>;
743 clock-names = "lpo";
744 device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
745 host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
746 shutdown-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
747 max-speed = <4000000>;
748 pinctrl-names = "default";
749 pinctrl-0 = <&bt_reg_on_h &bt_host_wake_l &bt_wake_l>;
750 vbat-supply = <&vsys_3v3>;
751 vddio-supply = <&vcc_1v8>;
752 };
753};
754
755&uart2 {
756 status = "okay";
757};
758
759&usb_host0_ehci {
760 status = "okay";
761};
762
763&usb_host0_ohci {
764 status = "okay";
765};
766
767&usb_host1_ehci {
768 status = "okay";
769};
770
771&usb_host1_ohci {
772 status = "okay";
773};
774
775&usbdrd3_0 {
776 status = "okay";
777};
778
779&usbdrd_dwc3_0 {
780 status = "okay";
781 dr_mode = "otg";
782};
783
784&usbdrd3_1 {
785 status = "okay";
786};
787
788&usbdrd_dwc3_1 {
789 status = "okay";
790 dr_mode = "host";
791};
792
793&vopb {
794 status = "okay";
795};
796
797&vopb_mmu {
798 status = "okay";
799};
800
801&vopl {
802 status = "okay";
803};
804
805&vopl_mmu {
806 status = "okay";
807};