1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/dts-v1/;
3#include <dt-bindings/pwm/pwm.h>
4#include <dt-bindings/input/input.h>
5#include "rk3399.dtsi"
6#include "rk3399-opp.dtsi"
7
8/ {
9	model = "Hugsun X99 TV BOX";
10	compatible = "hugsun,x99", "rockchip,rk3399";
11
12	chosen {
13		stdout-path = "serial2:1500000n8";
14	};
15
16	clkin_gmac: external-gmac-clock {
17		compatible = "fixed-clock";
18		clock-frequency = <125000000>;
19		clock-output-names = "clkin_gmac";
20		#clock-cells = <0>;
21	};
22
23	dc_5v: dc-5v {
24		compatible = "regulator-fixed";
25		regulator-name = "dc_5v";
26		regulator-always-on;
27		regulator-boot-on;
28		regulator-min-microvolt = <5000000>;
29		regulator-max-microvolt = <5000000>;
30	};
31
32	ir-receiver {
33		compatible = "gpio-ir-receiver";
34		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
35		pinctrl-names = "default";
36		pinctrl-0 = <&ir_rx>;
37	};
38
39	leds {
40		compatible = "gpio-leds";
41		pinctrl-names = "default";
42		pinctrl-0 = <&power_led_pin>;
43
44		power_led: led-0 {
45			label = "blue:power";
46			gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;
47			default-state = "on";
48			linux,default-trigger = "default-on";
49		};
50	};
51
52	vcc_sys: vcc-sys {
53		compatible = "regulator-fixed";
54		regulator-name = "vcc_sys";
55		regulator-min-microvolt = <5000000>;
56		regulator-max-microvolt = <5000000>;
57		regulator-always-on;
58		vin-supply = <&dc_5v>;
59	};
60
61	vcc_phy: vcc-phy-regulator {
62		compatible = "regulator-fixed";
63		regulator-name = "vcc_phy";
64		regulator-always-on;
65		regulator-boot-on;
66	};
67
68	vcc1v8_s0: vcc1v8-s0 {
69		compatible = "regulator-fixed";
70		regulator-name = "vcc1v8_s0";
71		regulator-min-microvolt = <1800000>;
72		regulator-max-microvolt = <1800000>;
73		regulator-always-on;
74	};
75
76	vcc3v3_sys: vcc3v3-sys {
77		compatible = "regulator-fixed";
78		regulator-name = "vcc3v3_sys";
79		regulator-min-microvolt = <3300000>;
80		regulator-max-microvolt = <3300000>;
81		regulator-always-on;
82		vin-supply = <&vcc_sys>;
83	};
84
85	vcc5v0_host: vcc5v0-host-regulator {
86		compatible = "regulator-fixed";
87		enable-active-high;
88		gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
89		pinctrl-names = "default";
90		pinctrl-0 = <&host_vbus_drv>;
91		regulator-name = "vcc5v0_host";
92		regulator-always-on;
93	};
94
95	vcc5v0_typec: vcc5v0-typec-regulator {
96		compatible = "regulator-fixed";
97		enable-active-high;
98		gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
99		pinctrl-names = "default";
100		pinctrl-0 = <&vcc5v0_typec_en>;
101		regulator-name = "vcc5v0_typec";
102		regulator-always-on;
103		vin-supply = <&vcc5v0_usb>;
104	};
105
106	vcc5v0_usb: vcc5v0-usb {
107		compatible = "regulator-fixed";
108		regulator-name = "vcc5v0_usb";
109		regulator-always-on;
110		regulator-boot-on;
111		regulator-min-microvolt = <5000000>;
112		regulator-max-microvolt = <5000000>;
113		vin-supply = <&dc_5v>;
114	};
115
116	vdd_log: vdd-log {
117		compatible = "pwm-regulator";
118		pwms = <&pwm2 0 25000 1>;
119		pwm-supply = <&vcc_sys>;
120		regulator-name = "vdd_log";
121		regulator-min-microvolt = <800000>;
122		regulator-max-microvolt = <1400000>;
123		regulator-always-on;
124		regulator-boot-on;
125	};
126
127	sdio_pwrseq: sdio-pwrseq {
128		compatible = "mmc-pwrseq-simple";
129		clocks = <&rk808 1>;
130		clock-names = "ext_clock";
131		pinctrl-names = "default";
132		pinctrl-0 = <&wifi_reg_on_h>;
133		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
134	};
135
136};
137
138&cpu_l0 {
139	cpu-supply = <&vdd_cpu_l>;
140};
141
142&cpu_l1 {
143	cpu-supply = <&vdd_cpu_l>;
144};
145
146&cpu_l2 {
147	cpu-supply = <&vdd_cpu_l>;
148};
149
150&cpu_l3 {
151	cpu-supply = <&vdd_cpu_l>;
152};
153
154&cpu_b0 {
155	cpu-supply = <&vdd_cpu_b>;
156};
157
158&cpu_b1 {
159	cpu-supply = <&vdd_cpu_b>;
160};
161
162&emmc_phy {
163	status = "okay";
164};
165
166&gmac {
167	assigned-clocks = <&cru SCLK_RMII_SRC>;
168	assigned-clock-parents = <&clkin_gmac>;
169	clock_in_out = "input";
170	phy-supply = <&vcc_phy>;
171	phy-mode = "rgmii";
172	pinctrl-names = "default";
173	pinctrl-0 = <&rgmii_pins>;
174	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
175	snps,reset-active-low;
176	snps,reset-delays-us = <0 10000 50000>;
177	tx_delay = <0x28>;
178	rx_delay = <0x11>;
179	status = "okay";
180};
181
182&gpu {
183	status = "okay";
184	mali-supply = <&vdd_gpu>;
185};
186
187&hdmi {
188	ddc-i2c-bus = <&i2c3>;
189	pinctrl-names = "default";
190	pinctrl-0 = <&hdmi_cec>;
191	status = "okay";
192};
193
194&hdmi_sound {
195	status = "okay";
196};
197
198&i2c0 {
199	status = "okay";
200	i2c-scl-rising-time-ns = <180>;
201	i2c-scl-falling-time-ns = <30>;
202	clock-frequency = <400000>;
203
204	vdd_cpu_b: syr827@40 {
205		compatible = "silergy,syr827";
206		reg = <0x40>;
207		regulator-compatible = "fan53555-reg";
208		pinctrl-0 = <&vsel1_pin>;
209		regulator-name = "vdd_cpu_b";
210		regulator-min-microvolt = <712500>;
211		regulator-max-microvolt = <1500000>;
212		regulator-ramp-delay = <1000>;
213		fcs,suspend-voltage-selector = <1>;
214		regulator-always-on;
215		regulator-boot-on;
216		vin-supply = <&vcc_sys>;
217		regulator-state-mem {
218			regulator-off-in-suspend;
219		};
220	};
221
222	vdd_gpu: syr828@41 {
223		compatible = "silergy,syr828";
224		reg = <0x41>;
225		regulator-compatible = "fan53555-reg";
226		pinctrl-0 = <&vsel2_pin>;
227		regulator-name = "vdd_gpu";
228		regulator-min-microvolt = <712500>;
229		regulator-max-microvolt = <1500000>;
230		regulator-ramp-delay = <1000>;
231		fcs,suspend-voltage-selector = <1>;
232		regulator-always-on;
233		regulator-boot-on;
234		vin-supply = <&vcc_sys>;
235		regulator-initial-mode = <1>;
236		regulator-state-mem {
237			regulator-off-in-suspend;
238		};
239	};
240
241	rk808: pmic@1b {
242		compatible = "rockchip,rk808";
243		reg = <0x1b>;
244		interrupt-parent = <&gpio1>;
245		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
246		pinctrl-names = "default";
247		pinctrl-0 = <&pmic_int_l>;
248		rockchip,system-power-controller;
249		wakeup-source;
250		#clock-cells = <1>;
251		clock-output-names = "xin32k", "rtc_clko_wifi";
252
253		vcc1-supply = <&vcc_sys>;
254		vcc2-supply = <&vcc_sys>;
255		vcc3-supply = <&vcc_sys>;
256		vcc4-supply = <&vcc_sys>;
257		vcc6-supply = <&vcc_sys>;
258		vcc7-supply = <&vcc_sys>;
259		vcc8-supply = <&vcc3v3_sys>;
260		vcc9-supply = <&vcc_sys>;
261		vcc10-supply = <&vcc_sys>;
262		vcc11-supply = <&vcc_sys>;
263		vcc12-supply = <&vcc3v3_sys>;
264		vddio-supply = <&vcc_1v8>;
265
266		regulators {
267			vdd_center: DCDC_REG1 {
268				regulator-name = "vdd_center";
269				regulator-min-microvolt = <900000>;
270				regulator-max-microvolt = <900000>;
271				regulator-ramp-delay = <6001>;
272				regulator-always-on;
273				regulator-boot-on;
274				regulator-state-mem {
275					regulator-off-in-suspend;
276				};
277			};
278
279			vdd_cpu_l: DCDC_REG2 {
280				regulator-name = "vdd_cpu_l";
281				regulator-min-microvolt = <750000>;
282				regulator-max-microvolt = <1350000>;
283				regulator-ramp-delay = <6001>;
284				regulator-always-on;
285				regulator-boot-on;
286				regulator-state-mem {
287					regulator-off-in-suspend;
288				};
289			};
290
291			vcc_ddr: DCDC_REG3 {
292				regulator-name = "vcc_ddr";
293				regulator-always-on;
294				regulator-boot-on;
295				regulator-state-mem {
296					regulator-on-in-suspend;
297				};
298			};
299
300			vcc_1v8: DCDC_REG4 {
301				regulator-name = "vcc_1v8";
302				regulator-min-microvolt = <1800000>;
303				regulator-max-microvolt = <1800000>;
304				regulator-always-on;
305				regulator-boot-on;
306				regulator-state-mem {
307					regulator-on-in-suspend;
308					regulator-suspend-microvolt = <1800000>;
309				};
310			};
311
312			vcc1v8_dvp: LDO_REG1 {
313				regulator-name = "vcc1v8_dvp";
314				regulator-min-microvolt = <1800000>;
315				regulator-max-microvolt = <1800000>;
316				regulator-always-on;
317				regulator-boot-on;
318				regulator-state-mem {
319					regulator-on-in-suspend;
320					regulator-suspend-microvolt = <1800000>;
321				};
322			};
323
324			vcca1v8_hdmi: LDO_REG2 {
325				regulator-name = "vcca1v8_hdmi";
326				regulator-min-microvolt = <1800000>;
327				regulator-max-microvolt = <1800000>;
328				regulator-always-on;
329				regulator-boot-on;
330				regulator-state-mem {
331					regulator-on-in-suspend;
332					regulator-suspend-microvolt = <1800000>;
333				};
334			};
335
336			vcca_1v8: LDO_REG3 {
337				regulator-name = "vcca_1v8";
338				regulator-min-microvolt = <1800000>;
339				regulator-max-microvolt = <1800000>;
340				regulator-always-on;
341				regulator-boot-on;
342				regulator-state-mem {
343					regulator-on-in-suspend;
344					regulator-suspend-microvolt = <1800000>;
345				};
346			};
347
348			vcc_sd: LDO_REG4 {
349				regulator-name = "vcc_sd";
350				regulator-min-microvolt = <1800000>;
351				regulator-max-microvolt = <3300000>;
352				regulator-always-on;
353				regulator-boot-on;
354				regulator-state-mem {
355					regulator-on-in-suspend;
356					regulator-suspend-microvolt = <3300000>;
357				};
358			};
359
360			vcc3v0_sd: LDO_REG5 {
361				regulator-name = "vcc3v0_sd";
362				regulator-min-microvolt = <3000000>;
363				regulator-max-microvolt = <3000000>;
364				regulator-always-on;
365				regulator-boot-on;
366				regulator-state-mem {
367					regulator-on-in-suspend;
368					regulator-suspend-microvolt = <3000000>;
369				};
370			};
371
372			vcc_1v5: LDO_REG6 {
373				regulator-name = "vcc_1v5";
374				regulator-min-microvolt = <1500000>;
375				regulator-max-microvolt = <1500000>;
376				regulator-always-on;
377				regulator-boot-on;
378				regulator-state-mem {
379					regulator-on-in-suspend;
380					regulator-suspend-microvolt = <1500000>;
381				};
382			};
383
384			vcca0v9_hdmi: LDO_REG7 {
385				regulator-name = "vcca0v9_hdmi";
386				regulator-min-microvolt = <900000>;
387				regulator-max-microvolt = <900000>;
388				regulator-always-on;
389				regulator-boot-on;
390				regulator-state-mem {
391					regulator-on-in-suspend;
392					regulator-suspend-microvolt = <900000>;
393				};
394			};
395
396			vcc_3v0: LDO_REG8 {
397				regulator-name = "vcc_3v0";
398				regulator-min-microvolt = <3000000>;
399				regulator-max-microvolt = <3000000>;
400				regulator-always-on;
401				regulator-boot-on;
402				regulator-state-mem {
403					regulator-on-in-suspend;
404					regulator-suspend-microvolt = <3000000>;
405				};
406			};
407
408			vcc3v3_s3: SWITCH_REG1 {
409				regulator-name = "vcc3v3_s3";
410				regulator-always-on;
411				regulator-boot-on;
412				regulator-state-mem {
413					regulator-on-in-suspend;
414				};
415			};
416
417			vcc3v3_s0: SWITCH_REG2 {
418				regulator-name = "vcc3v3_s0";
419				regulator-always-on;
420				regulator-boot-on;
421				regulator-state-mem {
422					regulator-on-in-suspend;
423				};
424			};
425		};
426	};
427};
428
429&i2c1 {
430	i2c-scl-rising-time-ns = <300>;
431	i2c-scl-falling-time-ns = <15>;
432	status = "okay";
433};
434
435&i2c3 {
436	i2c-scl-rising-time-ns = <450>;
437	i2c-scl-falling-time-ns = <15>;
438	status = "okay";
439};
440
441&i2c4 {
442	i2c-scl-rising-time-ns = <600>;
443	i2c-scl-falling-time-ns = <40>;
444	status = "okay";
445
446	fusb0: typec-portc@22 {
447		compatible = "fcs,fusb302";
448		reg = <0x22>;
449		interrupt-parent = <&gpio1>;
450		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
451		pinctrl-names = "default";
452		pinctrl-0 = <&fusb0_int>;
453		vbus-supply = <&vcc5v0_typec>;
454		status = "okay";
455	};
456};
457
458&i2c7 {
459	status = "okay";
460};
461
462&i2s0 {
463	rockchip,playback-channels = <8>;
464	rockchip,capture-channels = <8>;
465	status = "okay";
466};
467
468&i2s1 {
469	rockchip,playback-channels = <2>;
470	rockchip,capture-channels = <2>;
471	status = "okay";
472};
473
474&i2s2 {
475	status = "okay";
476};
477
478&io_domains {
479	status = "okay";
480	audio-supply = <&vcc1v8_s0>;
481	bt656-supply = <&vcc1v8_s0>;
482	gpio1830-supply = <&vcc_3v0>;
483	sdmmc-supply = <&vcc_sd>;
484};
485
486&pmu_io_domains {
487	status = "okay";
488	pmu1830-supply = <&vcc_1v8>;
489};
490
491&pinctrl {
492	fusb30x {
493		fusb0_int: fusb0-int {
494			rockchip,pins =
495				<1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
496		};
497	};
498
499	gmac {
500		rgmii_sleep_pins: rgmii-sleep-pins {
501			rockchip,pins =
502				<3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
503		};
504	};
505
506	ir {
507		ir_rx: ir-rx {
508			rockchip,pins = <0 RK_PA6 1 &pcfg_pull_none>;
509		};
510	};
511
512	leds {
513		power_led_pin: power-led-pin {
514			rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
515		};
516	};
517
518	pmic {
519		pmic_int_l: pmic-int-l {
520			rockchip,pins =
521				<1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
522		};
523
524		vsel1_pin: vsel1-pin {
525			rockchip,pins =
526				<1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
527		};
528
529		vsel2_pin: vsel2-pin {
530			rockchip,pins =
531				<1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
532		};
533	};
534
535	sdio {
536		bt_host_wake_l: bt-host-wake-l {
537			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
538		};
539
540		bt_reg_on_h: bt-reg-on-h {
541			/* external pullup to VCC1V8_PMUPLL */
542			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
543		};
544
545		bt_wake_l: bt-wake-l {
546			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
547		};
548
549		wifi_reg_on_h: wifi-reg_on-h {
550			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
551		};
552	};
553
554	wifi {
555		wifi_host_wake_l: wifi-host-wake-l {
556			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
557		};
558	};
559
560	usb-typec {
561		vcc5v0_typec_en: vcc5v0_typec_en {
562			rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
563		};
564	};
565
566	usb2 {
567		host_vbus_drv: host-vbus-drv {
568			rockchip,pins =
569				<4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
570		};
571	};
572};
573
574&pwm2 {
575	status = "okay";
576	pinctrl-0 = <&pwm2_pin_pull_down>;
577};
578
579&saradc {
580	vref-supply = <&vcc1v8_s0>;
581	status = "okay";
582};
583
584&sdmmc {
585	clock-frequency = <150000000>;
586	max-frequency = <150000000>;
587	bus-width = <4>;
588	cap-mmc-highspeed;
589	cap-sd-highspeed;
590	disable-wp;
591	vqmmc-supply = <&vcc_sd>;
592	pinctrl-names = "default";
593	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
594	card-detect-delay = <800>;
595	status = "okay";
596};
597
598&sdhci {
599	bus-width = <8>;
600	mmc-hs400-1_8v;
601	mmc-hs400-enhanced-strobe;
602	non-removable;
603	keep-power-in-suspend;
604	status = "okay";
605};
606
607&sdio0 {
608	bus-width = <4>;
609	clock-frequency = <50000000>;
610	cap-sdio-irq;
611	cap-sd-highspeed;
612	keep-power-in-suspend;
613	mmc-pwrseq = <&sdio_pwrseq>;
614	non-removable;
615	pinctrl-names = "default";
616	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
617	sd-uhs-sdr104;
618	#address-cells = <1>;
619	#size-cells = <0>;
620	status = "okay";
621
622	brcmf: wifi@1 {
623		compatible = "brcm,bcm4329-fmac";
624		reg = <1>;
625		interrupt-parent = <&gpio0>;
626		interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
627		interrupt-names = "host-wake";
628		pinctrl-names = "default";
629		pinctrl-0 = <&wifi_host_wake_l>;
630	};
631};
632
633&spdif {
634	status = "okay";
635	pinctrl-0 = <&spdif_bus_1>;
636};
637
638&spi1 {
639	status = "okay";
640
641	flash@0 {
642		compatible = "jedec,spi-nor";
643		#address-cells = <1>;
644		#size-cells = <1>;
645		reg = <0>;
646		spi-max-frequency = <10000000>;
647	};
648};
649
650&tcphy0 {
651	status = "okay";
652};
653
654&tcphy1 {
655	status = "okay";
656};
657
658&tsadc {
659	/* tshut mode 0:CRU 1:GPIO */
660	rockchip,hw-tshut-mode = <1>;
661	/* tshut polarity 0:LOW 1:HIGH */
662	rockchip,hw-tshut-polarity = <1>;
663	rockchip,hw-tshut-temp = <110000>;
664	status = "okay";
665};
666
667&u2phy0 {
668	status = "okay";
669
670	u2phy0_host: host-port {
671		phy-supply = <&vcc5v0_typec>;
672		status = "okay";
673	};
674
675	u2phy0_otg: otg-port {
676		status = "okay";
677	};
678};
679
680&u2phy1 {
681	status = "okay";
682
683	u2phy1_host: host-port {
684		phy-supply = <&vcc5v0_host>;
685		status = "okay";
686	};
687
688	u2phy1_otg: otg-port {
689		status = "okay";
690	};
691};
692
693&uart0 {
694	pinctrl-names = "default";
695	pinctrl-0 = <&uart0_xfer &uart0_rts &uart0_cts>;
696	status = "okay";
697
698	bluetooth {
699		compatible = "brcm,bcm43438-bt";
700		clocks = <&rk808 1>;
701		clock-names = "ext_clock";
702		device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
703		host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
704		shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
705		max-speed = <4000000>;
706		pinctrl-names = "default";
707		pinctrl-0 = <&bt_reg_on_h &bt_host_wake_l &bt_wake_l>;
708		vbat-supply = <&vcc3v3_sys>;
709		vddio-supply = <&vcc_1v8>;
710	};
711};
712
713&uart2 {
714	status = "okay";
715};
716
717&usb_host0_ehci {
718	status = "okay";
719};
720
721&usb_host0_ohci {
722	status = "okay";
723};
724
725&usb_host1_ehci {
726	status = "okay";
727};
728
729&usb_host1_ohci {
730	status = "okay";
731};
732
733&usbdrd3_0 {
734	status = "okay";
735};
736
737&usbdrd_dwc3_0 {
738	status = "okay";
739	dr_mode = "host";
740};
741
742&usbdrd3_1 {
743	status = "okay";
744};
745
746&usbdrd_dwc3_1 {
747	status = "okay";
748	dr_mode = "host";
749};
750
751&vopb {
752	status = "okay";
753};
754
755&vopb_mmu {
756	status = "okay";
757};
758