1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2017 T-Chip Intelligent Technology Co., Ltd
4 */
5
6/dts-v1/;
7#include "rk3328.dtsi"
8
9/ {
10	model = "Firefly roc-rk3328-cc";
11	compatible = "firefly,roc-rk3328-cc", "rockchip,rk3328";
12
13	aliases {
14		mmc0 = &sdmmc;
15		mmc1 = &emmc;
16	};
17
18	chosen {
19		stdout-path = "serial2:1500000n8";
20	};
21
22	gmac_clkin: external-gmac-clock {
23		compatible = "fixed-clock";
24		clock-frequency = <125000000>;
25		clock-output-names = "gmac_clkin";
26		#clock-cells = <0>;
27	};
28
29	dc_12v: dc-12v {
30		compatible = "regulator-fixed";
31		regulator-name = "dc_12v";
32		regulator-always-on;
33		regulator-boot-on;
34		regulator-min-microvolt = <12000000>;
35		regulator-max-microvolt = <12000000>;
36	};
37
38	vcc_sd: sdmmc-regulator {
39		compatible = "regulator-fixed";
40		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
41		pinctrl-names = "default";
42		pinctrl-0 = <&sdmmc0m1_pin>;
43		regulator-boot-on;
44		regulator-name = "vcc_sd";
45		regulator-min-microvolt = <3300000>;
46		regulator-max-microvolt = <3300000>;
47		vin-supply = <&vcc_io>;
48	};
49
50	vcc_sdio: sdmmcio-regulator {
51		compatible = "regulator-gpio";
52		gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
53		states = <1800000 0x1>,
54			 <3300000 0x0>;
55		regulator-name = "vcc_sdio";
56		regulator-type = "voltage";
57		regulator-min-microvolt = <1800000>;
58		regulator-max-microvolt = <3300000>;
59		regulator-always-on;
60		vin-supply = <&vcc_sys>;
61	};
62
63	vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator {
64		compatible = "regulator-fixed";
65		enable-active-high;
66		gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
67		pinctrl-names = "default";
68		pinctrl-0 = <&usb20_host_drv>;
69		regulator-name = "vcc_host1_5v";
70		regulator-always-on;
71		vin-supply = <&vcc_sys>;
72	};
73
74	vcc_sys: vcc-sys {
75		compatible = "regulator-fixed";
76		regulator-name = "vcc_sys";
77		regulator-always-on;
78		regulator-boot-on;
79		regulator-min-microvolt = <5000000>;
80		regulator-max-microvolt = <5000000>;
81		vin-supply = <&dc_12v>;
82	};
83
84	vcc_phy: vcc-phy-regulator {
85		compatible = "regulator-fixed";
86		regulator-name = "vcc_phy";
87		regulator-always-on;
88		regulator-boot-on;
89	};
90
91	leds {
92		compatible = "gpio-leds";
93
94		power_led: led-0 {
95			label = "firefly:blue:power";
96			linux,default-trigger = "heartbeat";
97			gpios = <&rk805 1 GPIO_ACTIVE_LOW>;
98			default-state = "on";
99		};
100
101		user_led: led-1 {
102			label = "firefly:yellow:user";
103			linux,default-trigger = "mmc1";
104			gpios = <&rk805 0 GPIO_ACTIVE_LOW>;
105			default-state = "off";
106		};
107	};
108};
109
110&analog_sound {
111	status = "okay";
112};
113
114&codec {
115	status = "okay";
116};
117
118&cpu0 {
119	cpu-supply = <&vdd_arm>;
120};
121
122&cpu1 {
123	cpu-supply = <&vdd_arm>;
124};
125
126&cpu2 {
127	cpu-supply = <&vdd_arm>;
128};
129
130&cpu3 {
131	cpu-supply = <&vdd_arm>;
132};
133
134&emmc {
135	bus-width = <8>;
136	cap-mmc-highspeed;
137	max-frequency = <150000000>;
138	mmc-ddr-1_8v;
139	mmc-hs200-1_8v;
140	non-removable;
141	pinctrl-names = "default";
142	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
143	vmmc-supply = <&vcc_io>;
144	vqmmc-supply = <&vcc18_emmc>;
145	status = "okay";
146};
147
148&gmac2io {
149	assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
150	assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
151	clock_in_out = "input";
152	phy-supply = <&vcc_phy>;
153	phy-mode = "rgmii";
154	pinctrl-names = "default";
155	pinctrl-0 = <&rgmiim1_pins>;
156	snps,aal;
157	snps,reset-gpio = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
158	snps,reset-active-low;
159	snps,reset-delays-us = <0 10000 50000>;
160	snps,rxpbl = <0x4>;
161	snps,txpbl = <0x4>;
162	tx_delay = <0x24>;
163	rx_delay = <0x18>;
164	status = "okay";
165};
166
167&hdmi {
168	status = "okay";
169};
170
171&hdmiphy {
172	status = "okay";
173};
174
175&hdmi_sound {
176	status = "okay";
177};
178
179&i2c1 {
180	status = "okay";
181
182	rk805: pmic@18 {
183		compatible = "rockchip,rk805";
184		reg = <0x18>;
185		interrupt-parent = <&gpio1>;
186		interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
187		#clock-cells = <1>;
188		clock-output-names = "xin32k", "rk805-clkout2";
189		gpio-controller;
190		#gpio-cells = <2>;
191		pinctrl-names = "default";
192		pinctrl-0 = <&pmic_int_l>;
193		rockchip,system-power-controller;
194		wakeup-source;
195
196		vcc1-supply = <&vcc_sys>;
197		vcc2-supply = <&vcc_sys>;
198		vcc3-supply = <&vcc_sys>;
199		vcc4-supply = <&vcc_sys>;
200		vcc5-supply = <&vcc_io>;
201		vcc6-supply = <&vcc_io>;
202
203		regulators {
204			vdd_logic: DCDC_REG1 {
205				regulator-name = "vdd_logic";
206				regulator-min-microvolt = <712500>;
207				regulator-max-microvolt = <1450000>;
208				regulator-always-on;
209				regulator-boot-on;
210				regulator-state-mem {
211					regulator-on-in-suspend;
212					regulator-suspend-microvolt = <1000000>;
213				};
214			};
215
216			vdd_arm: DCDC_REG2 {
217				regulator-name = "vdd_arm";
218				regulator-min-microvolt = <712500>;
219				regulator-max-microvolt = <1450000>;
220				regulator-always-on;
221				regulator-boot-on;
222				regulator-state-mem {
223					regulator-on-in-suspend;
224					regulator-suspend-microvolt = <950000>;
225				};
226			};
227
228			vcc_ddr: DCDC_REG3 {
229				regulator-name = "vcc_ddr";
230				regulator-always-on;
231				regulator-boot-on;
232				regulator-state-mem {
233					regulator-on-in-suspend;
234				};
235			};
236
237			vcc_io: DCDC_REG4 {
238				regulator-name = "vcc_io";
239				regulator-min-microvolt = <3300000>;
240				regulator-max-microvolt = <3300000>;
241				regulator-always-on;
242				regulator-boot-on;
243				regulator-state-mem {
244					regulator-on-in-suspend;
245					regulator-suspend-microvolt = <3300000>;
246				};
247			};
248
249			vcc_18: LDO_REG1 {
250				regulator-name = "vcc_18";
251				regulator-min-microvolt = <1800000>;
252				regulator-max-microvolt = <1800000>;
253				regulator-always-on;
254				regulator-boot-on;
255				regulator-state-mem {
256					regulator-on-in-suspend;
257					regulator-suspend-microvolt = <1800000>;
258				};
259			};
260
261			vcc18_emmc: LDO_REG2 {
262				regulator-name = "vcc18_emmc";
263				regulator-min-microvolt = <1800000>;
264				regulator-max-microvolt = <1800000>;
265				regulator-always-on;
266				regulator-boot-on;
267				regulator-state-mem {
268					regulator-on-in-suspend;
269					regulator-suspend-microvolt = <1800000>;
270				};
271			};
272
273			vdd_10: LDO_REG3 {
274				regulator-name = "vdd_10";
275				regulator-min-microvolt = <1000000>;
276				regulator-max-microvolt = <1000000>;
277				regulator-always-on;
278				regulator-boot-on;
279				regulator-state-mem {
280					regulator-on-in-suspend;
281					regulator-suspend-microvolt = <1000000>;
282				};
283			};
284		};
285	};
286};
287
288&i2s0 {
289	status = "okay";
290};
291
292&i2s1 {
293	status = "okay";
294};
295
296&io_domains {
297	status = "okay";
298
299	vccio1-supply = <&vcc_io>;
300	vccio2-supply = <&vcc18_emmc>;
301	vccio3-supply = <&vcc_sdio>;
302	vccio4-supply = <&vcc_18>;
303	vccio5-supply = <&vcc_io>;
304	vccio6-supply = <&vcc_io>;
305	pmuio-supply = <&vcc_io>;
306};
307
308&pinctrl {
309	pmic {
310		pmic_int_l: pmic-int-l {
311			rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
312		};
313	};
314
315	usb2 {
316		usb20_host_drv: usb20-host-drv {
317			rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
318		};
319	};
320};
321
322&sdmmc {
323	bus-width = <4>;
324	cap-mmc-highspeed;
325	cap-sd-highspeed;
326	disable-wp;
327	max-frequency = <150000000>;
328	pinctrl-names = "default";
329	pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
330	sd-uhs-sdr12;
331	sd-uhs-sdr25;
332	sd-uhs-sdr50;
333	sd-uhs-sdr104;
334	vmmc-supply = <&vcc_sd>;
335	vqmmc-supply = <&vcc_sdio>;
336	status = "okay";
337};
338
339&tsadc {
340	status = "okay";
341};
342
343&u2phy {
344	status = "okay";
345};
346
347&u2phy_host {
348	status = "okay";
349};
350
351&u2phy_otg {
352	status = "okay";
353};
354
355&uart2 {
356	status = "okay";
357};
358
359&usb20_otg {
360	dr_mode = "host";
361	status = "okay";
362};
363
364&usbdrd3 {
365	dr_mode = "host";
366	status = "okay";
367};
368
369&usb_host0_ehci {
370	status = "okay";
371};
372
373&usb_host0_ohci {
374	status = "okay";
375};
376
377&vop {
378	status = "okay";
379};
380
381&vop_mmu {
382	status = "okay";
383};
384