1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * (C) Copyright 2020 Chen-Yu Tsai <wens@csie.org>
4 *
5 * Based on ./rk3328-rock64.dts, which is
6 *
7 * Copyright (c) 2017 PINE64
8 */
9
10/dts-v1/;
11
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/input/input.h>
14#include <dt-bindings/leds/common.h>
15#include <dt-bindings/pinctrl/rockchip.h>
16
17#include "rk3328.dtsi"
18
19/ {
20	model = "Radxa ROCK Pi E";
21	compatible = "radxa,rockpi-e", "rockchip,rk3328";
22
23	aliases {
24		ethernet0 = &gmac2io;
25		ethernet1 = &gmac2phy;
26		mmc0 = &sdmmc;
27		mmc1 = &emmc;
28	};
29
30	chosen {
31		stdout-path = "serial2:1500000n8";
32	};
33
34	adc-keys {
35		compatible = "adc-keys";
36		io-channels = <&saradc 0>;
37		io-channel-names = "buttons";
38		keyup-threshold-microvolt = <1750000>;
39
40		/* This button is unpopulated out of the factory. */
41		button-recovery {
42			label = "Recovery";
43			linux,code = <KEY_VENDOR>;
44			press-threshold-microvolt = <10000>;
45		};
46	};
47
48	gmac_clkin: external-gmac-clock {
49		compatible = "fixed-clock";
50		clock-frequency = <125000000>;
51		clock-output-names = "gmac_clkin";
52		#clock-cells = <0>;
53	};
54
55	leds {
56		compatible = "gpio-leds";
57		pinctrl-0 = <&led_pin>;
58		pinctrl-names = "default";
59
60		led-0 {
61			color = <LED_COLOR_ID_BLUE>;
62			gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>;
63			linux,default-trigger = "heartbeat";
64		};
65	};
66
67	vcc_sd: sdmmc-regulator {
68		compatible = "regulator-fixed";
69		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
70		pinctrl-names = "default";
71		pinctrl-0 = <&sdmmc0m1_pin>;
72		regulator-name = "vcc_sd";
73		regulator-boot-on;
74		vin-supply = <&vcc_io>;
75	};
76
77	vcc_host_5v: vcc-host-5v-regulator {
78		compatible = "regulator-fixed";
79		gpio = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
80		pinctrl-names = "default";
81		pinctrl-0 = <&usb30_host_drv>;
82		enable-active-high;
83		regulator-name = "vcc_host_5v";
84		regulator-always-on;
85		regulator-boot-on;
86		vin-supply = <&vcc_sys>;
87	};
88
89	vcc_sys: vcc-sys {
90		compatible = "regulator-fixed";
91		regulator-name = "vcc_sys";
92		regulator-always-on;
93		regulator-boot-on;
94		regulator-min-microvolt = <5000000>;
95		regulator-max-microvolt = <5000000>;
96	};
97
98	vcc_wifi: vcc-wifi-regulator {
99		compatible = "regulator-fixed";
100		gpio = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
101		pinctrl-names = "default";
102		pinctrl-0 = <&wifi_en>;
103		regulator-name = "vcc_wifi";
104		regulator-always-on;
105		regulator-boot-on;
106		vin-supply = <&vcc_io>;
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	mmc-ddr-1_8v;
138	mmc-hs200-1_8v;
139	non-removable;
140	pinctrl-names = "default";
141	pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
142	vmmc-supply = <&vcc_io>;
143	vqmmc-supply = <&vcc18_emmc>;
144	status = "okay";
145};
146
147&gmac2io {
148	assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
149	assigned-clock-parents = <&gmac_clkin>, <&gmac_clkin>;
150	clock_in_out = "input";
151	phy-handle = <&rtl8211e>;
152	phy-mode = "rgmii";
153	phy-supply = <&vcc_io>;
154	pinctrl-names = "default";
155	pinctrl-0 = <&rgmiim1_pins>;
156	snps,aal;
157	snps,rxpbl = <0x4>;
158	snps,txpbl = <0x4>;
159	tx_delay = <0x26>;
160	rx_delay = <0x11>;
161	status = "okay";
162
163	mdio {
164		compatible = "snps,dwmac-mdio";
165		#address-cells = <1>;
166		#size-cells = <0>;
167
168		rtl8211e: ethernet-phy@1 {
169			reg = <1>;
170			pinctrl-0 = <&eth_phy_int_pin>, <&eth_phy_reset_pin>;
171			pinctrl-names = "default";
172			interrupt-parent = <&gpio1>;
173			interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
174			reset-assert-us = <10000>;
175			reset-deassert-us = <50000>;
176			reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
177		};
178	};
179};
180
181&gmac2phy {
182	status = "okay";
183};
184
185&gpio0 {
186	gpio-line-names =
187		/* GPIO0_A0 - A7 */
188		"", "", "", "", "", "", "", "",
189		/* GPIO0_B0 - B7 */
190		"", "", "", "", "", "", "", "",
191		/* GPIO0_C0 - C7 */
192		"", "", "", "", "", "", "", "",
193		/* GPIO0_D0 - D7 */
194		"", "", "", "pin-15 [GPIO0_D3]", "", "", "", "";
195};
196
197&gpio1 {
198	gpio-line-names =
199		/* GPIO1_A0 - A7 */
200		"", "", "", "", "", "", "", "",
201		/* GPIO1_B0 - B7 */
202		"", "", "", "", "", "", "", "",
203		/* GPIO1_C0 - C7 */
204		"", "", "", "", "", "", "", "",
205		/* GPIO1_D0 - D7 */
206		"", "", "", "", "pin-07 [GPIO1_D4]", "", "", "";
207};
208
209&gpio2 {
210	gpio-line-names =
211		/* GPIO2_A0 - A7 */
212		"pin-08 [GPIO2_A0]", "pin-10 [GPIO2_A1]", "pin-11 [GPIO2_A2]",
213		"pin-13 [GPIO2-A3]", "pin-27 [GPIO2_A4]", "pin-28 [GPIO2_A5]",
214		"pin-33 [GPIO2_A6]", "",
215		/* GPIO2_B0 - B7 */
216		"", "", "", "", "pin-26 [GPIO2_B4]", "", "", "pin-36 [GPIO2_B7]",
217		/* GPIO2_C0 - C7 */
218		"pin-32 [GPIO2_C0]", "pin-35 [GPIO2_C1]", "pin-12 [GPIO2_C2]",
219		"pin-38 [GPIO2_C3]", "pin-29 [GPIO2_C4]", "pin-31 [GPIO2_C5]",
220		"pin-37 [GPIO2_C6]", "pin-40 [GPIO2_C7]",
221		/* GPIO2_D0 - D7 */
222		"", "", "", "", "", "", "", "";
223};
224
225&gpio3 {
226	gpio-line-names =
227		/* GPIO3_A0 - A7 */
228		"pin-23 [GPIO3_A0]", "pin-19 [GPIO3_A1]", "pin-21 [GPIO3_A2]",
229		"", "pin-03 [GPIO3_A4]", "", "pin-05 [GPIO3_A6]", "",
230		/* GPIO3_B0 - B7 */
231		"pin-24 [GPIO3_B0]", "", "", "", "", "", "", "",
232		/* GPIO3_C0 - C7 */
233		"", "", "", "", "", "", "", "",
234		/* GPIO3_D0 - D7 */
235		"", "", "", "", "", "", "", "";
236};
237
238&i2c1 {
239	status = "okay";
240
241	rk805: pmic@18 {
242		compatible = "rockchip,rk805";
243		reg = <0x18>;
244		interrupt-parent = <&gpio2>;
245		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
246		#clock-cells = <1>;
247		clock-output-names = "xin32k", "rk805-clkout2";
248		gpio-controller;
249		#gpio-cells = <2>;
250		pinctrl-names = "default";
251		pinctrl-0 = <&pmic_int_l>;
252		rockchip,system-power-controller;
253		wakeup-source;
254
255		vcc1-supply = <&vcc_sys>;
256		vcc2-supply = <&vcc_sys>;
257		vcc3-supply = <&vcc_sys>;
258		vcc4-supply = <&vcc_sys>;
259		vcc5-supply = <&vcc_io>;
260		vcc6-supply = <&vcc_sys>;
261
262		regulators {
263			vdd_log: DCDC_REG1 {
264				regulator-name = "vdd_log";
265				regulator-always-on;
266				regulator-boot-on;
267				regulator-min-microvolt = <712500>;
268				regulator-max-microvolt = <1450000>;
269				regulator-ramp-delay = <12500>;
270
271				regulator-state-mem {
272					regulator-on-in-suspend;
273					regulator-suspend-microvolt = <1000000>;
274				};
275			};
276
277			vdd_arm: DCDC_REG2 {
278				regulator-name = "vdd_arm";
279				regulator-always-on;
280				regulator-boot-on;
281				regulator-min-microvolt = <712500>;
282				regulator-max-microvolt = <1450000>;
283				regulator-ramp-delay = <12500>;
284
285				regulator-state-mem {
286					regulator-on-in-suspend;
287					regulator-suspend-microvolt = <950000>;
288				};
289			};
290
291			vcc_ddr: DCDC_REG3 {
292				regulator-name = "vcc_ddr";
293				regulator-always-on;
294				regulator-boot-on;
295
296				regulator-state-mem {
297					regulator-on-in-suspend;
298				};
299			};
300
301			vcc_io: DCDC_REG4 {
302				regulator-name = "vcc_io";
303				regulator-always-on;
304				regulator-boot-on;
305				regulator-min-microvolt = <3300000>;
306				regulator-max-microvolt = <3300000>;
307
308				regulator-state-mem {
309					regulator-on-in-suspend;
310					regulator-suspend-microvolt = <3300000>;
311				};
312			};
313
314			vcc_18: LDO_REG1 {
315				regulator-name = "vcc_18";
316				regulator-always-on;
317				regulator-boot-on;
318				regulator-min-microvolt = <1800000>;
319				regulator-max-microvolt = <1800000>;
320
321				regulator-state-mem {
322					regulator-on-in-suspend;
323					regulator-suspend-microvolt = <1800000>;
324				};
325			};
326
327			vcc18_emmc: LDO_REG2 {
328				regulator-name = "vcc18_emmc";
329				regulator-always-on;
330				regulator-boot-on;
331				regulator-min-microvolt = <1800000>;
332				regulator-max-microvolt = <1800000>;
333
334				regulator-state-mem {
335					regulator-on-in-suspend;
336					regulator-suspend-microvolt = <1800000>;
337				};
338			};
339
340			vdd_10: LDO_REG3 {
341				regulator-name = "vdd_10";
342				regulator-always-on;
343				regulator-boot-on;
344				regulator-min-microvolt = <1000000>;
345				regulator-max-microvolt = <1000000>;
346
347				regulator-state-mem {
348					regulator-on-in-suspend;
349					regulator-suspend-microvolt = <1000000>;
350				};
351			};
352		};
353	};
354};
355
356&i2s1 {
357	status = "okay";
358};
359
360&io_domains {
361	pmuio-supply = <&vcc_io>;
362	vccio1-supply = <&vcc_io>;
363	vccio2-supply = <&vcc18_emmc>;
364	vccio3-supply = <&vcc_io>;
365	vccio4-supply = <&vcc_io>;
366	vccio5-supply = <&vcc_io>;
367	vccio6-supply = <&vcc_io>;
368	status = "okay";
369};
370
371&pinctrl {
372	ephy {
373		eth_phy_int_pin: eth-phy-int-pin {
374			rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_down>;
375		};
376
377		eth_phy_reset_pin: eth-phy-reset-pin {
378			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
379		};
380	};
381
382	leds {
383		led_pin: led-pin {
384			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
385		};
386	};
387
388	pmic {
389		pmic_int_l: pmic-int-l {
390			rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>;
391		};
392	};
393
394	usb3 {
395		usb30_host_drv: usb30-host-drv {
396			rockchip,pins = <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
397		};
398	};
399
400	wifi {
401		wifi_en: wifi-en {
402			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
403		};
404	};
405};
406
407&sdmmc {
408	bus-width = <4>;
409	cap-sd-highspeed;
410	disable-wp;
411	pinctrl-names = "default";
412	pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>;
413	vmmc-supply = <&vcc_sd>;
414	status = "okay";
415};
416
417&saradc {
418	vref-supply = <&vcc_18>;
419	status = "okay";
420};
421
422&tsadc {
423	status = "okay";
424};
425
426&u2phy {
427	status = "okay";
428};
429
430&u2phy_host {
431	status = "okay";
432};
433
434&uart2 {
435	status = "okay";
436};
437
438&usbdrd3 {
439	dr_mode = "host";
440	status = "okay";
441};
442
443&usb_host0_ehci {
444	status = "okay";
445};
446