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