1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3/dts-v1/;
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/pinctrl/rockchip.h>
7#include "rk3566.dtsi"
8
9/ {
10	model = "Firefly Station M2";
11	compatible = "firefly,rk3566-roc-pc", "rockchip,rk3566";
12
13	aliases {
14		mmc0 = &sdmmc0;
15		mmc1 = &sdhci;
16		mmc2 = &sdmmc1;
17	};
18
19	chosen: chosen {
20		stdout-path = "serial2:1500000n8";
21	};
22
23	gmac1_clkin: external-gmac1-clock {
24		compatible = "fixed-clock";
25		clock-frequency = <125000000>;
26		clock-output-names = "gmac1_clkin";
27		#clock-cells = <0>;
28	};
29
30	leds {
31		compatible = "gpio-leds";
32
33		led-user {
34			label = "user-led";
35			default-state = "on";
36			gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
37			linux,default-trigger = "heartbeat";
38			pinctrl-names = "default";
39			pinctrl-0 = <&user_led_enable_h>;
40			retain-state-suspended;
41		};
42	};
43
44	sdio_pwrseq: sdio-pwrseq {
45		status = "okay";
46		compatible = "mmc-pwrseq-simple";
47		clocks = <&rk809 1>;
48		clock-names = "ext_clock";
49		pinctrl-names = "default";
50		pinctrl-0 = <&wifi_enable_h>;
51		reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
52	};
53
54	usb_5v: usb-5v-regulator {
55		compatible = "regulator-fixed";
56		regulator-name = "usb_5v";
57		regulator-always-on;
58		regulator-boot-on;
59		regulator-min-microvolt = <5000000>;
60		regulator-max-microvolt = <5000000>;
61	};
62
63	vcc5v0_sys: vcc5v0-sys-regulator {
64		compatible = "regulator-fixed";
65		regulator-name = "vcc5v0_sys";
66		regulator-always-on;
67		regulator-boot-on;
68		regulator-min-microvolt = <5000000>;
69		regulator-max-microvolt = <5000000>;
70		vin-supply = <&usb_5v>;
71	};
72
73	vcc3v3_sys: vcc3v3-sys-regulator {
74		compatible = "regulator-fixed";
75		regulator-name = "vcc3v3_sys";
76		regulator-min-microvolt = <3300000>;
77		regulator-max-microvolt = <3300000>;
78		regulator-always-on;
79		vin-supply = <&vcc5v0_sys>;
80	};
81
82	vcc5v0_usb30_host: vcc5v0-usb30-host-regulator {
83		compatible = "regulator-fixed";
84		regulator-name = "vcc5v0_usb30_host";
85		enable-active-high;
86		gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>;
87		pinctrl-names = "default";
88		pinctrl-0 = <&vcc5v0_usb30_host_en_h>;
89		regulator-always-on;
90		regulator-min-microvolt = <5000000>;
91		regulator-max-microvolt = <5000000>;
92		vin-supply = <&vcc5v0_sys>;
93	};
94
95	vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
96		compatible = "regulator-fixed";
97		regulator-name = "vcc5v0_usb_otg";
98		enable-active-high;
99		gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
100		pinctrl-names = "default";
101		pinctrl-0 = <&vcc5v0_usb_otg_en_h>;
102		regulator-always-on;
103		regulator-min-microvolt = <5000000>;
104		regulator-max-microvolt = <5000000>;
105		vin-supply = <&vcc5v0_sys>;
106	};
107};
108
109&combphy1 {
110	status = "okay";
111};
112
113&cpu0 {
114	cpu-supply = <&vdd_cpu>;
115};
116
117&cpu1 {
118	cpu-supply = <&vdd_cpu>;
119};
120
121&cpu2 {
122	cpu-supply = <&vdd_cpu>;
123};
124
125&cpu3 {
126	cpu-supply = <&vdd_cpu>;
127};
128
129&gmac1 {
130	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>;
131	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru SCLK_GMAC1>, <&gmac1_clkin>;
132	clock_in_out = "input";
133	phy-mode = "rgmii-id";
134	phy-supply = <&vcc_3v3>;
135	pinctrl-names = "default";
136	pinctrl-0 = <&gmac1m0_miim
137		     &gmac1m0_tx_bus2
138		     &gmac1m0_rx_bus2
139		     &gmac1m0_rgmii_clk
140		     &gmac1m0_clkinout
141		     &gmac1m0_rgmii_bus>;
142	snps,reset-gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;
143	snps,reset-active-low;
144	/* Reset time is 20ms, 100ms for rtl8211f */
145	snps,reset-delays-us = <0 20000 100000>;
146	tx_delay = <0x4f>;
147	rx_delay = <0x24>;
148	phy-handle = <&rgmii_phy1>;
149	status = "okay";
150};
151
152&i2c0 {
153	status = "okay";
154
155	vdd_cpu: regulator@1c {
156		compatible = "tcs,tcs4525";
157		reg = <0x1c>;
158		fcs,suspend-voltage-selector = <1>;
159		regulator-name = "vdd_cpu";
160		regulator-min-microvolt = <800000>;
161		regulator-max-microvolt = <1150000>;
162		regulator-ramp-delay = <2300>;
163		regulator-always-on;
164		regulator-boot-on;
165		vin-supply = <&vcc5v0_sys>;
166
167		regulator-state-mem {
168			regulator-off-in-suspend;
169		};
170	};
171
172	rk809: pmic@20 {
173		compatible = "rockchip,rk809";
174		reg = <0x20>;
175		interrupt-parent = <&gpio0>;
176		interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>;
177		clock-output-names = "rk808-clkout1", "rk808-clkout2";
178
179		pinctrl-names = "default";
180		pinctrl-0 = <&pmic_int>;
181		rockchip,system-power-controller;
182		wakeup-source;
183		#clock-cells = <1>;
184
185		vcc1-supply = <&vcc3v3_sys>;
186		vcc2-supply = <&vcc3v3_sys>;
187		vcc3-supply = <&vcc3v3_sys>;
188		vcc4-supply = <&vcc3v3_sys>;
189		vcc5-supply = <&vcc3v3_sys>;
190		vcc6-supply = <&vcc3v3_sys>;
191		vcc7-supply = <&vcc3v3_sys>;
192		vcc8-supply = <&vcc3v3_sys>;
193		vcc9-supply = <&vcc3v3_sys>;
194
195		regulators {
196			vdd_log: DCDC_REG1 {
197				regulator-name = "vdd_log";
198				regulator-always-on;
199				regulator-boot-on;
200				regulator-min-microvolt = <500000>;
201				regulator-max-microvolt = <1350000>;
202				regulator-init-microvolt = <900000>;
203				regulator-ramp-delay = <6001>;
204
205				regulator-state-mem {
206					regulator-on-in-suspend;
207					regulator-suspend-microvolt = <900000>;
208				};
209			};
210
211			vdd_gpu: DCDC_REG2 {
212				regulator-name = "vdd_gpu";
213				regulator-min-microvolt = <900000>;
214				regulator-max-microvolt = <1350000>;
215				regulator-init-microvolt = <900000>;
216				regulator-ramp-delay = <6001>;
217
218				regulator-state-mem {
219					regulator-off-in-suspend;
220					regulator-suspend-microvolt = <900000>;
221				};
222			};
223
224			vcc_ddr: DCDC_REG3 {
225				regulator-name = "vcc_ddr";
226				regulator-always-on;
227				regulator-boot-on;
228				regulator-min-microvolt = <1100000>;
229				regulator-max-microvolt = <1100000>;
230				regulator-initial-mode = <0x2>;
231				regulator-state-mem {
232					regulator-on-in-suspend;
233				};
234			};
235
236			vdd_npu: DCDC_REG4 {
237				regulator-name = "vdd_npu";
238				regulator-min-microvolt = <900000>;
239				regulator-max-microvolt = <1350000>;
240				regulator-initial-mode = <0x2>;
241				regulator-state-mem {
242					regulator-off-in-suspend;
243				};
244			};
245
246			vcc_1v8: DCDC_REG5 {
247				regulator-name = "vcc_1v8";
248				regulator-always-on;
249				regulator-boot-on;
250				regulator-min-microvolt = <1800000>;
251				regulator-max-microvolt = <1800000>;
252
253				regulator-state-mem {
254					regulator-on-in-suspend;
255					regulator-suspend-microvolt = <1800000>;
256				};
257			};
258
259			vdda0v9_image: LDO_REG1 {
260				regulator-name = "vdda0v9_image";
261				regulator-always-on;
262				regulator-boot-on;
263				regulator-min-microvolt = <900000>;
264				regulator-max-microvolt = <900000>;
265
266				regulator-state-mem {
267					regulator-on-in-suspend;
268					regulator-suspend-microvolt = <900000>;
269				};
270			};
271
272			vdda_0v9: LDO_REG2 {
273				regulator-name = "vdda_0v9";
274				regulator-always-on;
275				regulator-boot-on;
276				regulator-min-microvolt = <900000>;
277				regulator-max-microvolt = <900000>;
278
279				regulator-state-mem {
280					regulator-on-in-suspend;
281					regulator-suspend-microvolt = <900000>;
282				};
283			};
284
285			vdda0v9_pmu: LDO_REG3 {
286				regulator-name = "vdda0v9_pmu";
287				regulator-always-on;
288				regulator-boot-on;
289				regulator-min-microvolt = <900000>;
290				regulator-max-microvolt = <900000>;
291				regulator-state-mem {
292					regulator-on-in-suspend;
293					regulator-suspend-microvolt = <900000>;
294				};
295			};
296
297			vccio_acodec: LDO_REG4 {
298				regulator-name = "vccio_acodec";
299				regulator-always-on;
300				regulator-boot-on;
301				regulator-min-microvolt = <3300000>;
302				regulator-max-microvolt = <3300000>;
303
304				regulator-state-mem {
305					regulator-on-in-suspend;
306					regulator-suspend-microvolt = <3300000>;
307
308				};
309			};
310
311			vccio_sd: LDO_REG5 {
312				regulator-name = "vccio_sd";
313				regulator-always-on;
314				regulator-boot-on;
315				regulator-min-microvolt = <1800000>;
316				regulator-max-microvolt = <3300000>;
317
318				regulator-state-mem {
319					regulator-on-in-suspend;
320					regulator-suspend-microvolt = <3300000>;
321				};
322			};
323
324			vcc3v3_pmu: LDO_REG6 {
325				regulator-name = "vcc3v3_pmu";
326				regulator-always-on;
327				regulator-boot-on;
328				regulator-min-microvolt = <3300000>;
329				regulator-max-microvolt = <3300000>;
330
331				regulator-state-mem {
332					regulator-on-in-suspend;
333					regulator-suspend-microvolt = <3300000>;
334				};
335			};
336
337			vcca_1v8: LDO_REG7 {
338				regulator-name = "vcca_1v8";
339				regulator-always-on;
340				regulator-boot-on;
341				regulator-min-microvolt = <1800000>;
342				regulator-max-microvolt = <1800000>;
343
344				regulator-state-mem {
345					regulator-on-in-suspend;
346					regulator-suspend-microvolt = <1800000>;
347				};
348			};
349
350			vcca1v8_pmu: LDO_REG8 {
351				regulator-name = "vcca1v8_pmu";
352				regulator-always-on;
353				regulator-boot-on;
354				regulator-min-microvolt = <1800000>;
355				regulator-max-microvolt = <1800000>;
356
357				regulator-state-mem {
358					regulator-on-in-suspend;
359					regulator-suspend-microvolt = <1800000>;
360				};
361			};
362
363			vcca1v8_image: LDO_REG9 {
364				regulator-name = "vcca1v8_image";
365				regulator-always-on;
366				regulator-boot-on;
367				regulator-min-microvolt = <1800000>;
368				regulator-max-microvolt = <1800000>;
369
370				regulator-state-mem {
371					regulator-on-in-suspend;
372					regulator-suspend-microvolt = <1800000>;
373				};
374			};
375
376			vcc_3v3: SWITCH_REG1 {
377				regulator-boot-on;
378				regulator-name = "vcc3v3";
379			};
380
381			vcc3v3_sd: SWITCH_REG2 {
382				regulator-name = "vcc3v3_sd";
383				regulator-always-on;
384				regulator-boot-on;
385			};
386		};
387	};
388};
389
390&i2c1 {
391	status = "okay";
392};
393
394&i2c2 {
395	status = "okay";
396};
397
398&i2c3 {
399	pinctrl-names = "default";
400	pinctrl-0 = <&i2c3m1_xfer>;
401	status = "okay";
402};
403
404&i2c5 {
405	status = "okay";
406};
407
408&mdio1 {
409	rgmii_phy1: ethernet-phy@0 {
410		compatible = "ethernet-phy-ieee802.3-c22";
411		reg = <0x0>;
412	};
413};
414
415&pinctrl {
416	bt {
417		bt_enable_h: bt-enable-h {
418			rockchip,pins = <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
419		};
420
421		bt_host_wake_l: bt-host-wake-l {
422			rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_down>;
423		};
424
425		bt_wake_l: bt-wake-l {
426			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
427		};
428	};
429
430	leds {
431		user_led_enable_h: user-led-enable-h {
432			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
433		};
434	};
435
436	pmic {
437		pmic_int: pmic_int {
438			rockchip,pins =
439				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
440		};
441	};
442
443	sdio-pwrseq {
444		wifi_enable_h: wifi-enable-h {
445			rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
446		};
447	};
448
449	usb {
450		vcc5v0_usb30_host_en_h: vcc5v0-usb30-host-en_h {
451			rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
452		};
453
454		vcc5v0_usb_otg_en_h: vcc5v0-usb-otg-en_h {
455			rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
456		};
457	};
458};
459
460&pmu_io_domains {
461	status = "okay";
462	pmuio1-supply = <&vcc3v3_pmu>;
463	pmuio2-supply = <&vcc3v3_pmu>;
464	vccio1-supply = <&vccio_acodec>;
465	vccio2-supply = <&vcc_1v8>;
466	vccio3-supply = <&vccio_sd>;
467	vccio4-supply = <&vcc_1v8>;
468	vccio5-supply = <&vcc_3v3>;
469	vccio6-supply = <&vcc_1v8>;
470	vccio7-supply = <&vcc_3v3>;
471};
472
473&sdhci {
474	bus-width = <8>;
475	mmc-hs200-1_8v;
476	non-removable;
477	vmmc-supply = <&vcc_3v3>;
478	vqmmc-supply = <&vcc_1v8>;
479	status = "okay";
480};
481
482&sdmmc0 {
483	bus-width = <4>;
484	cap-sd-highspeed;
485	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
486	disable-wp;
487	pinctrl-names = "default";
488	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
489	sd-uhs-sdr104;
490	vmmc-supply = <&vcc3v3_sd>;
491	vqmmc-supply = <&vccio_sd>;
492	status = "okay";
493};
494
495&sdmmc1 {
496	bus-width = <4>;
497	cap-sd-highspeed;
498	cap-sdio-irq;
499	keep-power-in-suspend;
500	mmc-pwrseq = <&sdio_pwrseq>;
501	vmmc-supply = <&vcc3v3_sys>;
502	vqmmc-supply = <&vcca1v8_pmu>;
503	pinctrl-names = "default";
504	pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
505	status = "okay";
506};
507
508&tsadc {
509	status = "okay";
510};
511
512&uart0 {
513	pinctrl-names = "default";
514	pinctrl-0 = <&uart0_xfer>;
515	status = "okay";
516};
517
518&uart1 {
519	pinctrl-names = "default";
520	pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>;
521	status = "okay";
522	uart-has-rtscts;
523
524	bluetooth {
525		compatible = "brcm,bcm43438-bt";
526		clocks = <&rk809 1>;
527		clock-names = "lpo";
528		device-wakeup-gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
529		host-wakeup-gpios = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>;
530		shutdown-gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
531		pinctrl-names = "default";
532		pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>;
533		vbat-supply = <&vcc3v3_sys>;
534		vddio-supply = <&vcca1v8_pmu>;
535	};
536};
537
538&uart2 {
539	status = "okay";
540};
541
542&usb2phy0_host {
543	phy-supply = <&vcc5v0_usb30_host>;
544	status = "okay";
545};
546
547&usb2phy0_otg {
548	phy-supply = <&vcc5v0_usb_otg>;
549	status = "okay";
550};
551
552&usb2phy1_otg {
553	phy-supply = <&vcc5v0_usb30_host>;
554	status = "okay";
555};
556
557&usb2phy0 {
558	status = "okay";
559};
560
561&usb2phy1 {
562	status = "okay";
563};
564
565&usb_host0_xhci {
566	status = "okay";
567};
568
569&usb_host1_xhci {
570	status = "okay";
571};
572
573&usb_host0_ehci {
574	status = "okay";
575};
576
577&usb_host0_ohci {
578	status = "okay";
579};
580