1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2020 David Bauer <mail@david-bauer.net>
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/gpio/gpio.h>
10#include "rk3328.dtsi"
11
12/ {
13	model = "FriendlyElec NanoPi R2S";
14	compatible = "friendlyarm,nanopi-r2s", "rockchip,rk3328";
15
16	aliases {
17		ethernet1 = &rtl8153;
18		mmc0 = &sdmmc;
19	};
20
21	chosen {
22		stdout-path = "serial2:1500000n8";
23	};
24
25	gmac_clk: gmac-clock {
26		compatible = "fixed-clock";
27		clock-frequency = <125000000>;
28		clock-output-names = "gmac_clkin";
29		#clock-cells = <0>;
30	};
31
32	keys {
33		compatible = "gpio-keys";
34		pinctrl-0 = <&reset_button_pin>;
35		pinctrl-names = "default";
36
37		key-reset {
38			label = "reset";
39			gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_LOW>;
40			linux,code = <KEY_RESTART>;
41			debounce-interval = <50>;
42		};
43	};
44
45	leds {
46		compatible = "gpio-leds";
47		pinctrl-0 = <&lan_led_pin>,  <&sys_led_pin>, <&wan_led_pin>;
48		pinctrl-names = "default";
49
50		lan_led: led-0 {
51			gpios = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>;
52			label = "nanopi-r2s:green:lan";
53		};
54
55		sys_led: led-1 {
56			gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>;
57			label = "nanopi-r2s:red:sys";
58			default-state = "on";
59		};
60
61		wan_led: led-2 {
62			gpios = <&gpio2 RK_PC2 GPIO_ACTIVE_HIGH>;
63			label = "nanopi-r2s:green:wan";
64		};
65	};
66
67	vcc_io_sdio: sdmmcio-regulator {
68		compatible = "regulator-gpio";
69		enable-active-high;
70		gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_HIGH>;
71		pinctrl-0 = <&sdio_vcc_pin>;
72		pinctrl-names = "default";
73		regulator-name = "vcc_io_sdio";
74		regulator-always-on;
75		regulator-min-microvolt = <1800000>;
76		regulator-max-microvolt = <3300000>;
77		regulator-settling-time-us = <5000>;
78		regulator-type = "voltage";
79		startup-delay-us = <2000>;
80		states = <1800000 0x1>,
81			 <3300000 0x0>;
82		vin-supply = <&vcc_io_33>;
83	};
84
85	vcc_sd: sdmmc-regulator {
86		compatible = "regulator-fixed";
87		gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_LOW>;
88		pinctrl-0 = <&sdmmc0m1_pin>;
89		pinctrl-names = "default";
90		regulator-name = "vcc_sd";
91		regulator-boot-on;
92		regulator-min-microvolt = <3300000>;
93		regulator-max-microvolt = <3300000>;
94		vin-supply = <&vcc_io_33>;
95	};
96
97	vdd_5v: vdd-5v {
98		compatible = "regulator-fixed";
99		regulator-name = "vdd_5v";
100		regulator-always-on;
101		regulator-boot-on;
102		regulator-min-microvolt = <5000000>;
103		regulator-max-microvolt = <5000000>;
104	};
105
106	vdd_5v_lan: vdd-5v-lan {
107		compatible = "regulator-fixed";
108		enable-active-high;
109		gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
110		pinctrl-0 = <&lan_vdd_pin>;
111		pinctrl-names = "default";
112		regulator-name = "vdd_5v_lan";
113		regulator-always-on;
114		regulator-boot-on;
115		vin-supply = <&vdd_5v>;
116	};
117};
118
119&cpu0 {
120	cpu-supply = <&vdd_arm>;
121};
122
123&cpu1 {
124	cpu-supply = <&vdd_arm>;
125};
126
127&cpu2 {
128	cpu-supply = <&vdd_arm>;
129};
130
131&cpu3 {
132	cpu-supply = <&vdd_arm>;
133};
134
135&display_subsystem {
136	status = "disabled";
137};
138
139&gmac2io {
140	assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
141	assigned-clock-parents = <&gmac_clk>, <&gmac_clk>;
142	clock_in_out = "input";
143	phy-handle = <&rtl8211e>;
144	phy-mode = "rgmii";
145	phy-supply = <&vcc_io_33>;
146	pinctrl-0 = <&rgmiim1_pins>;
147	pinctrl-names = "default";
148	rx_delay = <0x18>;
149	snps,aal;
150	tx_delay = <0x24>;
151	status = "okay";
152
153	mdio {
154		compatible = "snps,dwmac-mdio";
155		#address-cells = <1>;
156		#size-cells = <0>;
157
158		rtl8211e: ethernet-phy@1 {
159			reg = <1>;
160			pinctrl-0 = <&eth_phy_reset_pin>;
161			pinctrl-names = "default";
162			reset-assert-us = <10000>;
163			reset-deassert-us = <50000>;
164			reset-gpios = <&gpio1 RK_PC2 GPIO_ACTIVE_LOW>;
165		};
166	};
167};
168
169&i2c1 {
170	status = "okay";
171
172	rk805: pmic@18 {
173		compatible = "rockchip,rk805";
174		reg = <0x18>;
175		interrupt-parent = <&gpio1>;
176		interrupts = <24 IRQ_TYPE_LEVEL_LOW>;
177		#clock-cells = <1>;
178		clock-output-names = "xin32k", "rk805-clkout2";
179		gpio-controller;
180		#gpio-cells = <2>;
181		pinctrl-0 = <&pmic_int_l>;
182		pinctrl-names = "default";
183		rockchip,system-power-controller;
184		wakeup-source;
185
186		vcc1-supply = <&vdd_5v>;
187		vcc2-supply = <&vdd_5v>;
188		vcc3-supply = <&vdd_5v>;
189		vcc4-supply = <&vdd_5v>;
190		vcc5-supply = <&vcc_io_33>;
191		vcc6-supply = <&vdd_5v>;
192
193		regulators {
194			vdd_log: DCDC_REG1 {
195				regulator-name = "vdd_log";
196				regulator-always-on;
197				regulator-boot-on;
198				regulator-min-microvolt = <712500>;
199				regulator-max-microvolt = <1450000>;
200				regulator-ramp-delay = <12500>;
201
202				regulator-state-mem {
203					regulator-on-in-suspend;
204					regulator-suspend-microvolt = <1000000>;
205				};
206			};
207
208			vdd_arm: DCDC_REG2 {
209				regulator-name = "vdd_arm";
210				regulator-always-on;
211				regulator-boot-on;
212				regulator-min-microvolt = <712500>;
213				regulator-max-microvolt = <1450000>;
214				regulator-ramp-delay = <12500>;
215
216				regulator-state-mem {
217					regulator-on-in-suspend;
218					regulator-suspend-microvolt = <950000>;
219				};
220			};
221
222			vcc_ddr: DCDC_REG3 {
223				regulator-name = "vcc_ddr";
224				regulator-always-on;
225				regulator-boot-on;
226
227				regulator-state-mem {
228					regulator-on-in-suspend;
229				};
230			};
231
232			vcc_io_33: DCDC_REG4 {
233				regulator-name = "vcc_io_33";
234				regulator-always-on;
235				regulator-boot-on;
236				regulator-min-microvolt = <3300000>;
237				regulator-max-microvolt = <3300000>;
238
239				regulator-state-mem {
240					regulator-on-in-suspend;
241					regulator-suspend-microvolt = <3300000>;
242				};
243			};
244
245			vcc_18: LDO_REG1 {
246				regulator-name = "vcc_18";
247				regulator-always-on;
248				regulator-boot-on;
249				regulator-min-microvolt = <1800000>;
250				regulator-max-microvolt = <1800000>;
251
252				regulator-state-mem {
253					regulator-on-in-suspend;
254					regulator-suspend-microvolt = <1800000>;
255				};
256			};
257
258			vcc18_emmc: LDO_REG2 {
259				regulator-name = "vcc18_emmc";
260				regulator-always-on;
261				regulator-boot-on;
262				regulator-min-microvolt = <1800000>;
263				regulator-max-microvolt = <1800000>;
264
265				regulator-state-mem {
266					regulator-on-in-suspend;
267					regulator-suspend-microvolt = <1800000>;
268				};
269			};
270
271			vdd_10: LDO_REG3 {
272				regulator-name = "vdd_10";
273				regulator-always-on;
274				regulator-boot-on;
275				regulator-min-microvolt = <1000000>;
276				regulator-max-microvolt = <1000000>;
277
278				regulator-state-mem {
279					regulator-on-in-suspend;
280					regulator-suspend-microvolt = <1000000>;
281				};
282			};
283		};
284	};
285};
286
287&io_domains {
288	pmuio-supply = <&vcc_io_33>;
289	vccio1-supply = <&vcc_io_33>;
290	vccio2-supply = <&vcc18_emmc>;
291	vccio3-supply = <&vcc_io_sdio>;
292	vccio4-supply = <&vcc_18>;
293	vccio5-supply = <&vcc_io_33>;
294	vccio6-supply = <&vcc_io_33>;
295	status = "okay";
296};
297
298&pinctrl {
299	button {
300		reset_button_pin: reset-button-pin {
301			rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
302		};
303	};
304
305	gmac2io {
306		eth_phy_reset_pin: eth-phy-reset-pin {
307			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
308		};
309	};
310
311	leds {
312		lan_led_pin: lan-led-pin {
313			rockchip,pins = <2 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
314		};
315
316		sys_led_pin: sys-led-pin {
317			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
318		};
319
320		wan_led_pin: wan-led-pin {
321			rockchip,pins = <2 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
322		};
323	};
324
325	lan {
326		lan_vdd_pin: lan-vdd-pin {
327			rockchip,pins = <2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
328		};
329	};
330
331	pmic {
332		pmic_int_l: pmic-int-l {
333			rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
334		};
335	};
336
337	sd {
338		sdio_vcc_pin: sdio-vcc-pin {
339			rockchip,pins = <1 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
340		};
341	};
342};
343
344&pwm2 {
345	status = "okay";
346};
347
348&sdmmc {
349	bus-width = <4>;
350	cap-sd-highspeed;
351	disable-wp;
352	pinctrl-0 = <&sdmmc0_clk>, <&sdmmc0_cmd>, <&sdmmc0_dectn>, <&sdmmc0_bus4>;
353	pinctrl-names = "default";
354	sd-uhs-sdr12;
355	sd-uhs-sdr25;
356	sd-uhs-sdr50;
357	sd-uhs-sdr104;
358	vmmc-supply = <&vcc_sd>;
359	vqmmc-supply = <&vcc_io_sdio>;
360	status = "okay";
361};
362
363&tsadc {
364	rockchip,hw-tshut-mode = <0>;
365	rockchip,hw-tshut-polarity = <0>;
366	status = "okay";
367};
368
369&u2phy {
370	status = "okay";
371};
372
373&u2phy_host {
374	status = "okay";
375};
376
377&u2phy_otg {
378	status = "okay";
379};
380
381&uart2 {
382	status = "okay";
383};
384
385&usb20_otg {
386	status = "okay";
387	dr_mode = "host";
388};
389
390&usbdrd3 {
391	dr_mode = "host";
392	status = "okay";
393	#address-cells = <1>;
394	#size-cells = <0>;
395
396	/* Second port is for USB 3.0 */
397	rtl8153: device@2 {
398		compatible = "usbbda,8153";
399		reg = <2>;
400	};
401};
402
403&usb_host0_ehci {
404	status = "okay";
405};
406
407&usb_host0_ohci {
408	status = "okay";
409};
410