1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
4 */
5
6/dts-v1/;
7#include <dt-bindings/input/linux-event-codes.h>
8#include <dt-bindings/pwm/pwm.h>
9#include <dt-bindings/usb/pd.h>
10#include "rk3399.dtsi"
11#include "rk3399-opp.dtsi"
12
13/ {
14	model = "Firefly-RK3399 Board";
15	compatible = "firefly,firefly-rk3399", "rockchip,rk3399";
16
17	aliases {
18		mmc0 = &sdio0;
19		mmc1 = &sdmmc;
20		mmc2 = &sdhci;
21	};
22
23	chosen {
24		stdout-path = "serial2:1500000n8";
25	};
26
27	backlight: backlight {
28		compatible = "pwm-backlight";
29		enable-gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
30		pwms = <&pwm0 0 25000 0>;
31		brightness-levels = <
32			  0   1   2   3   4   5   6   7
33			  8   9  10  11  12  13  14  15
34			 16  17  18  19  20  21  22  23
35			 24  25  26  27  28  29  30  31
36			 32  33  34  35  36  37  38  39
37			 40  41  42  43  44  45  46  47
38			 48  49  50  51  52  53  54  55
39			 56  57  58  59  60  61  62  63
40			 64  65  66  67  68  69  70  71
41			 72  73  74  75  76  77  78  79
42			 80  81  82  83  84  85  86  87
43			 88  89  90  91  92  93  94  95
44			 96  97  98  99 100 101 102 103
45			104 105 106 107 108 109 110 111
46			112 113 114 115 116 117 118 119
47			120 121 122 123 124 125 126 127
48			128 129 130 131 132 133 134 135
49			136 137 138 139 140 141 142 143
50			144 145 146 147 148 149 150 151
51			152 153 154 155 156 157 158 159
52			160 161 162 163 164 165 166 167
53			168 169 170 171 172 173 174 175
54			176 177 178 179 180 181 182 183
55			184 185 186 187 188 189 190 191
56			192 193 194 195 196 197 198 199
57			200 201 202 203 204 205 206 207
58			208 209 210 211 212 213 214 215
59			216 217 218 219 220 221 222 223
60			224 225 226 227 228 229 230 231
61			232 233 234 235 236 237 238 239
62			240 241 242 243 244 245 246 247
63			248 249 250 251 252 253 254 255>;
64		default-brightness-level = <200>;
65	};
66
67	clkin_gmac: external-gmac-clock {
68		compatible = "fixed-clock";
69		clock-frequency = <125000000>;
70		clock-output-names = "clkin_gmac";
71		#clock-cells = <0>;
72	};
73
74	dc_12v: dc-12v {
75		compatible = "regulator-fixed";
76		regulator-name = "dc_12v";
77		regulator-always-on;
78		regulator-boot-on;
79		regulator-min-microvolt = <12000000>;
80		regulator-max-microvolt = <12000000>;
81	};
82
83	gpio-keys {
84		compatible = "gpio-keys";
85		autorepeat;
86		pinctrl-names = "default";
87		pinctrl-0 = <&pwrbtn>;
88
89		power {
90			debounce-interval = <100>;
91			gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
92			label = "GPIO Key Power";
93			linux,code = <KEY_POWER>;
94			wakeup-source;
95		};
96	};
97
98	ir-receiver {
99		compatible = "gpio-ir-receiver";
100		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
101		pinctrl-0 = <&ir_int>;
102		pinctrl-names = "default";
103	};
104
105	leds {
106		compatible = "gpio-leds";
107		pinctrl-names = "default";
108		pinctrl-0 = <&work_led_pin>, <&diy_led_pin>;
109
110		work_led: led-0 {
111			label = "work";
112			default-state = "on";
113			gpios = <&gpio2 RK_PD3 GPIO_ACTIVE_HIGH>;
114		};
115
116		diy_led: led-1 {
117			label = "diy";
118			default-state = "off";
119			gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
120		};
121	};
122
123	rt5640-sound {
124		compatible = "simple-audio-card";
125		simple-audio-card,name = "rockchip,rt5640-codec";
126		simple-audio-card,format = "i2s";
127		simple-audio-card,mclk-fs = <256>;
128		simple-audio-card,widgets =
129			"Microphone", "Mic Jack",
130			"Headphone", "Headphone Jack";
131		simple-audio-card,routing =
132			"Mic Jack", "MICBIAS1",
133			"IN1P", "Mic Jack",
134			"Headphone Jack", "HPOL",
135			"Headphone Jack", "HPOR";
136
137		simple-audio-card,cpu {
138			sound-dai = <&i2s1>;
139		};
140
141		simple-audio-card,codec {
142			sound-dai = <&rt5640>;
143		};
144	};
145
146	sdio_pwrseq: sdio-pwrseq {
147		compatible = "mmc-pwrseq-simple";
148		clocks = <&rk808 1>;
149		clock-names = "ext_clock";
150		pinctrl-names = "default";
151		pinctrl-0 = <&wifi_enable_h>;
152
153		/*
154		 * On the module itself this is one of these (depending
155		 * on the actual card populated):
156		 * - SDIO_RESET_L_WL_REG_ON
157		 * - PDN (power down when low)
158		 */
159		reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
160	};
161
162	sound-dit {
163		compatible = "audio-graph-card";
164		label = "SPDIF";
165		dais = <&spdif_p0>;
166	};
167
168	spdif-dit {
169		compatible = "linux,spdif-dit";
170		#sound-dai-cells = <0>;
171
172		port {
173			dit_p0_0: endpoint {
174				remote-endpoint = <&spdif_p0_0>;
175			};
176		};
177	};
178
179	/* switched by pmic_sleep */
180	vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
181		compatible = "regulator-fixed";
182		regulator-name = "vcc1v8_s3";
183		regulator-always-on;
184		regulator-boot-on;
185		regulator-min-microvolt = <1800000>;
186		regulator-max-microvolt = <1800000>;
187		vin-supply = <&vcc_1v8>;
188	};
189
190	vcc3v3_pcie: vcc3v3-pcie-regulator {
191		compatible = "regulator-fixed";
192		enable-active-high;
193		gpio = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
194		pinctrl-names = "default";
195		pinctrl-0 = <&pcie_pwr_en>;
196		regulator-name = "vcc3v3_pcie";
197		regulator-always-on;
198		regulator-boot-on;
199		vin-supply = <&dc_12v>;
200	};
201
202	vcc3v3_sys: vcc3v3-sys {
203		compatible = "regulator-fixed";
204		regulator-name = "vcc3v3_sys";
205		regulator-always-on;
206		regulator-boot-on;
207		regulator-min-microvolt = <3300000>;
208		regulator-max-microvolt = <3300000>;
209		vin-supply = <&vcc_sys>;
210	};
211
212	/* Actually 3 regulators (host0, 1, 2) controlled by the same gpio */
213	vcc5v0_host: vcc5v0-host-regulator {
214		compatible = "regulator-fixed";
215		enable-active-high;
216		gpio = <&gpio1 RK_PA0 GPIO_ACTIVE_HIGH>;
217		pinctrl-names = "default";
218		pinctrl-0 = <&vcc5v0_host_en>;
219		regulator-name = "vcc5v0_host";
220		regulator-always-on;
221		vin-supply = <&vcc_sys>;
222	};
223
224	vcc5v0_typec: vcc5v0-typec-regulator {
225		compatible = "regulator-fixed";
226		enable-active-high;
227		gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
228		pinctrl-names = "default";
229		pinctrl-0 = <&vcc5v0_typec_en>;
230		regulator-name = "vcc5v0_typec";
231		regulator-always-on;
232		vin-supply = <&vcc_sys>;
233	};
234
235	vcc_sys: vcc-sys {
236		compatible = "regulator-fixed";
237		regulator-name = "vcc_sys";
238		regulator-always-on;
239		regulator-boot-on;
240		regulator-min-microvolt = <5000000>;
241		regulator-max-microvolt = <5000000>;
242		vin-supply = <&dc_12v>;
243	};
244
245	vdd_log: vdd-log {
246		compatible = "pwm-regulator";
247		pwms = <&pwm2 0 25000 1>;
248		pwm-supply = <&vcc_sys>;
249		regulator-name = "vdd_log";
250		regulator-always-on;
251		regulator-boot-on;
252		regulator-min-microvolt = <430000>;
253		regulator-max-microvolt = <1400000>;
254	};
255};
256
257&cpu_l0 {
258	cpu-supply = <&vdd_cpu_l>;
259};
260
261&cpu_l1 {
262	cpu-supply = <&vdd_cpu_l>;
263};
264
265&cpu_l2 {
266	cpu-supply = <&vdd_cpu_l>;
267};
268
269&cpu_l3 {
270	cpu-supply = <&vdd_cpu_l>;
271};
272
273&cpu_b0 {
274	cpu-supply = <&vdd_cpu_b>;
275};
276
277&cpu_b1 {
278	cpu-supply = <&vdd_cpu_b>;
279};
280
281&emmc_phy {
282	status = "okay";
283};
284
285&gmac {
286	assigned-clocks = <&cru SCLK_RMII_SRC>;
287	assigned-clock-parents = <&clkin_gmac>;
288	clock_in_out = "input";
289	phy-supply = <&vcc_lan>;
290	phy-mode = "rgmii";
291	pinctrl-names = "default";
292	pinctrl-0 = <&rgmii_pins>;
293	snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
294	snps,reset-active-low;
295	snps,reset-delays-us = <0 10000 50000>;
296	tx_delay = <0x28>;
297	rx_delay = <0x11>;
298	status = "okay";
299};
300
301&gpu {
302	mali-supply = <&vdd_gpu>;
303	status = "okay";
304};
305
306&hdmi {
307	ddc-i2c-bus = <&i2c3>;
308	pinctrl-names = "default";
309	pinctrl-0 = <&hdmi_cec>;
310	status = "okay";
311};
312
313&i2c0 {
314	clock-frequency = <400000>;
315	i2c-scl-rising-time-ns = <168>;
316	i2c-scl-falling-time-ns = <4>;
317	status = "okay";
318
319	rk808: pmic@1b {
320		compatible = "rockchip,rk808";
321		reg = <0x1b>;
322		interrupt-parent = <&gpio1>;
323		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
324		#clock-cells = <1>;
325		clock-output-names = "xin32k", "rk808-clkout2";
326		pinctrl-names = "default";
327		pinctrl-0 = <&pmic_int_l>;
328		rockchip,system-power-controller;
329		wakeup-source;
330
331		vcc1-supply = <&vcc_sys>;
332		vcc2-supply = <&vcc_sys>;
333		vcc3-supply = <&vcc_sys>;
334		vcc4-supply = <&vcc_sys>;
335		vcc6-supply = <&vcc_sys>;
336		vcc7-supply = <&vcc_sys>;
337		vcc8-supply = <&vcc3v3_sys>;
338		vcc9-supply = <&vcc_sys>;
339		vcc10-supply = <&vcc_sys>;
340		vcc11-supply = <&vcc_sys>;
341		vcc12-supply = <&vcc3v3_sys>;
342		vddio-supply = <&vcc1v8_pmu>;
343
344		regulators {
345			vdd_center: DCDC_REG1 {
346				regulator-name = "vdd_center";
347				regulator-always-on;
348				regulator-boot-on;
349				regulator-min-microvolt = <750000>;
350				regulator-max-microvolt = <1350000>;
351				regulator-ramp-delay = <6001>;
352				regulator-state-mem {
353					regulator-off-in-suspend;
354				};
355			};
356
357			vdd_cpu_l: DCDC_REG2 {
358				regulator-name = "vdd_cpu_l";
359				regulator-always-on;
360				regulator-boot-on;
361				regulator-min-microvolt = <750000>;
362				regulator-max-microvolt = <1350000>;
363				regulator-ramp-delay = <6001>;
364				regulator-state-mem {
365					regulator-off-in-suspend;
366				};
367			};
368
369			vcc_ddr: DCDC_REG3 {
370				regulator-name = "vcc_ddr";
371				regulator-always-on;
372				regulator-boot-on;
373				regulator-state-mem {
374					regulator-on-in-suspend;
375				};
376			};
377
378			vcc_1v8: DCDC_REG4 {
379				regulator-name = "vcc_1v8";
380				regulator-always-on;
381				regulator-boot-on;
382				regulator-min-microvolt = <1800000>;
383				regulator-max-microvolt = <1800000>;
384				regulator-state-mem {
385					regulator-on-in-suspend;
386					regulator-suspend-microvolt = <1800000>;
387				};
388			};
389
390			vcc1v8_dvp: LDO_REG1 {
391				regulator-name = "vcc1v8_dvp";
392				regulator-always-on;
393				regulator-boot-on;
394				regulator-min-microvolt = <1800000>;
395				regulator-max-microvolt = <1800000>;
396				regulator-state-mem {
397					regulator-off-in-suspend;
398				};
399			};
400
401			vcc2v8_dvp: LDO_REG2 {
402				regulator-name = "vcc2v8_dvp";
403				regulator-always-on;
404				regulator-boot-on;
405				regulator-min-microvolt = <2800000>;
406				regulator-max-microvolt = <2800000>;
407				regulator-state-mem {
408					regulator-off-in-suspend;
409				};
410			};
411
412			vcc1v8_pmu: LDO_REG3 {
413				regulator-name = "vcc1v8_pmu";
414				regulator-always-on;
415				regulator-boot-on;
416				regulator-min-microvolt = <1800000>;
417				regulator-max-microvolt = <1800000>;
418				regulator-state-mem {
419					regulator-on-in-suspend;
420					regulator-suspend-microvolt = <1800000>;
421				};
422			};
423
424			vcc_sdio: LDO_REG4 {
425				regulator-name = "vcc_sdio";
426				regulator-always-on;
427				regulator-boot-on;
428				regulator-min-microvolt = <1800000>;
429				regulator-max-microvolt = <3000000>;
430				regulator-state-mem {
431					regulator-on-in-suspend;
432					regulator-suspend-microvolt = <3000000>;
433				};
434			};
435
436			vcca3v0_codec: LDO_REG5 {
437				regulator-name = "vcca3v0_codec";
438				regulator-always-on;
439				regulator-boot-on;
440				regulator-min-microvolt = <3000000>;
441				regulator-max-microvolt = <3000000>;
442				regulator-state-mem {
443					regulator-off-in-suspend;
444				};
445			};
446
447			vcc_1v5: LDO_REG6 {
448				regulator-name = "vcc_1v5";
449				regulator-always-on;
450				regulator-boot-on;
451				regulator-min-microvolt = <1500000>;
452				regulator-max-microvolt = <1500000>;
453				regulator-state-mem {
454					regulator-on-in-suspend;
455					regulator-suspend-microvolt = <1500000>;
456				};
457			};
458
459			vcca1v8_codec: LDO_REG7 {
460				regulator-name = "vcca1v8_codec";
461				regulator-always-on;
462				regulator-boot-on;
463				regulator-min-microvolt = <1800000>;
464				regulator-max-microvolt = <1800000>;
465				regulator-state-mem {
466					regulator-off-in-suspend;
467				};
468			};
469
470			vcc_3v0: LDO_REG8 {
471				regulator-name = "vcc_3v0";
472				regulator-always-on;
473				regulator-boot-on;
474				regulator-min-microvolt = <3000000>;
475				regulator-max-microvolt = <3000000>;
476				regulator-state-mem {
477					regulator-on-in-suspend;
478					regulator-suspend-microvolt = <3000000>;
479				};
480			};
481
482			vcc3v3_s3: vcc_lan: SWITCH_REG1 {
483				regulator-name = "vcc3v3_s3";
484				regulator-always-on;
485				regulator-boot-on;
486				regulator-state-mem {
487					regulator-off-in-suspend;
488				};
489			};
490
491			vcc3v3_s0: SWITCH_REG2 {
492				regulator-name = "vcc3v3_s0";
493				regulator-always-on;
494				regulator-boot-on;
495				regulator-state-mem {
496					regulator-off-in-suspend;
497				};
498			};
499		};
500	};
501
502	vdd_cpu_b: regulator@40 {
503		compatible = "silergy,syr827";
504		reg = <0x40>;
505		fcs,suspend-voltage-selector = <0>;
506		regulator-name = "vdd_cpu_b";
507		regulator-min-microvolt = <712500>;
508		regulator-max-microvolt = <1500000>;
509		regulator-ramp-delay = <1000>;
510		regulator-always-on;
511		regulator-boot-on;
512		vin-supply = <&vcc_sys>;
513
514		regulator-state-mem {
515			regulator-off-in-suspend;
516		};
517	};
518
519	vdd_gpu: regulator@41 {
520		compatible = "silergy,syr828";
521		reg = <0x41>;
522		fcs,suspend-voltage-selector = <1>;
523		regulator-name = "vdd_gpu";
524		regulator-min-microvolt = <712500>;
525		regulator-max-microvolt = <1500000>;
526		regulator-ramp-delay = <1000>;
527		regulator-always-on;
528		regulator-boot-on;
529		vin-supply = <&vcc_sys>;
530
531		regulator-state-mem {
532			regulator-off-in-suspend;
533		};
534	};
535};
536
537&i2c1 {
538	i2c-scl-rising-time-ns = <300>;
539	i2c-scl-falling-time-ns = <15>;
540	status = "okay";
541
542	rt5640: rt5640@1c {
543		compatible = "realtek,rt5640";
544		reg = <0x1c>;
545		clocks = <&cru SCLK_I2S_8CH_OUT>;
546		clock-names = "mclk";
547		realtek,in1-differential;
548		#sound-dai-cells = <0>;
549		pinctrl-names = "default";
550		pinctrl-0 = <&rt5640_hpcon>;
551	};
552};
553
554&i2c3 {
555	i2c-scl-rising-time-ns = <450>;
556	i2c-scl-falling-time-ns = <15>;
557	status = "okay";
558};
559
560&i2c4 {
561	i2c-scl-rising-time-ns = <600>;
562	i2c-scl-falling-time-ns = <20>;
563	status = "okay";
564
565	fusb0: typec-portc@22 {
566		compatible = "fcs,fusb302";
567		reg = <0x22>;
568		interrupt-parent = <&gpio1>;
569		interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
570		pinctrl-names = "default";
571		pinctrl-0 = <&fusb0_int>;
572		vbus-supply = <&vcc5v0_typec>;
573		status = "okay";
574
575		connector {
576			compatible = "usb-c-connector";
577			data-role = "host";
578			label = "USB-C";
579			op-sink-microwatt = <1000000>;
580			power-role = "dual";
581			sink-pdos =
582				<PDO_FIXED(5000, 2500, PDO_FIXED_USB_COMM)>;
583			source-pdos =
584				<PDO_FIXED(5000, 1400, PDO_FIXED_USB_COMM)>;
585			try-power-role = "sink";
586
587			ports {
588				#address-cells = <1>;
589				#size-cells = <0>;
590
591				port@0 {
592					reg = <0>;
593
594					usbc_hs: endpoint {
595						remote-endpoint =
596							<&u2phy0_typec_hs>;
597					};
598				};
599
600				port@1 {
601					reg = <1>;
602
603					usbc_ss: endpoint {
604						remote-endpoint =
605							<&tcphy0_typec_ss>;
606					};
607				};
608			};
609		};
610	};
611
612	accelerometer@68 {
613		compatible = "invensense,mpu6500";
614		reg = <0x68>;
615		interrupt-parent = <&gpio1>;
616		interrupts = <RK_PC6 IRQ_TYPE_EDGE_RISING>;
617	};
618};
619
620&i2s0 {
621	rockchip,playback-channels = <8>;
622	rockchip,capture-channels = <8>;
623	status = "okay";
624};
625
626&i2s1 {
627	rockchip,playback-channels = <2>;
628	rockchip,capture-channels = <2>;
629	status = "okay";
630};
631
632&i2s2 {
633	status = "okay";
634};
635
636&io_domains {
637	status = "okay";
638
639	bt656-supply = <&vcc1v8_dvp>;
640	audio-supply = <&vcca1v8_codec>;
641	sdmmc-supply = <&vcc_sdio>;
642	gpio1830-supply = <&vcc_3v0>;
643};
644
645&pcie_phy {
646	status = "okay";
647};
648
649&pcie0 {
650	ep-gpios = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
651	num-lanes = <4>;
652	pinctrl-names = "default";
653	pinctrl-0 = <&pcie_clkreqn_cpm>;
654	status = "okay";
655};
656
657&pmu_io_domains {
658	pmu1830-supply = <&vcc_3v0>;
659	status = "okay";
660};
661
662&pinctrl {
663	buttons {
664		pwrbtn: pwrbtn {
665			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
666		};
667	};
668
669	fusb302x {
670		fusb0_int: fusb0-int {
671			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
672		};
673	};
674
675	ir {
676		ir_int: ir-int {
677			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
678		};
679	};
680
681	lcd-panel {
682		lcd_panel_reset: lcd-panel-reset {
683			rockchip,pins = <4 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
684		};
685	};
686
687	leds {
688		work_led_pin: work-led-pin {
689			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
690		};
691
692		diy_led_pin: diy-led-pin {
693			rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
694		};
695	};
696
697	pcie {
698		pcie_pwr_en: pcie-pwr-en {
699			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
700		};
701
702		pcie_3g_drv: pcie-3g-drv {
703			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
704		};
705	};
706
707	pmic {
708		pmic_int_l: pmic-int-l {
709			rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
710		};
711
712		vsel1_pin: vsel1-pin {
713			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
714		};
715
716		vsel2_pin: vsel2-pin {
717			rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
718		};
719	};
720
721	rt5640 {
722		rt5640_hpcon: rt5640-hpcon {
723			rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
724		};
725	};
726
727	sdio-pwrseq {
728		wifi_enable_h: wifi-enable-h {
729			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
730		};
731	};
732
733	usb-typec {
734		vcc5v0_typec_en: vcc5v0_typec_en {
735			rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
736		};
737	};
738
739	usb2 {
740		vcc5v0_host_en: vcc5v0-host-en {
741			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
742		};
743	};
744
745	wifi {
746		wifi_host_wake_l: wifi-host-wake-l {
747			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
748		};
749	};
750};
751
752&pwm0 {
753	status = "okay";
754};
755
756&pwm2 {
757	status = "okay";
758};
759
760&saradc {
761	vref-supply = <&vcca1v8_s3>;
762	status = "okay";
763};
764
765&sdio0 {
766	/* WiFi & BT combo module Ampak AP6356S */
767	bus-width = <4>;
768	cap-sdio-irq;
769	cap-sd-highspeed;
770	keep-power-in-suspend;
771	mmc-pwrseq = <&sdio_pwrseq>;
772	non-removable;
773	pinctrl-names = "default";
774	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
775	sd-uhs-sdr104;
776
777	/* Power supply */
778	vqmmc-supply = <&vcc1v8_s3>;	/* IO line */
779	vmmc-supply = <&vcc_sdio>;	/* card's power */
780
781	#address-cells = <1>;
782	#size-cells = <0>;
783	status = "okay";
784
785	brcmf: wifi@1 {
786		reg = <1>;
787		compatible = "brcm,bcm4329-fmac";
788		interrupt-parent = <&gpio0>;
789		interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
790		interrupt-names = "host-wake";
791		brcm,drive-strength = <5>;
792		pinctrl-names = "default";
793		pinctrl-0 = <&wifi_host_wake_l>;
794	};
795};
796
797&sdmmc {
798	bus-width = <4>;
799	cap-mmc-highspeed;
800	cap-sd-highspeed;
801	cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
802	disable-wp;
803	max-frequency = <150000000>;
804	pinctrl-names = "default";
805	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
806	status = "okay";
807};
808
809&sdhci {
810	bus-width = <8>;
811	mmc-hs400-1_8v;
812	mmc-hs400-enhanced-strobe;
813	non-removable;
814	status = "okay";
815};
816
817&spdif {
818	pinctrl-0 = <&spdif_bus_1>;
819	status = "okay";
820
821	spdif_p0: port {
822		spdif_p0_0: endpoint {
823			remote-endpoint = <&dit_p0_0>;
824		};
825	};
826};
827
828&tcphy0 {
829	status = "okay";
830};
831
832&tcphy0_usb3 {
833	port {
834		tcphy0_typec_ss: endpoint {
835			remote-endpoint = <&usbc_ss>;
836		};
837	};
838};
839
840&tcphy1 {
841	status = "okay";
842};
843
844&tsadc {
845	/* tshut mode 0:CRU 1:GPIO */
846	rockchip,hw-tshut-mode = <1>;
847	/* tshut polarity 0:LOW 1:HIGH */
848	rockchip,hw-tshut-polarity = <1>;
849	status = "okay";
850};
851
852&u2phy0 {
853	status = "okay";
854
855	u2phy0_otg: otg-port {
856		status = "okay";
857	};
858
859	u2phy0_host: host-port {
860		phy-supply = <&vcc5v0_host>;
861		status = "okay";
862	};
863
864	port {
865		u2phy0_typec_hs: endpoint {
866			remote-endpoint = <&usbc_hs>;
867		};
868	};
869};
870
871&u2phy1 {
872	status = "okay";
873
874	u2phy1_otg: otg-port {
875		status = "okay";
876	};
877
878	u2phy1_host: host-port {
879		phy-supply = <&vcc5v0_host>;
880		status = "okay";
881	};
882};
883
884&uart0 {
885	pinctrl-names = "default";
886	pinctrl-0 = <&uart0_xfer &uart0_cts>;
887	status = "okay";
888};
889
890&uart2 {
891	status = "okay";
892};
893
894&usb_host0_ehci {
895	status = "okay";
896};
897
898&usb_host0_ohci {
899	status = "okay";
900};
901
902&usb_host1_ehci {
903	status = "okay";
904};
905
906&usb_host1_ohci {
907	status = "okay";
908};
909
910&usbdrd3_0 {
911	status = "okay";
912};
913
914&usbdrd_dwc3_0 {
915	status = "okay";
916	dr_mode = "otg";
917};
918
919&usbdrd3_1 {
920	status = "okay";
921};
922
923&usbdrd_dwc3_1 {
924	status = "okay";
925	dr_mode = "host";
926};
927
928&vopb {
929	status = "okay";
930};
931
932&vopb_mmu {
933	status = "okay";
934};
935
936&vopl {
937	status = "okay";
938};
939
940&vopl_mmu {
941	status = "okay";
942};
943