blob: 8a3d302f1535783ab221f29731cdb0a9dfd74b03 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2/*
3 * Device Tree Source for the R9A08G045S33 SMARC Carrier-II's SoM board.
4 *
5 * Copyright (C) 2023 Renesas Electronics Corp.
6 */
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
10
11/*
Tom Rini93743d22024-04-01 09:08:13 -040012 * On-board switches' states:
13 * @SW_OFF: switch's state is OFF
14 * @SW_ON: switch's state is ON
Tom Rini53633a82024-02-29 12:33:36 -050015 */
Tom Rini93743d22024-04-01 09:08:13 -040016#define SW_OFF 0
17#define SW_ON 1
18
19/*
20 * SW_CONFIG[x] switches' states:
21 * @SW_CONFIG2:
22 * SW_OFF - SD0 is connected to eMMC
23 * SW_ON - SD0 is connected to uSD0 card
24 * @SW_CONFIG3:
25 * SW_OFF - SD2 is connected to SoC
26 * SW_ON - SCIF1, SSI0, IRQ0, IRQ1 connected to SoC
27 */
Tom Rini762f85b2024-07-20 11:15:10 -060028#define SW_CONFIG2 SW_OFF
Tom Rini93743d22024-04-01 09:08:13 -040029#define SW_CONFIG3 SW_ON
Tom Rini53633a82024-02-29 12:33:36 -050030
31/ {
32 compatible = "renesas,rzg3s-smarcm", "renesas,r9a08g045s33", "renesas,r9a08g045";
33
34 aliases {
35 mmc0 = &sdhi0;
Tom Rini93743d22024-04-01 09:08:13 -040036#if SW_CONFIG3 == SW_OFF
37 mmc2 = &sdhi2;
38#else
Tom Rini762f85b2024-07-20 11:15:10 -060039 ethernet0 = &eth0;
40 ethernet1 = &eth1;
Tom Rini93743d22024-04-01 09:08:13 -040041#endif
Tom Rini53633a82024-02-29 12:33:36 -050042 };
43
44 chosen {
45 bootargs = "ignore_loglevel";
46 stdout-path = "serial0:115200n8";
47 };
48
49 memory@48000000 {
50 device_type = "memory";
51 /* First 128MB is reserved for secure area. */
52 reg = <0x0 0x48000000 0x0 0x38000000>;
53 };
54
55 vcc_sdhi0: regulator0 {
56 compatible = "regulator-fixed";
57 regulator-name = "SDHI0 Vcc";
58 regulator-min-microvolt = <3300000>;
59 regulator-max-microvolt = <3300000>;
60 gpios = <&pinctrl RZG2L_GPIO(2, 1) GPIO_ACTIVE_HIGH>;
61 enable-active-high;
62 };
63
Tom Rini93743d22024-04-01 09:08:13 -040064#if SW_CONFIG2 == SW_ON
Tom Rini53633a82024-02-29 12:33:36 -050065 vccq_sdhi0: regulator1 {
66 compatible = "regulator-gpio";
67 regulator-name = "SDHI0 VccQ";
68 regulator-min-microvolt = <1800000>;
69 regulator-max-microvolt = <3300000>;
70 gpios = <&pinctrl RZG2L_GPIO(2, 2) GPIO_ACTIVE_HIGH>;
71 gpios-states = <1>;
72 states = <3300000 1>, <1800000 0>;
73 };
74#else
75 reg_1p8v: regulator1 {
76 compatible = "regulator-fixed";
77 regulator-name = "fixed-1.8V";
78 regulator-min-microvolt = <1800000>;
79 regulator-max-microvolt = <1800000>;
80 regulator-boot-on;
81 regulator-always-on;
82 };
83#endif
Tom Rini93743d22024-04-01 09:08:13 -040084
85 vcc_sdhi2: regulator2 {
86 compatible = "regulator-fixed";
87 regulator-name = "SDHI2 Vcc";
88 regulator-min-microvolt = <3300000>;
89 regulator-max-microvolt = <3300000>;
90 gpios = <&pinctrl RZG2L_GPIO(8, 1) GPIO_ACTIVE_HIGH>;
91 enable-active-high;
92 };
93};
94
95#if SW_CONFIG3 == SW_ON
96&eth0 {
97 pinctrl-0 = <&eth0_pins>;
98 pinctrl-names = "default";
99 phy-handle = <&phy0>;
100 phy-mode = "rgmii-id";
101 status = "okay";
102
103 phy0: ethernet-phy@7 {
104 reg = <7>;
105 interrupt-parent = <&pinctrl>;
106 interrupts = <RZG2L_GPIO(12, 0) IRQ_TYPE_EDGE_FALLING>;
107 rxc-skew-psec = <0>;
108 txc-skew-psec = <0>;
109 rxdv-skew-psec = <0>;
110 txen-skew-psec = <0>;
111 rxd0-skew-psec = <0>;
112 rxd1-skew-psec = <0>;
113 rxd2-skew-psec = <0>;
114 rxd3-skew-psec = <0>;
115 txd0-skew-psec = <0>;
116 txd1-skew-psec = <0>;
117 txd2-skew-psec = <0>;
118 txd3-skew-psec = <0>;
119 };
Tom Rini53633a82024-02-29 12:33:36 -0500120};
121
Tom Rini93743d22024-04-01 09:08:13 -0400122&eth1 {
123 pinctrl-0 = <&eth1_pins>;
124 pinctrl-names = "default";
125 phy-handle = <&phy1>;
126 phy-mode = "rgmii-id";
127 status = "okay";
128
129 phy1: ethernet-phy@7 {
130 reg = <7>;
131 interrupt-parent = <&pinctrl>;
132 interrupts = <RZG2L_GPIO(12, 1) IRQ_TYPE_EDGE_FALLING>;
133 rxc-skew-psec = <0>;
134 txc-skew-psec = <0>;
135 rxdv-skew-psec = <0>;
136 txen-skew-psec = <0>;
137 rxd0-skew-psec = <0>;
138 rxd1-skew-psec = <0>;
139 rxd2-skew-psec = <0>;
140 rxd3-skew-psec = <0>;
141 txd0-skew-psec = <0>;
142 txd1-skew-psec = <0>;
143 txd2-skew-psec = <0>;
144 txd3-skew-psec = <0>;
145 };
146};
147#endif
148
Tom Rini53633a82024-02-29 12:33:36 -0500149&extal_clk {
150 clock-frequency = <24000000>;
151};
152
Tom Rini93743d22024-04-01 09:08:13 -0400153#if SW_CONFIG2 == SW_ON
Tom Rini53633a82024-02-29 12:33:36 -0500154/* SD0 slot */
155&sdhi0 {
156 pinctrl-0 = <&sdhi0_pins>;
157 pinctrl-1 = <&sdhi0_uhs_pins>;
158 pinctrl-names = "default", "state_uhs";
159 vmmc-supply = <&vcc_sdhi0>;
160 vqmmc-supply = <&vccq_sdhi0>;
161 bus-width = <4>;
162 sd-uhs-sdr50;
163 sd-uhs-sdr104;
164 max-frequency = <125000000>;
165 status = "okay";
166};
167#else
168/* eMMC */
169&sdhi0 {
170 pinctrl-0 = <&sdhi0_emmc_pins>;
171 pinctrl-1 = <&sdhi0_emmc_pins>;
172 pinctrl-names = "default", "state_uhs";
173 vmmc-supply = <&vcc_sdhi0>;
174 vqmmc-supply = <&reg_1p8v>;
175 bus-width = <8>;
176 mmc-hs200-1_8v;
177 non-removable;
178 fixed-emmc-driver-type = <1>;
179 max-frequency = <125000000>;
180 status = "okay";
181};
182#endif
183
Tom Rini93743d22024-04-01 09:08:13 -0400184#if SW_CONFIG3 == SW_OFF
185&sdhi2 {
186 pinctrl-0 = <&sdhi2_pins>;
187 pinctrl-names = "default";
188 vmmc-supply = <&vcc_sdhi2>;
189 bus-width = <4>;
190 max-frequency = <50000000>;
191 status = "okay";
192};
193#endif
194
Tom Rini53633a82024-02-29 12:33:36 -0500195&pinctrl {
Tom Rini6bb92fc2024-05-20 09:54:58 -0600196#if SW_CONFIG3 == SW_ON
Tom Rini93743d22024-04-01 09:08:13 -0400197 eth0-phy-irq-hog {
198 gpio-hog;
199 gpios = <RZG2L_GPIO(12, 0) GPIO_ACTIVE_LOW>;
200 input;
201 line-name = "eth0-phy-irq";
202 };
Tom Rini6bb92fc2024-05-20 09:54:58 -0600203#endif
Tom Rini93743d22024-04-01 09:08:13 -0400204
205 eth0_pins: eth0 {
206 txc {
207 pinmux = <RZG2L_PORT_PINMUX(1, 0, 1)>; /* ET0_TXC */
208 power-source = <1800>;
209 output-enable;
210 input-enable;
211 drive-strength-microamp = <5200>;
212 };
213
214 tx_ctl {
215 pinmux = <RZG2L_PORT_PINMUX(1, 1, 1)>; /* ET0_TX_CTL */
216 power-source = <1800>;
217 output-enable;
218 drive-strength-microamp = <5200>;
219 };
220
221 mux {
222 pinmux = <RZG2L_PORT_PINMUX(1, 2, 1)>, /* ET0_TXD0 */
223 <RZG2L_PORT_PINMUX(1, 3, 1)>, /* ET0_TXD1 */
224 <RZG2L_PORT_PINMUX(1, 4, 1)>, /* ET0_TXD2 */
225 <RZG2L_PORT_PINMUX(2, 0, 1)>, /* ET0_TXD3 */
226 <RZG2L_PORT_PINMUX(3, 0, 1)>, /* ET0_RXC */
227 <RZG2L_PORT_PINMUX(3, 1, 1)>, /* ET0_RX_CTL */
228 <RZG2L_PORT_PINMUX(3, 2, 1)>, /* ET0_RXD0 */
229 <RZG2L_PORT_PINMUX(3, 3, 1)>, /* ET0_RXD1 */
230 <RZG2L_PORT_PINMUX(4, 0, 1)>, /* ET0_RXD2 */
231 <RZG2L_PORT_PINMUX(4, 1, 1)>, /* ET0_RXD3 */
232 <RZG2L_PORT_PINMUX(4, 3, 1)>, /* ET0_MDC */
233 <RZG2L_PORT_PINMUX(4, 4, 1)>, /* ET0_MDIO */
234 <RZG2L_PORT_PINMUX(4, 5, 1)>; /* ET0_LINKSTA */
235 power-source = <1800>;
236 };
237 };
238
Tom Rini6bb92fc2024-05-20 09:54:58 -0600239#if SW_CONFIG3 == SW_ON
Tom Rini93743d22024-04-01 09:08:13 -0400240 eth1-phy-irq-hog {
241 gpio-hog;
242 gpios = <RZG2L_GPIO(12, 1) GPIO_ACTIVE_LOW>;
243 input;
244 line-name = "eth1-phy-irq";
245 };
Tom Rini6bb92fc2024-05-20 09:54:58 -0600246#endif
Tom Rini93743d22024-04-01 09:08:13 -0400247
248 eth1_pins: eth1 {
249 txc {
250 pinmux = <RZG2L_PORT_PINMUX(7, 0, 1)>; /* ET1_TXC */
251 power-source = <1800>;
252 output-enable;
253 input-enable;
254 drive-strength-microamp = <5200>;
255 };
256
257 tx_ctl {
258 pinmux = <RZG2L_PORT_PINMUX(7, 1, 1)>; /* ET1_TX_CTL */
259 power-source = <1800>;
260 output-enable;
261 drive-strength-microamp = <5200>;
262 };
263
264 mux {
265 pinmux = <RZG2L_PORT_PINMUX(7, 2, 1)>, /* ET1_TXD0 */
266 <RZG2L_PORT_PINMUX(7, 3, 1)>, /* ET1_TXD1 */
267 <RZG2L_PORT_PINMUX(7, 4, 1)>, /* ET1_TXD2 */
268 <RZG2L_PORT_PINMUX(8, 0, 1)>, /* ET1_TXD3 */
269 <RZG2L_PORT_PINMUX(8, 4, 1)>, /* ET1_RXC */
270 <RZG2L_PORT_PINMUX(9, 0, 1)>, /* ET1_RX_CTL */
271 <RZG2L_PORT_PINMUX(9, 1, 1)>, /* ET1_RXD0 */
272 <RZG2L_PORT_PINMUX(9, 2, 1)>, /* ET1_RXD1 */
273 <RZG2L_PORT_PINMUX(9, 3, 1)>, /* ET1_RXD2 */
274 <RZG2L_PORT_PINMUX(10, 0, 1)>, /* ET1_RXD3 */
275 <RZG2L_PORT_PINMUX(10, 2, 1)>, /* ET1_MDC */
276 <RZG2L_PORT_PINMUX(10, 3, 1)>, /* ET1_MDIO */
277 <RZG2L_PORT_PINMUX(10, 4, 1)>; /* ET1_LINKSTA */
278 power-source = <1800>;
279 };
280 };
281
Tom Rini53633a82024-02-29 12:33:36 -0500282 sdhi0_pins: sd0 {
283 data {
284 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
285 power-source = <3300>;
286 };
287
288 ctrl {
289 pins = "SD0_CLK", "SD0_CMD";
290 power-source = <3300>;
291 };
292
293 cd {
294 pinmux = <RZG2L_PORT_PINMUX(0, 0, 1)>; /* SD0_CD */
295 };
296 };
297
298 sdhi0_uhs_pins: sd0-uhs {
299 data {
300 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
301 power-source = <1800>;
302 };
303
304 ctrl {
305 pins = "SD0_CLK", "SD0_CMD";
306 power-source = <1800>;
307 };
308
309 cd {
310 pinmux = <RZG2L_PORT_PINMUX(0, 0, 1)>; /* SD0_CD */
311 };
312 };
313
314 sdhi0_emmc_pins: sd0-emmc {
315 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
316 "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7",
317 "SD0_CLK", "SD0_CMD", "SD0_RST#";
318 power-source = <1800>;
319 };
Tom Rini93743d22024-04-01 09:08:13 -0400320
321 sdhi2_pins: sd2 {
322 data {
323 pins = "P11_2", "P11_3", "P12_0", "P12_1";
324 input-enable;
325 };
326
327 ctrl {
328 pins = "P11_1";
329 input-enable;
330 };
331
332 mux {
333 pinmux = <RZG2L_PORT_PINMUX(11, 0, 8)>, /* SD2_CLK */
334 <RZG2L_PORT_PINMUX(11, 1, 8)>, /* SD2_CMD */
335 <RZG2L_PORT_PINMUX(11, 2, 8)>, /* SD2_DATA0 */
336 <RZG2L_PORT_PINMUX(11, 3, 8)>, /* SD2_DATA1 */
337 <RZG2L_PORT_PINMUX(12, 0, 8)>, /* SD2_DATA2 */
338 <RZG2L_PORT_PINMUX(12, 1, 8)>, /* SD2_DATA3 */
339 <RZG2L_PORT_PINMUX(14, 1, 7)>; /* SD2_CD# */
340 };
341 };
Tom Rini53633a82024-02-29 12:33:36 -0500342};
Tom Rini6bb92fc2024-05-20 09:54:58 -0600343
344&wdt0 {
345 timeout-sec = <60>;
346 status = "okay";
347};