blob: f062d4ad78b79d9a2c511b31bd2159e9c89d6e87 [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 */
28#define SW_CONFIG2 SW_ON
29#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
39 eth0 = &eth0;
40 eth1 = &eth1;
41#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 Rini93743d22024-04-01 09:08:13 -0400196 eth0-phy-irq-hog {
197 gpio-hog;
198 gpios = <RZG2L_GPIO(12, 0) GPIO_ACTIVE_LOW>;
199 input;
200 line-name = "eth0-phy-irq";
201 };
202
203 eth0_pins: eth0 {
204 txc {
205 pinmux = <RZG2L_PORT_PINMUX(1, 0, 1)>; /* ET0_TXC */
206 power-source = <1800>;
207 output-enable;
208 input-enable;
209 drive-strength-microamp = <5200>;
210 };
211
212 tx_ctl {
213 pinmux = <RZG2L_PORT_PINMUX(1, 1, 1)>; /* ET0_TX_CTL */
214 power-source = <1800>;
215 output-enable;
216 drive-strength-microamp = <5200>;
217 };
218
219 mux {
220 pinmux = <RZG2L_PORT_PINMUX(1, 2, 1)>, /* ET0_TXD0 */
221 <RZG2L_PORT_PINMUX(1, 3, 1)>, /* ET0_TXD1 */
222 <RZG2L_PORT_PINMUX(1, 4, 1)>, /* ET0_TXD2 */
223 <RZG2L_PORT_PINMUX(2, 0, 1)>, /* ET0_TXD3 */
224 <RZG2L_PORT_PINMUX(3, 0, 1)>, /* ET0_RXC */
225 <RZG2L_PORT_PINMUX(3, 1, 1)>, /* ET0_RX_CTL */
226 <RZG2L_PORT_PINMUX(3, 2, 1)>, /* ET0_RXD0 */
227 <RZG2L_PORT_PINMUX(3, 3, 1)>, /* ET0_RXD1 */
228 <RZG2L_PORT_PINMUX(4, 0, 1)>, /* ET0_RXD2 */
229 <RZG2L_PORT_PINMUX(4, 1, 1)>, /* ET0_RXD3 */
230 <RZG2L_PORT_PINMUX(4, 3, 1)>, /* ET0_MDC */
231 <RZG2L_PORT_PINMUX(4, 4, 1)>, /* ET0_MDIO */
232 <RZG2L_PORT_PINMUX(4, 5, 1)>; /* ET0_LINKSTA */
233 power-source = <1800>;
234 };
235 };
236
237 eth1-phy-irq-hog {
238 gpio-hog;
239 gpios = <RZG2L_GPIO(12, 1) GPIO_ACTIVE_LOW>;
240 input;
241 line-name = "eth1-phy-irq";
242 };
243
244 eth1_pins: eth1 {
245 txc {
246 pinmux = <RZG2L_PORT_PINMUX(7, 0, 1)>; /* ET1_TXC */
247 power-source = <1800>;
248 output-enable;
249 input-enable;
250 drive-strength-microamp = <5200>;
251 };
252
253 tx_ctl {
254 pinmux = <RZG2L_PORT_PINMUX(7, 1, 1)>; /* ET1_TX_CTL */
255 power-source = <1800>;
256 output-enable;
257 drive-strength-microamp = <5200>;
258 };
259
260 mux {
261 pinmux = <RZG2L_PORT_PINMUX(7, 2, 1)>, /* ET1_TXD0 */
262 <RZG2L_PORT_PINMUX(7, 3, 1)>, /* ET1_TXD1 */
263 <RZG2L_PORT_PINMUX(7, 4, 1)>, /* ET1_TXD2 */
264 <RZG2L_PORT_PINMUX(8, 0, 1)>, /* ET1_TXD3 */
265 <RZG2L_PORT_PINMUX(8, 4, 1)>, /* ET1_RXC */
266 <RZG2L_PORT_PINMUX(9, 0, 1)>, /* ET1_RX_CTL */
267 <RZG2L_PORT_PINMUX(9, 1, 1)>, /* ET1_RXD0 */
268 <RZG2L_PORT_PINMUX(9, 2, 1)>, /* ET1_RXD1 */
269 <RZG2L_PORT_PINMUX(9, 3, 1)>, /* ET1_RXD2 */
270 <RZG2L_PORT_PINMUX(10, 0, 1)>, /* ET1_RXD3 */
271 <RZG2L_PORT_PINMUX(10, 2, 1)>, /* ET1_MDC */
272 <RZG2L_PORT_PINMUX(10, 3, 1)>, /* ET1_MDIO */
273 <RZG2L_PORT_PINMUX(10, 4, 1)>; /* ET1_LINKSTA */
274 power-source = <1800>;
275 };
276 };
277
Tom Rini53633a82024-02-29 12:33:36 -0500278 sdhi0_pins: sd0 {
279 data {
280 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
281 power-source = <3300>;
282 };
283
284 ctrl {
285 pins = "SD0_CLK", "SD0_CMD";
286 power-source = <3300>;
287 };
288
289 cd {
290 pinmux = <RZG2L_PORT_PINMUX(0, 0, 1)>; /* SD0_CD */
291 };
292 };
293
294 sdhi0_uhs_pins: sd0-uhs {
295 data {
296 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
297 power-source = <1800>;
298 };
299
300 ctrl {
301 pins = "SD0_CLK", "SD0_CMD";
302 power-source = <1800>;
303 };
304
305 cd {
306 pinmux = <RZG2L_PORT_PINMUX(0, 0, 1)>; /* SD0_CD */
307 };
308 };
309
310 sdhi0_emmc_pins: sd0-emmc {
311 pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
312 "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7",
313 "SD0_CLK", "SD0_CMD", "SD0_RST#";
314 power-source = <1800>;
315 };
Tom Rini93743d22024-04-01 09:08:13 -0400316
317 sdhi2_pins: sd2 {
318 data {
319 pins = "P11_2", "P11_3", "P12_0", "P12_1";
320 input-enable;
321 };
322
323 ctrl {
324 pins = "P11_1";
325 input-enable;
326 };
327
328 mux {
329 pinmux = <RZG2L_PORT_PINMUX(11, 0, 8)>, /* SD2_CLK */
330 <RZG2L_PORT_PINMUX(11, 1, 8)>, /* SD2_CMD */
331 <RZG2L_PORT_PINMUX(11, 2, 8)>, /* SD2_DATA0 */
332 <RZG2L_PORT_PINMUX(11, 3, 8)>, /* SD2_DATA1 */
333 <RZG2L_PORT_PINMUX(12, 0, 8)>, /* SD2_DATA2 */
334 <RZG2L_PORT_PINMUX(12, 1, 8)>, /* SD2_DATA3 */
335 <RZG2L_PORT_PINMUX(14, 1, 7)>; /* SD2_CD# */
336 };
337 };
Tom Rini53633a82024-02-29 12:33:36 -0500338};