1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
4 *
5 */
6
7/dts-v1/;
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/leds/common.h>
10#include <dt-bindings/pinctrl/rockchip.h>
11#include <dt-bindings/soc/rockchip,vop2.h>
12#include "rk3568.dtsi"
13
14/ {
15	model = "Rockchip RK3568 EVB1 DDR4 V10 Board";
16	compatible = "rockchip,rk3568-evb1-v10", "rockchip,rk3568";
17
18	aliases {
19		ethernet0 = &gmac0;
20		ethernet1 = &gmac1;
21		mmc0 = &sdmmc0;
22		mmc1 = &sdhci;
23	};
24
25	chosen: chosen {
26		stdout-path = "serial2:1500000n8";
27	};
28
29	dc_12v: dc-12v {
30		compatible = "regulator-fixed";
31		regulator-name = "dc_12v";
32		regulator-always-on;
33		regulator-boot-on;
34		regulator-min-microvolt = <12000000>;
35		regulator-max-microvolt = <12000000>;
36	};
37
38	hdmi-con {
39		compatible = "hdmi-connector";
40		type = "a";
41
42		port {
43			hdmi_con_in: endpoint {
44				remote-endpoint = <&hdmi_out_con>;
45			};
46		};
47	};
48
49	leds {
50		compatible = "gpio-leds";
51
52		led_work: led-0 {
53			gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
54			function = LED_FUNCTION_HEARTBEAT;
55			color = <LED_COLOR_ID_BLUE>;
56			linux,default-trigger = "heartbeat";
57			pinctrl-names = "default";
58			pinctrl-0 = <&led_work_en>;
59		};
60	};
61
62	rk809-sound {
63		compatible = "simple-audio-card";
64		simple-audio-card,format = "i2s";
65		simple-audio-card,name = "Analog RK809";
66		simple-audio-card,mclk-fs = <256>;
67
68		simple-audio-card,cpu {
69			sound-dai = <&i2s1_8ch>;
70		};
71		simple-audio-card,codec {
72			sound-dai = <&rk809>;
73		};
74	};
75
76	vcc3v3_sys: vcc3v3-sys {
77		compatible = "regulator-fixed";
78		regulator-name = "vcc3v3_sys";
79		regulator-always-on;
80		regulator-boot-on;
81		regulator-min-microvolt = <3300000>;
82		regulator-max-microvolt = <3300000>;
83		vin-supply = <&dc_12v>;
84	};
85
86	vcc5v0_sys: vcc5v0-sys {
87		compatible = "regulator-fixed";
88		regulator-name = "vcc5v0_sys";
89		regulator-always-on;
90		regulator-boot-on;
91		regulator-min-microvolt = <5000000>;
92		regulator-max-microvolt = <5000000>;
93		vin-supply = <&dc_12v>;
94	};
95
96	vcc5v0_usb: vcc5v0-usb {
97		compatible = "regulator-fixed";
98		regulator-name = "vcc5v0_usb";
99		regulator-always-on;
100		regulator-boot-on;
101		regulator-min-microvolt = <5000000>;
102		regulator-max-microvolt = <5000000>;
103		vin-supply = <&dc_12v>;
104	};
105
106	vcc5v0_usb_host: vcc5v0-usb-host {
107		compatible = "regulator-fixed";
108		enable-active-high;
109		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
110		pinctrl-names = "default";
111		pinctrl-0 = <&vcc5v0_usb_host_en>;
112		regulator-name = "vcc5v0_usb_host";
113		regulator-min-microvolt = <5000000>;
114		regulator-max-microvolt = <5000000>;
115		vin-supply = <&vcc5v0_usb>;
116	};
117
118	vcc5v0_usb_otg: vcc5v0-usb-otg {
119		compatible = "regulator-fixed";
120		enable-active-high;
121		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
122		pinctrl-names = "default";
123		pinctrl-0 = <&vcc5v0_usb_otg_en>;
124		regulator-name = "vcc5v0_usb_otg";
125		regulator-min-microvolt = <5000000>;
126		regulator-max-microvolt = <5000000>;
127		vin-supply = <&vcc5v0_usb>;
128	};
129
130	vcc3v3_lcd0_n: vcc3v3-lcd0-n {
131		compatible = "regulator-fixed";
132		regulator-name = "vcc3v3_lcd0_n";
133		regulator-min-microvolt = <3300000>;
134		regulator-max-microvolt = <3300000>;
135		enable-active-high;
136		gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;
137		vin-supply = <&vcc3v3_sys>;
138		pinctrl-names = "default";
139		pinctrl-0 = <&vcc3v3_lcd0_n_en>;
140
141		regulator-state-mem {
142			regulator-off-in-suspend;
143		};
144	};
145
146	vcc3v3_lcd1_n: vcc3v3-lcd1-n {
147		compatible = "regulator-fixed";
148		regulator-name = "vcc3v3_lcd1_n";
149		regulator-min-microvolt = <3300000>;
150		regulator-max-microvolt = <3300000>;
151		enable-active-high;
152		gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
153		vin-supply = <&vcc3v3_sys>;
154		pinctrl-names = "default";
155		pinctrl-0 = <&vcc3v3_lcd1_n_en>;
156
157		regulator-state-mem {
158			regulator-off-in-suspend;
159		};
160	};
161};
162
163&combphy0 {
164	status = "okay";
165};
166
167&combphy1 {
168	status = "okay";
169};
170
171&cpu0 {
172	cpu-supply = <&vdd_cpu>;
173};
174
175&cpu1 {
176	cpu-supply = <&vdd_cpu>;
177};
178
179&cpu2 {
180	cpu-supply = <&vdd_cpu>;
181};
182
183&cpu3 {
184	cpu-supply = <&vdd_cpu>;
185};
186
187&gmac0 {
188	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
189	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>;
190	assigned-clock-rates = <0>, <125000000>;
191	clock_in_out = "output";
192	phy-handle = <&rgmii_phy0>;
193	phy-mode = "rgmii-id";
194	pinctrl-names = "default";
195	pinctrl-0 = <&gmac0_miim
196		     &gmac0_tx_bus2
197		     &gmac0_rx_bus2
198		     &gmac0_rgmii_clk
199		     &gmac0_rgmii_bus>;
200	status = "okay";
201};
202
203&gmac1 {
204	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
205	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>;
206	assigned-clock-rates = <0>, <125000000>;
207	clock_in_out = "output";
208	phy-handle = <&rgmii_phy1>;
209	phy-mode = "rgmii-id";
210	pinctrl-names = "default";
211	pinctrl-0 = <&gmac1m1_miim
212		     &gmac1m1_tx_bus2
213		     &gmac1m1_rx_bus2
214		     &gmac1m1_rgmii_clk
215		     &gmac1m1_rgmii_bus>;
216	status = "okay";
217};
218
219&gpu {
220	mali-supply = <&vdd_gpu>;
221	status = "okay";
222};
223
224&hdmi {
225	avdd-0v9-supply = <&vdda0v9_image>;
226	avdd-1v8-supply = <&vcca1v8_image>;
227	status = "okay";
228};
229
230&hdmi_in {
231	hdmi_in_vp0: endpoint {
232		remote-endpoint = <&vp0_out_hdmi>;
233	};
234};
235
236&hdmi_out {
237	hdmi_out_con: endpoint {
238		remote-endpoint = <&hdmi_con_in>;
239	};
240};
241
242&hdmi_sound {
243	status = "okay";
244};
245
246&i2c0 {
247	status = "okay";
248
249	vdd_cpu: regulator@1c {
250		compatible = "tcs,tcs4525";
251		reg = <0x1c>;
252		fcs,suspend-voltage-selector = <1>;
253		regulator-name = "vdd_cpu";
254		regulator-always-on;
255		regulator-boot-on;
256		regulator-min-microvolt = <800000>;
257		regulator-max-microvolt = <1150000>;
258		regulator-ramp-delay = <2300>;
259		vin-supply = <&vcc5v0_sys>;
260
261		regulator-state-mem {
262			regulator-off-in-suspend;
263		};
264	};
265
266	rk809: pmic@20 {
267		compatible = "rockchip,rk809";
268		reg = <0x20>;
269		interrupt-parent = <&gpio0>;
270		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
271		assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
272		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
273		#clock-cells = <1>;
274		clock-names = "mclk";
275		clocks = <&cru I2S1_MCLKOUT_TX>;
276		pinctrl-names = "default";
277		pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
278		rockchip,system-power-controller;
279		#sound-dai-cells = <0>;
280		vcc1-supply = <&vcc3v3_sys>;
281		vcc2-supply = <&vcc3v3_sys>;
282		vcc3-supply = <&vcc3v3_sys>;
283		vcc4-supply = <&vcc3v3_sys>;
284		vcc5-supply = <&vcc3v3_sys>;
285		vcc6-supply = <&vcc3v3_sys>;
286		vcc7-supply = <&vcc3v3_sys>;
287		vcc8-supply = <&vcc3v3_sys>;
288		vcc9-supply = <&vcc3v3_sys>;
289		wakeup-source;
290
291		regulators {
292			vdd_logic: DCDC_REG1 {
293				regulator-name = "vdd_logic";
294				regulator-always-on;
295				regulator-boot-on;
296				regulator-init-microvolt = <900000>;
297				regulator-initial-mode = <0x2>;
298				regulator-min-microvolt = <500000>;
299				regulator-max-microvolt = <1350000>;
300				regulator-ramp-delay = <6001>;
301
302				regulator-state-mem {
303					regulator-off-in-suspend;
304				};
305			};
306
307			vdd_gpu: DCDC_REG2 {
308				regulator-name = "vdd_gpu";
309				regulator-always-on;
310				regulator-init-microvolt = <900000>;
311				regulator-initial-mode = <0x2>;
312				regulator-min-microvolt = <500000>;
313				regulator-max-microvolt = <1350000>;
314				regulator-ramp-delay = <6001>;
315
316				regulator-state-mem {
317					regulator-off-in-suspend;
318				};
319			};
320
321			vcc_ddr: DCDC_REG3 {
322				regulator-name = "vcc_ddr";
323				regulator-always-on;
324				regulator-boot-on;
325				regulator-initial-mode = <0x2>;
326
327				regulator-state-mem {
328					regulator-on-in-suspend;
329				};
330			};
331
332			vdd_npu: DCDC_REG4 {
333				regulator-name = "vdd_npu";
334				regulator-init-microvolt = <900000>;
335				regulator-initial-mode = <0x2>;
336				regulator-min-microvolt = <500000>;
337				regulator-max-microvolt = <1350000>;
338				regulator-ramp-delay = <6001>;
339
340				regulator-state-mem {
341					regulator-off-in-suspend;
342				};
343			};
344
345			vcc_1v8: DCDC_REG5 {
346				regulator-name = "vcc_1v8";
347				regulator-always-on;
348				regulator-boot-on;
349				regulator-min-microvolt = <1800000>;
350				regulator-max-microvolt = <1800000>;
351
352				regulator-state-mem {
353					regulator-off-in-suspend;
354				};
355			};
356
357			vdda0v9_image: LDO_REG1 {
358				regulator-name = "vdda0v9_image";
359				regulator-min-microvolt = <900000>;
360				regulator-max-microvolt = <900000>;
361
362				regulator-state-mem {
363					regulator-off-in-suspend;
364				};
365			};
366
367			vdda_0v9: LDO_REG2 {
368				regulator-name = "vdda_0v9";
369				regulator-always-on;
370				regulator-boot-on;
371				regulator-min-microvolt = <900000>;
372				regulator-max-microvolt = <900000>;
373
374				regulator-state-mem {
375					regulator-off-in-suspend;
376				};
377			};
378
379			vdda0v9_pmu: LDO_REG3 {
380				regulator-name = "vdda0v9_pmu";
381				regulator-always-on;
382				regulator-boot-on;
383				regulator-min-microvolt = <900000>;
384				regulator-max-microvolt = <900000>;
385
386				regulator-state-mem {
387					regulator-on-in-suspend;
388					regulator-suspend-microvolt = <900000>;
389				};
390			};
391
392			vccio_acodec: LDO_REG4 {
393				regulator-name = "vccio_acodec";
394				regulator-always-on;
395				regulator-min-microvolt = <3300000>;
396				regulator-max-microvolt = <3300000>;
397
398				regulator-state-mem {
399					regulator-off-in-suspend;
400				};
401			};
402
403			vccio_sd: LDO_REG5 {
404				regulator-name = "vccio_sd";
405				regulator-min-microvolt = <1800000>;
406				regulator-max-microvolt = <3300000>;
407
408				regulator-state-mem {
409					regulator-off-in-suspend;
410				};
411			};
412
413			vcc3v3_pmu: LDO_REG6 {
414				regulator-name = "vcc3v3_pmu";
415				regulator-always-on;
416				regulator-boot-on;
417				regulator-min-microvolt = <3300000>;
418				regulator-max-microvolt = <3300000>;
419
420				regulator-state-mem {
421					regulator-on-in-suspend;
422					regulator-suspend-microvolt = <3300000>;
423				};
424			};
425
426			vcca_1v8: LDO_REG7 {
427				regulator-name = "vcca_1v8";
428				regulator-always-on;
429				regulator-boot-on;
430				regulator-min-microvolt = <1800000>;
431				regulator-max-microvolt = <1800000>;
432
433				regulator-state-mem {
434					regulator-off-in-suspend;
435				};
436			};
437
438			vcca1v8_pmu: LDO_REG8 {
439				regulator-name = "vcca1v8_pmu";
440				regulator-always-on;
441				regulator-boot-on;
442				regulator-min-microvolt = <1800000>;
443				regulator-max-microvolt = <1800000>;
444
445				regulator-state-mem {
446					regulator-on-in-suspend;
447					regulator-suspend-microvolt = <1800000>;
448				};
449			};
450
451			vcca1v8_image: LDO_REG9 {
452				regulator-name = "vcca1v8_image";
453				regulator-min-microvolt = <1800000>;
454				regulator-max-microvolt = <1800000>;
455
456				regulator-state-mem {
457					regulator-off-in-suspend;
458				};
459			};
460
461			vcc_3v3: SWITCH_REG1 {
462				regulator-name = "vcc_3v3";
463				regulator-always-on;
464				regulator-boot-on;
465
466				regulator-state-mem {
467					regulator-off-in-suspend;
468				};
469			};
470
471			vcc3v3_sd: SWITCH_REG2 {
472				regulator-name = "vcc3v3_sd";
473
474				regulator-state-mem {
475					regulator-off-in-suspend;
476				};
477			};
478		};
479
480		codec {
481			mic-in-differential;
482		};
483	};
484};
485
486&i2c1 {
487	status = "okay";
488
489	touchscreen0: goodix@14 {
490		compatible = "goodix,gt1151";
491		reg = <0x14>;
492		interrupt-parent = <&gpio0>;
493		interrupts = <RK_PB5 IRQ_TYPE_EDGE_FALLING>;
494		AVDD28-supply = <&vcc3v3_lcd0_n>;
495		irq-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
496		pinctrl-names = "default";
497		pinctrl-0 = <&touch_int &touch_rst>;
498		reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;
499		VDDIO-supply = <&vcc3v3_lcd0_n>;
500	};
501};
502
503&i2s0_8ch {
504	status = "okay";
505};
506
507&i2s1_8ch {
508	rockchip,trcm-sync-tx-only;
509	status = "okay";
510};
511
512&mdio0 {
513	rgmii_phy0: ethernet-phy@0 {
514		compatible = "ethernet-phy-ieee802.3-c22";
515		reg = <0x0>;
516		reset-assert-us = <20000>;
517		reset-deassert-us = <100000>;
518		reset-gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
519	};
520};
521
522&mdio1 {
523	rgmii_phy1: ethernet-phy@0 {
524		compatible = "ethernet-phy-ieee802.3-c22";
525		reg = <0x0>;
526		reset-assert-us = <20000>;
527		reset-deassert-us = <100000>;
528		reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;
529	};
530};
531
532&pinctrl {
533	display {
534		vcc3v3_lcd0_n_en: vcc3v3_lcd0_n_en {
535			rockchip,pins = <0 RK_PC7 0 &pcfg_pull_none>;
536		};
537		vcc3v3_lcd1_n_en: vcc3v3_lcd1_n_en {
538			rockchip,pins = <0 RK_PC5 0 &pcfg_pull_none>;
539		};
540	};
541
542	leds {
543		led_work_en: led_work_en {
544			rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
545		};
546	};
547
548	pmic {
549		pmic_int: pmic_int {
550			rockchip,pins =
551				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
552		};
553	};
554
555	touchscreen {
556		touch_int: touch_int {
557			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
558		};
559		touch_rst: touch_rst {
560			rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
561		};
562	};
563
564	usb {
565		vcc5v0_usb_host_en: vcc5v0_usb_host_en {
566			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
567		};
568		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
569			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
570		};
571	};
572};
573
574&pmu_io_domains {
575	pmuio1-supply = <&vcc3v3_pmu>;
576	pmuio2-supply = <&vcc3v3_pmu>;
577	vccio1-supply = <&vccio_acodec>;
578	vccio2-supply = <&vcc_1v8>;
579	vccio3-supply = <&vccio_sd>;
580	vccio4-supply = <&vcc_1v8>;
581	vccio5-supply = <&vcc_3v3>;
582	vccio6-supply = <&vcc_1v8>;
583	vccio7-supply = <&vcc_3v3>;
584	status = "okay";
585};
586
587&saradc {
588	vref-supply = <&vcca_1v8>;
589	status = "okay";
590};
591
592&sdhci {
593	bus-width = <8>;
594	max-frequency = <200000000>;
595	non-removable;
596	pinctrl-names = "default";
597	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
598	status = "okay";
599};
600
601&sdmmc0 {
602	bus-width = <4>;
603	cap-sd-highspeed;
604	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
605	disable-wp;
606	pinctrl-names = "default";
607	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
608	sd-uhs-sdr104;
609	vmmc-supply = <&vcc3v3_sd>;
610	vqmmc-supply = <&vccio_sd>;
611	status = "okay";
612};
613
614&tsadc {
615	rockchip,hw-tshut-mode = <1>;
616	rockchip,hw-tshut-polarity = <0>;
617	status = "okay";
618};
619
620&uart2 {
621	status = "okay";
622};
623
624&usb_host0_ehci {
625	status = "okay";
626};
627
628&usb_host0_ohci {
629	status = "okay";
630};
631
632&usb_host0_xhci {
633	extcon = <&usb2phy0>;
634	status = "okay";
635};
636
637&usb_host1_ehci {
638	status = "okay";
639};
640
641&usb_host1_ohci {
642	status = "okay";
643};
644
645&usb_host1_xhci {
646	status = "okay";
647};
648
649&usb2phy0 {
650	status = "okay";
651};
652
653&usb2phy0_host {
654	phy-supply = <&vcc5v0_usb_host>;
655	status = "okay";
656};
657
658&usb2phy0_otg {
659	phy-supply = <&vcc5v0_usb_otg>;
660	status = "okay";
661};
662
663&usb2phy1 {
664	status = "okay";
665};
666
667&usb2phy1_host {
668	phy-supply = <&vcc5v0_usb_host>;
669	status = "okay";
670};
671
672&usb2phy1_otg {
673	phy-supply = <&vcc5v0_usb_host>;
674	status = "okay";
675};
676
677&vop {
678	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
679	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
680	status = "okay";
681};
682
683&vop_mmu {
684	status = "okay";
685};
686
687&vp0 {
688	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
689		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
690		remote-endpoint = <&hdmi_in_vp0>;
691	};
692};
693