1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4 *
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/pinctrl/rockchip.h>
12#include "rk3588.dtsi"
13
14/ {
15	model = "Rockchip Toybrick TB-RK3588X Board";
16	compatible = "rockchip,rk3588-toybrick-x0", "rockchip,rk3588";
17
18	aliases {
19		mmc0 = &sdhci;
20	};
21
22	chosen {
23		stdout-path = "serial2:1500000n8";
24	};
25
26	adc-keys {
27		compatible = "adc-keys";
28		io-channels = <&saradc 1>;
29		io-channel-names = "buttons";
30		keyup-threshold-microvolt = <1800000>;
31		poll-interval = <100>;
32
33		button-vol-up {
34			label = "Volume Up";
35			linux,code = <KEY_VOLUMEUP>;
36			press-threshold-microvolt = <17000>;
37		};
38
39		button-vol-down {
40			label = "Volume Down";
41			linux,code = <KEY_VOLUMEDOWN>;
42			press-threshold-microvolt = <417000>;
43		};
44
45		button-menu {
46			label = "Menu";
47			linux,code = <KEY_MENU>;
48			press-threshold-microvolt = <890000>;
49		};
50
51		button-escape {
52			label = "Escape";
53			linux,code = <KEY_ESC>;
54			press-threshold-microvolt = <1235000>;
55		};
56	};
57
58	backlight: backlight {
59		compatible = "pwm-backlight";
60		power-supply = <&vcc12v_dcin>;
61		pwms = <&pwm2 0 25000 0>;
62	};
63
64	pcie20_avdd0v85: pcie20-avdd0v85-regulator {
65		compatible = "regulator-fixed";
66		regulator-name = "pcie20_avdd0v85";
67		regulator-always-on;
68		regulator-boot-on;
69		regulator-min-microvolt = <850000>;
70		regulator-max-microvolt = <850000>;
71		vin-supply = <&vdd_0v85_s0>;
72	};
73
74	pcie20_avdd1v8: pcie20-avdd1v8-regulator {
75		compatible = "regulator-fixed";
76		regulator-name = "pcie20_avdd1v8";
77		regulator-always-on;
78		regulator-boot-on;
79		regulator-min-microvolt = <1800000>;
80		regulator-max-microvolt = <1800000>;
81		vin-supply = <&avcc_1v8_s0>;
82	};
83
84	pcie30_avdd0v75: pcie30-avdd0v75-regulator {
85		compatible = "regulator-fixed";
86		regulator-name = "pcie30_avdd0v75";
87		regulator-always-on;
88		regulator-boot-on;
89		regulator-min-microvolt = <750000>;
90		regulator-max-microvolt = <750000>;
91		vin-supply = <&avdd_0v75_s0>;
92	};
93
94	pcie30_avdd1v8: pcie30-avdd1v8-regulator {
95		compatible = "regulator-fixed";
96		regulator-name = "pcie30_avdd1v8";
97		regulator-always-on;
98		regulator-boot-on;
99		regulator-min-microvolt = <1800000>;
100		regulator-max-microvolt = <1800000>;
101		vin-supply = <&avcc_1v8_s0>;
102	};
103
104	vcc12v_dcin: vcc12v-dcin-regulator {
105		compatible = "regulator-fixed";
106		regulator-name = "vcc12v_dcin";
107		regulator-always-on;
108		regulator-boot-on;
109		regulator-min-microvolt = <12000000>;
110		regulator-max-microvolt = <12000000>;
111	};
112
113	vcc5v0_host: vcc5v0-host-regulator {
114		compatible = "regulator-fixed";
115		enable-active-high;
116		gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
117		pinctrl-names = "default";
118		pinctrl-0 = <&vcc5v0_host_en>;
119		regulator-name = "vcc5v0_host";
120		regulator-boot-on;
121		regulator-always-on;
122		regulator-min-microvolt = <5000000>;
123		regulator-max-microvolt = <5000000>;
124		vin-supply = <&vcc5v0_usb>;
125	};
126
127	vcc5v0_sys: vcc5v0-sys-regulator {
128		compatible = "regulator-fixed";
129		regulator-name = "vcc5v0_sys";
130		regulator-always-on;
131		regulator-boot-on;
132		regulator-min-microvolt = <5000000>;
133		regulator-max-microvolt = <5000000>;
134		vin-supply = <&vcc12v_dcin>;
135	};
136
137	vcc5v0_usbdcin: vcc5v0-usbdcin-regulator {
138		compatible = "regulator-fixed";
139		regulator-name = "vcc5v0_usbdcin";
140		regulator-always-on;
141		regulator-boot-on;
142		regulator-min-microvolt = <5000000>;
143		regulator-max-microvolt = <5000000>;
144		vin-supply = <&vcc12v_dcin>;
145	};
146
147	vcc5v0_usb: vcc5v0-usb-regulator {
148		compatible = "regulator-fixed";
149		regulator-name = "vcc5v0_usb";
150		regulator-always-on;
151		regulator-boot-on;
152		regulator-min-microvolt = <5000000>;
153		regulator-max-microvolt = <5000000>;
154		vin-supply = <&vcc5v0_usbdcin>;
155	};
156
157	vcc_1v1_nldo_s3: vcc-1v1-nldo-s3-regulator {
158		compatible = "regulator-fixed";
159		regulator-name = "vcc_1v1_nldo_s3";
160		regulator-always-on;
161		regulator-boot-on;
162		regulator-min-microvolt = <1100000>;
163		regulator-max-microvolt = <1100000>;
164		vin-supply = <&vcc5v0_sys>;
165	};
166};
167
168&combphy0_ps {
169	status = "okay";
170};
171
172&combphy2_psu {
173	status = "okay";
174};
175
176&cpu_b0 {
177	cpu-supply = <&vdd_cpu_big0_s0>;
178};
179
180&cpu_b1 {
181	cpu-supply = <&vdd_cpu_big0_s0>;
182};
183
184&cpu_b2 {
185	cpu-supply = <&vdd_cpu_big1_s0>;
186};
187
188&cpu_b3 {
189	cpu-supply = <&vdd_cpu_big1_s0>;
190};
191
192&cpu_l0 {
193	cpu-supply = <&vdd_cpu_lit_s0>;
194};
195
196&cpu_l1 {
197	cpu-supply = <&vdd_cpu_lit_s0>;
198};
199
200&cpu_l2 {
201	cpu-supply = <&vdd_cpu_lit_s0>;
202};
203
204&cpu_l3 {
205	cpu-supply = <&vdd_cpu_lit_s0>;
206};
207
208&gmac0 {
209	clock_in_out = "output";
210	phy-handle = <&rgmii_phy>;
211	phy-mode = "rgmii-rxid";
212	pinctrl-0 = <&gmac0_miim
213		     &gmac0_tx_bus2
214		     &gmac0_rx_bus2
215		     &gmac0_rgmii_clk
216		     &gmac0_rgmii_bus>;
217	pinctrl-names = "default";
218	rx_delay = <0x00>;
219	tx_delay = <0x43>;
220	status = "okay";
221};
222
223&i2c0 {
224	pinctrl-names = "default";
225	pinctrl-0 = <&i2c0m2_xfer>;
226	status = "okay";
227
228	vdd_cpu_big0_s0: regulator@42 {
229		compatible = "rockchip,rk8602";
230		reg = <0x42>;
231		fcs,suspend-voltage-selector = <1>;
232		regulator-name = "vdd_cpu_big0_s0";
233		regulator-always-on;
234		regulator-boot-on;
235		regulator-min-microvolt = <550000>;
236		regulator-max-microvolt = <1050000>;
237		regulator-ramp-delay = <2300>;
238		vin-supply = <&vcc5v0_sys>;
239
240		regulator-state-mem {
241			regulator-off-in-suspend;
242		};
243	};
244
245	vdd_cpu_big1_s0: regulator@43 {
246		compatible = "rockchip,rk8603", "rockchip,rk8602";
247		reg = <0x43>;
248		fcs,suspend-voltage-selector = <1>;
249		regulator-name = "vdd_cpu_big1_s0";
250		regulator-always-on;
251		regulator-boot-on;
252		regulator-min-microvolt = <550000>;
253		regulator-max-microvolt = <1050000>;
254		regulator-ramp-delay = <2300>;
255		vin-supply = <&vcc5v0_sys>;
256
257		regulator-state-mem {
258			regulator-off-in-suspend;
259		};
260	};
261};
262
263&i2c2 {
264	status = "okay";
265
266	hym8563: rtc@51 {
267		compatible = "haoyu,hym8563";
268		reg = <0x51>;
269		#clock-cells = <0>;
270		clock-output-names = "hym8563";
271		interrupt-parent = <&gpio0>;
272		interrupts = <RK_PD4 IRQ_TYPE_LEVEL_LOW>;
273		pinctrl-names = "default";
274		pinctrl-0 = <&hym8563_int>;
275		wakeup-source;
276	};
277};
278
279&mdio0 {
280	rgmii_phy: ethernet-phy@1 {
281		/* RTL8211F */
282		compatible = "ethernet-phy-id001c.c916";
283		reg = <0x1>;
284		pinctrl-names = "default";
285		pinctrl-0 = <&rtl8211f_rst>;
286		reset-assert-us = <20000>;
287		reset-deassert-us = <100000>;
288		reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
289	};
290};
291
292&pinctrl {
293	rtl8211f {
294		rtl8211f_rst: rtl8211f-rst {
295			rockchip,pins = <4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
296		};
297
298	};
299
300	hym8563 {
301		hym8563_int: hym8563-int {
302			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
303		};
304	};
305
306	usb {
307		vcc5v0_host_en: vcc5v0-host-en {
308			rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
309		};
310	};
311};
312
313&pwm2 {
314	status = "okay";
315};
316
317&saradc {
318	vref-supply = <&vcc_1v8_s0>;
319	status = "okay";
320};
321
322&sdhci {
323	bus-width = <8>;
324	mmc-hs400-1_8v;
325	mmc-hs400-enhanced-strobe;
326	no-sdio;
327	no-sd;
328	non-removable;
329	status = "okay";
330};
331
332&spi2 {
333	assigned-clocks = <&cru CLK_SPI2>;
334	assigned-clock-rates = <200000000>;
335	num-cs = <1>;
336	pinctrl-names = "default";
337	pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
338	status = "okay";
339
340	pmic@0 {
341		compatible = "rockchip,rk806";
342		reg = <0x0>;
343		gpio-controller;
344		#gpio-cells = <2>;
345		interrupt-parent = <&gpio0>;
346		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
347		pinctrl-names = "default";
348		pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
349			    <&rk806_dvs2_null>, <&rk806_dvs3_null>;
350		spi-max-frequency = <1000000>;
351		system-power-controller;
352
353		vcc1-supply = <&vcc5v0_sys>;
354		vcc2-supply = <&vcc5v0_sys>;
355		vcc3-supply = <&vcc5v0_sys>;
356		vcc4-supply = <&vcc5v0_sys>;
357		vcc5-supply = <&vcc5v0_sys>;
358		vcc6-supply = <&vcc5v0_sys>;
359		vcc7-supply = <&vcc5v0_sys>;
360		vcc8-supply = <&vcc5v0_sys>;
361		vcc9-supply = <&vcc5v0_sys>;
362		vcc10-supply = <&vcc5v0_sys>;
363		vcc11-supply = <&vcc_2v0_pldo_s3>;
364		vcc12-supply = <&vcc5v0_sys>;
365		vcc13-supply = <&vcc_1v1_nldo_s3>;
366		vcc14-supply = <&vcc_1v1_nldo_s3>;
367		vcca-supply = <&vcc5v0_sys>;
368
369		rk806_dvs1_null: dvs1-null-pins {
370			pins = "gpio_pwrctrl1";
371			function = "pin_fun0";
372		};
373
374		rk806_dvs2_null: dvs2-null-pins {
375			pins = "gpio_pwrctrl2";
376			function = "pin_fun0";
377		};
378
379		rk806_dvs3_null: dvs3-null-pins {
380			pins = "gpio_pwrctrl3";
381			function = "pin_fun0";
382		};
383
384		regulators {
385			vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
386				regulator-name = "vdd_gpu_s0";
387				regulator-boot-on;
388				regulator-enable-ramp-delay = <400>;
389				regulator-min-microvolt = <550000>;
390				regulator-max-microvolt = <950000>;
391				regulator-ramp-delay = <12500>;
392
393				regulator-state-mem {
394					regulator-off-in-suspend;
395				};
396			};
397
398			vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
399				regulator-name = "vdd_cpu_lit_s0";
400				regulator-always-on;
401				regulator-boot-on;
402				regulator-min-microvolt = <550000>;
403				regulator-max-microvolt = <950000>;
404				regulator-ramp-delay = <12500>;
405
406				regulator-state-mem {
407					regulator-off-in-suspend;
408				};
409			};
410
411			vdd_log_s0: dcdc-reg3 {
412				regulator-name = "vdd_log_s0";
413				regulator-always-on;
414				regulator-boot-on;
415				regulator-min-microvolt = <675000>;
416				regulator-max-microvolt = <750000>;
417				regulator-ramp-delay = <12500>;
418
419				regulator-state-mem {
420					regulator-off-in-suspend;
421					regulator-suspend-microvolt = <750000>;
422				};
423			};
424
425			vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
426				regulator-name = "vdd_vdenc_s0";
427				regulator-always-on;
428				regulator-boot-on;
429				regulator-min-microvolt = <550000>;
430				regulator-max-microvolt = <950000>;
431				regulator-init-microvolt = <750000>;
432				regulator-ramp-delay = <12500>;
433
434				regulator-state-mem {
435					regulator-off-in-suspend;
436				};
437			};
438
439			vdd_ddr_s0: dcdc-reg5 {
440				regulator-name = "vdd_ddr_s0";
441				regulator-always-on;
442				regulator-boot-on;
443				regulator-min-microvolt = <675000>;
444				regulator-max-microvolt = <900000>;
445				regulator-ramp-delay = <12500>;
446
447				regulator-state-mem {
448					regulator-off-in-suspend;
449					regulator-suspend-microvolt = <850000>;
450				};
451			};
452
453			vdd2_ddr_s3: dcdc-reg6 {
454				regulator-name = "vdd2_ddr_s3";
455				regulator-always-on;
456				regulator-boot-on;
457
458				regulator-state-mem {
459					regulator-on-in-suspend;
460				};
461			};
462
463			vcc_2v0_pldo_s3: dcdc-reg7 {
464				regulator-name = "vdd_2v0_pldo_s3";
465				regulator-always-on;
466				regulator-boot-on;
467				regulator-min-microvolt = <2000000>;
468				regulator-max-microvolt = <2000000>;
469
470				regulator-state-mem {
471					regulator-on-in-suspend;
472					regulator-suspend-microvolt = <2000000>;
473				};
474			};
475
476			vcc_3v3_s3: dcdc-reg8 {
477				regulator-name = "vcc_3v3_s3";
478				regulator-always-on;
479				regulator-boot-on;
480				regulator-min-microvolt = <3300000>;
481				regulator-max-microvolt = <3300000>;
482
483				regulator-state-mem {
484					regulator-on-in-suspend;
485					regulator-suspend-microvolt = <3300000>;
486				};
487			};
488
489			vddq_ddr_s0: dcdc-reg9 {
490				regulator-name = "vddq_ddr_s0";
491				regulator-always-on;
492				regulator-boot-on;
493
494				regulator-state-mem {
495					regulator-off-in-suspend;
496				};
497			};
498
499			vcc_1v8_s3: dcdc-reg10 {
500				regulator-name = "vcc_1v8_s3";
501				regulator-always-on;
502				regulator-boot-on;
503				regulator-min-microvolt = <1800000>;
504				regulator-max-microvolt = <1800000>;
505
506				regulator-state-mem {
507					regulator-on-in-suspend;
508					regulator-suspend-microvolt = <1800000>;
509				};
510			};
511
512			avcc_1v8_s0: pldo-reg1 {
513				regulator-name = "avcc_1v8_s0";
514				regulator-always-on;
515				regulator-boot-on;
516				regulator-min-microvolt = <1800000>;
517				regulator-max-microvolt = <1800000>;
518
519				regulator-state-mem {
520					regulator-off-in-suspend;
521				};
522			};
523
524			vcc_1v8_s0: pldo-reg2 {
525				regulator-name = "vcc_1v8_s0";
526				regulator-always-on;
527				regulator-boot-on;
528				regulator-min-microvolt = <1800000>;
529				regulator-max-microvolt = <1800000>;
530
531				regulator-state-mem {
532					regulator-off-in-suspend;
533					regulator-suspend-microvolt = <1800000>;
534				};
535			};
536
537			avdd_1v2_s0: pldo-reg3 {
538				regulator-name = "avdd_1v2_s0";
539				regulator-always-on;
540				regulator-boot-on;
541				regulator-min-microvolt = <1200000>;
542				regulator-max-microvolt = <1200000>;
543
544				regulator-state-mem {
545					regulator-off-in-suspend;
546				};
547			};
548
549			vcc_3v3_s0: pldo-reg4 {
550				regulator-name = "vcc_3v3_s0";
551				regulator-always-on;
552				regulator-boot-on;
553				regulator-min-microvolt = <3300000>;
554				regulator-max-microvolt = <3300000>;
555
556				regulator-state-mem {
557					regulator-off-in-suspend;
558				};
559			};
560
561			vccio_sd_s0: pldo-reg5 {
562				regulator-name = "vccio_sd_s0";
563				regulator-always-on;
564				regulator-boot-on;
565				regulator-min-microvolt = <1800000>;
566				regulator-max-microvolt = <3300000>;
567
568				regulator-state-mem {
569					regulator-off-in-suspend;
570				};
571			};
572
573			pldo6_s3: pldo-reg6 {
574				regulator-name = "pldo6_s3";
575				regulator-always-on;
576				regulator-boot-on;
577				regulator-min-microvolt = <1800000>;
578				regulator-max-microvolt = <1800000>;
579
580				regulator-state-mem {
581					regulator-on-in-suspend;
582					regulator-suspend-microvolt = <1800000>;
583				};
584			};
585
586			vdd_0v75_s3: nldo-reg1 {
587				regulator-name = "vdd_0v75_s3";
588				regulator-always-on;
589				regulator-boot-on;
590				regulator-min-microvolt = <750000>;
591				regulator-max-microvolt = <750000>;
592
593				regulator-state-mem {
594					regulator-on-in-suspend;
595					regulator-suspend-microvolt = <750000>;
596				};
597			};
598
599			vdd_ddr_pll_s0: nldo-reg2 {
600				regulator-name = "vdd_ddr_pll_s0";
601				regulator-always-on;
602				regulator-boot-on;
603				regulator-min-microvolt = <850000>;
604				regulator-max-microvolt = <850000>;
605
606				regulator-state-mem {
607					regulator-off-in-suspend;
608					regulator-suspend-microvolt = <850000>;
609				};
610			};
611
612			avdd_0v75_s0: nldo-reg3 {
613				regulator-name = "avdd_0v75_s0";
614				regulator-always-on;
615				regulator-boot-on;
616				regulator-min-microvolt = <837500>;
617				regulator-max-microvolt = <837500>;
618
619				regulator-state-mem {
620					regulator-off-in-suspend;
621				};
622			};
623
624			vdd_0v85_s0: nldo-reg4 {
625				regulator-name = "vdd_0v85_s0";
626				regulator-always-on;
627				regulator-boot-on;
628				regulator-min-microvolt = <850000>;
629				regulator-max-microvolt = <850000>;
630
631				regulator-state-mem {
632					regulator-off-in-suspend;
633				};
634			};
635
636			vdd_0v75_s0: nldo-reg5 {
637				regulator-name = "vdd_0v75_s0";
638				regulator-always-on;
639				regulator-boot-on;
640				regulator-min-microvolt = <750000>;
641				regulator-max-microvolt = <750000>;
642
643				regulator-state-mem {
644					regulator-off-in-suspend;
645				};
646			};
647		};
648	};
649};
650
651&u2phy2 {
652	status = "okay";
653};
654
655&u2phy2_host {
656	phy-supply = <&vcc5v0_host>;
657	status = "okay";
658};
659
660&u2phy3 {
661	status = "okay";
662};
663
664&u2phy3_host {
665	phy-supply = <&vcc5v0_host>;
666	status = "okay";
667};
668
669&uart2 {
670	pinctrl-0 = <&uart2m0_xfer>;
671	status = "okay";
672};
673
674&usb_host0_ehci {
675	status = "okay";
676};
677
678&usb_host0_ohci {
679	status = "okay";
680};
681
682&usb_host1_ehci {
683	status = "okay";
684};
685
686&usb_host1_ohci {
687	status = "okay";
688};
689