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