155c68261SLad Prabhakar// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
255c68261SLad Prabhakar/*
355c68261SLad Prabhakar * Device Tree Source for the RZ/G2L SMARC SOM common parts
455c68261SLad Prabhakar *
555c68261SLad Prabhakar * Copyright (C) 2021 Renesas Electronics Corp.
655c68261SLad Prabhakar */
755c68261SLad Prabhakar
8a60a311cSBiju Das#include <dt-bindings/gpio/gpio.h>
903f7d78eSLad Prabhakar#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
1003f7d78eSLad Prabhakar
11a60a311cSBiju Das/* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */
12a60a311cSBiju Das#define EMMC	1
13a60a311cSBiju Das
14a60a311cSBiju Das/*
15a60a311cSBiju Das * To enable uSD card on CN3,
16a60a311cSBiju Das * SW1[2] should be at position 3/ON.
17a60a311cSBiju Das * Disable eMMC by setting "#define EMMC	0" above.
18a60a311cSBiju Das */
19a60a311cSBiju Das#define SDHI	(!EMMC)
20a60a311cSBiju Das
2155c68261SLad Prabhakar/ {
22361b0dcbSBiju Das	aliases {
23361b0dcbSBiju Das		ethernet0 = &eth0;
24361b0dcbSBiju Das		ethernet1 = &eth1;
25361b0dcbSBiju Das	};
26361b0dcbSBiju Das
27361b0dcbSBiju Das	chosen {
28361b0dcbSBiju Das		bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
29361b0dcbSBiju Das	};
30361b0dcbSBiju Das
3155c68261SLad Prabhakar	memory@48000000 {
3255c68261SLad Prabhakar		device_type = "memory";
3355c68261SLad Prabhakar		/* first 128MB is reserved for secure area. */
3455c68261SLad Prabhakar		reg = <0x0 0x48000000 0x0 0x78000000>;
3555c68261SLad Prabhakar	};
36a60a311cSBiju Das
37a60a311cSBiju Das	reg_1p8v: regulator0 {
38a60a311cSBiju Das		compatible = "regulator-fixed";
39a60a311cSBiju Das		regulator-name = "fixed-1.8V";
40a60a311cSBiju Das		regulator-min-microvolt = <1800000>;
41a60a311cSBiju Das		regulator-max-microvolt = <1800000>;
42a60a311cSBiju Das		regulator-boot-on;
43a60a311cSBiju Das		regulator-always-on;
44a60a311cSBiju Das	};
45a60a311cSBiju Das
46a60a311cSBiju Das	reg_3p3v: regulator1 {
47a60a311cSBiju Das		compatible = "regulator-fixed";
48a60a311cSBiju Das		regulator-name = "fixed-3.3V";
49a60a311cSBiju Das		regulator-min-microvolt = <3300000>;
50a60a311cSBiju Das		regulator-max-microvolt = <3300000>;
51a60a311cSBiju Das		regulator-boot-on;
52a60a311cSBiju Das		regulator-always-on;
53a60a311cSBiju Das	};
54a60a311cSBiju Das
55*d563f4baSBiju Das	reg_1p1v: regulator-vdd-core {
56*d563f4baSBiju Das		compatible = "regulator-fixed";
57*d563f4baSBiju Das		regulator-name = "fixed-1.1V";
58*d563f4baSBiju Das		regulator-min-microvolt = <1100000>;
59*d563f4baSBiju Das		regulator-max-microvolt = <1100000>;
60*d563f4baSBiju Das		regulator-boot-on;
61*d563f4baSBiju Das		regulator-always-on;
62*d563f4baSBiju Das	};
63*d563f4baSBiju Das
64a60a311cSBiju Das	vccq_sdhi0: regulator-vccq-sdhi0 {
65a60a311cSBiju Das		compatible = "regulator-gpio";
66a60a311cSBiju Das
67a60a311cSBiju Das		regulator-name = "SDHI0 VccQ";
68a60a311cSBiju Das		regulator-min-microvolt = <1800000>;
69a60a311cSBiju Das		regulator-max-microvolt = <3300000>;
70a60a311cSBiju Das		states = <3300000 1>, <1800000 0>;
71a60a311cSBiju Das		regulator-boot-on;
72a60a311cSBiju Das		gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>;
73a60a311cSBiju Das		regulator-always-on;
74a60a311cSBiju Das	};
7555c68261SLad Prabhakar};
7655c68261SLad Prabhakar
7703f7d78eSLad Prabhakar&adc {
7803f7d78eSLad Prabhakar	pinctrl-0 = <&adc_pins>;
7903f7d78eSLad Prabhakar	pinctrl-names = "default";
8003f7d78eSLad Prabhakar	status = "okay";
8103f7d78eSLad Prabhakar
8203f7d78eSLad Prabhakar	/delete-node/ channel@6;
8303f7d78eSLad Prabhakar	/delete-node/ channel@7;
8403f7d78eSLad Prabhakar};
8503f7d78eSLad Prabhakar
86361b0dcbSBiju Das&eth0 {
87361b0dcbSBiju Das	pinctrl-0 = <&eth0_pins>;
88361b0dcbSBiju Das	pinctrl-names = "default";
89361b0dcbSBiju Das	phy-handle = <&phy0>;
90361b0dcbSBiju Das	phy-mode = "rgmii-id";
91361b0dcbSBiju Das	status = "okay";
92361b0dcbSBiju Das
93361b0dcbSBiju Das	phy0: ethernet-phy@7 {
94361b0dcbSBiju Das		compatible = "ethernet-phy-id0022.1640",
95361b0dcbSBiju Das			     "ethernet-phy-ieee802.3-c22";
96361b0dcbSBiju Das		reg = <7>;
97361b0dcbSBiju Das		rxc-skew-psec = <2400>;
98361b0dcbSBiju Das		txc-skew-psec = <2400>;
99361b0dcbSBiju Das		rxdv-skew-psec = <0>;
100361b0dcbSBiju Das		txdv-skew-psec = <0>;
101361b0dcbSBiju Das		rxd0-skew-psec = <0>;
102361b0dcbSBiju Das		rxd1-skew-psec = <0>;
103361b0dcbSBiju Das		rxd2-skew-psec = <0>;
104361b0dcbSBiju Das		rxd3-skew-psec = <0>;
105361b0dcbSBiju Das		txd0-skew-psec = <0>;
106361b0dcbSBiju Das		txd1-skew-psec = <0>;
107361b0dcbSBiju Das		txd2-skew-psec = <0>;
108361b0dcbSBiju Das		txd3-skew-psec = <0>;
109361b0dcbSBiju Das	};
110361b0dcbSBiju Das};
111361b0dcbSBiju Das
112361b0dcbSBiju Das&eth1 {
113361b0dcbSBiju Das	pinctrl-0 = <&eth1_pins>;
114361b0dcbSBiju Das	pinctrl-names = "default";
115361b0dcbSBiju Das	phy-handle = <&phy1>;
116361b0dcbSBiju Das	phy-mode = "rgmii-id";
117361b0dcbSBiju Das	status = "okay";
118361b0dcbSBiju Das
119361b0dcbSBiju Das	phy1: ethernet-phy@7 {
120361b0dcbSBiju Das		compatible = "ethernet-phy-id0022.1640",
121361b0dcbSBiju Das			     "ethernet-phy-ieee802.3-c22";
122361b0dcbSBiju Das		reg = <7>;
123361b0dcbSBiju Das		rxc-skew-psec = <2400>;
124361b0dcbSBiju Das		txc-skew-psec = <2400>;
125361b0dcbSBiju Das		rxdv-skew-psec = <0>;
126361b0dcbSBiju Das		txdv-skew-psec = <0>;
127361b0dcbSBiju Das		rxd0-skew-psec = <0>;
128361b0dcbSBiju Das		rxd1-skew-psec = <0>;
129361b0dcbSBiju Das		rxd2-skew-psec = <0>;
130361b0dcbSBiju Das		rxd3-skew-psec = <0>;
131361b0dcbSBiju Das		txd0-skew-psec = <0>;
132361b0dcbSBiju Das		txd1-skew-psec = <0>;
133361b0dcbSBiju Das		txd2-skew-psec = <0>;
134361b0dcbSBiju Das		txd3-skew-psec = <0>;
135361b0dcbSBiju Das	};
136361b0dcbSBiju Das};
137361b0dcbSBiju Das
13855c68261SLad Prabhakar&extal_clk {
13955c68261SLad Prabhakar	clock-frequency = <24000000>;
14055c68261SLad Prabhakar};
14103f7d78eSLad Prabhakar
142*d563f4baSBiju Das&gpu {
143*d563f4baSBiju Das	mali-supply = <&reg_1p1v>;
144*d563f4baSBiju Das};
145*d563f4baSBiju Das
14600d071e2SBiju Das&ostm1 {
14700d071e2SBiju Das	status = "okay";
14800d071e2SBiju Das};
14900d071e2SBiju Das
15000d071e2SBiju Das&ostm2 {
15100d071e2SBiju Das	status = "okay";
15200d071e2SBiju Das};
15300d071e2SBiju Das
15403f7d78eSLad Prabhakar&pinctrl {
15503f7d78eSLad Prabhakar	adc_pins: adc {
15603f7d78eSLad Prabhakar		pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */
15703f7d78eSLad Prabhakar	};
158a60a311cSBiju Das
159361b0dcbSBiju Das	eth0_pins: eth0 {
160361b0dcbSBiju Das		pinmux = <RZG2L_PORT_PINMUX(28, 1, 1)>, /* ET0_LINKSTA */
161361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */
162361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */
163361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */
164361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */
165361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */
166361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */
167361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */
168361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */
169361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */
170361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */
171361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */
172361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */
173361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */
174361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(26, 1, 1)>; /* ET0_RXD3 */
175361b0dcbSBiju Das	};
176361b0dcbSBiju Das
177361b0dcbSBiju Das	eth1_pins: eth1 {
178361b0dcbSBiju Das		pinmux = <RZG2L_PORT_PINMUX(37, 2, 1)>, /* ET1_LINKSTA */
179361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(37, 0, 1)>, /* ET1_MDC */
180361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(37, 1, 1)>, /* ET1_MDIO */
181361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(29, 0, 1)>, /* ET1_TXC */
182361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(29, 1, 1)>, /* ET1_TX_CTL */
183361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(30, 0, 1)>, /* ET1_TXD0 */
184361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(30, 1, 1)>, /* ET1_TXD1 */
185361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(31, 0, 1)>, /* ET1_TXD2 */
186361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(31, 1, 1)>, /* ET1_TXD3 */
187361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(33, 1, 1)>, /* ET1_RXC */
188361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(34, 0, 1)>, /* ET1_RX_CTL */
189361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(34, 1, 1)>, /* ET1_RXD0 */
190361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(35, 0, 1)>, /* ET1_RXD1 */
191361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(35, 1, 1)>, /* ET1_RXD2 */
192361b0dcbSBiju Das			 <RZG2L_PORT_PINMUX(36, 0, 1)>; /* ET1_RXD3 */
193361b0dcbSBiju Das	};
194361b0dcbSBiju Das
195a60a311cSBiju Das	gpio-sd0-pwr-en-hog {
196a60a311cSBiju Das		gpio-hog;
197a60a311cSBiju Das		gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>;
198a60a311cSBiju Das		output-high;
199a60a311cSBiju Das		line-name = "gpio_sd0_pwr_en";
20003f7d78eSLad Prabhakar	};
201a60a311cSBiju Das
202c81bd70fSLad Prabhakar	qspi0_pins: qspi0 {
203c81bd70fSLad Prabhakar		qspi0-data {
204c81bd70fSLad Prabhakar			pins = "QSPI0_IO0", "QSPI0_IO1", "QSPI0_IO2", "QSPI0_IO3";
205c81bd70fSLad Prabhakar			power-source = <1800>;
206c81bd70fSLad Prabhakar		};
207c81bd70fSLad Prabhakar
208c81bd70fSLad Prabhakar		qspi0-ctrl {
209c81bd70fSLad Prabhakar			pins = "QSPI0_SPCLK", "QSPI0_SSL", "QSPI_RESET#";
210c81bd70fSLad Prabhakar			power-source = <1800>;
211c81bd70fSLad Prabhakar		};
212c81bd70fSLad Prabhakar	};
213c81bd70fSLad Prabhakar
214a60a311cSBiju Das	/*
215a60a311cSBiju Das	 * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2]
216a60a311cSBiju Das	 * The below switch logic can be used to select the device between
217a60a311cSBiju Das	 * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT.
218a60a311cSBiju Das	 * SW1[2] should be at position 2/OFF to enable 64 GB eMMC
219a60a311cSBiju Das	 * SW1[2] should be at position 3/ON to enable uSD card CN3
220a60a311cSBiju Das	 */
221a60a311cSBiju Das	sd0-dev-sel-hog {
222a60a311cSBiju Das		gpio-hog;
223a60a311cSBiju Das		gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>;
224a60a311cSBiju Das		output-high;
225a60a311cSBiju Das		line-name = "sd0_dev_sel";
226a60a311cSBiju Das	};
227a60a311cSBiju Das
228a60a311cSBiju Das	sdhi0_emmc_pins: sd0emmc {
229a60a311cSBiju Das		sd0_emmc_data {
230a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
231a60a311cSBiju Das			       "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
232a60a311cSBiju Das			power-source = <1800>;
233a60a311cSBiju Das		};
234a60a311cSBiju Das
235a60a311cSBiju Das		sd0_emmc_ctrl {
236a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
237a60a311cSBiju Das			power-source = <1800>;
238a60a311cSBiju Das		};
239a60a311cSBiju Das
240a60a311cSBiju Das		sd0_emmc_rst {
241a60a311cSBiju Das			pins = "SD0_RST#";
242a60a311cSBiju Das			power-source = <1800>;
243a60a311cSBiju Das		};
244a60a311cSBiju Das	};
245a60a311cSBiju Das
246a60a311cSBiju Das	sdhi0_pins: sd0 {
247a60a311cSBiju Das		sd0_data {
248a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
249a60a311cSBiju Das			power-source = <3300>;
250a60a311cSBiju Das		};
251a60a311cSBiju Das
252a60a311cSBiju Das		sd0_ctrl {
253a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
254a60a311cSBiju Das			power-source = <3300>;
255a60a311cSBiju Das		};
256a60a311cSBiju Das
257a60a311cSBiju Das		sd0_mux {
258a60a311cSBiju Das			pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
259a60a311cSBiju Das		};
260a60a311cSBiju Das	};
261a60a311cSBiju Das
262a60a311cSBiju Das	sdhi0_pins_uhs: sd0_uhs {
263a60a311cSBiju Das		sd0_data_uhs {
264a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
265a60a311cSBiju Das			power-source = <1800>;
266a60a311cSBiju Das		};
267a60a311cSBiju Das
268a60a311cSBiju Das		sd0_ctrl_uhs {
269a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
270a60a311cSBiju Das			power-source = <1800>;
271a60a311cSBiju Das		};
272a60a311cSBiju Das
273a60a311cSBiju Das		sd0_mux_uhs {
274a60a311cSBiju Das			pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
275a60a311cSBiju Das		};
276a60a311cSBiju Das	};
277a60a311cSBiju Das};
278a60a311cSBiju Das
279c81bd70fSLad Prabhakar&sbc {
280c81bd70fSLad Prabhakar	pinctrl-0 = <&qspi0_pins>;
281c81bd70fSLad Prabhakar	pinctrl-names = "default";
282c81bd70fSLad Prabhakar	status = "okay";
283c81bd70fSLad Prabhakar
284c81bd70fSLad Prabhakar	flash@0 {
285c81bd70fSLad Prabhakar		compatible = "micron,mt25qu512a", "jedec,spi-nor";
286c81bd70fSLad Prabhakar		reg = <0>;
287c81bd70fSLad Prabhakar		m25p,fast-read;
288c81bd70fSLad Prabhakar		spi-max-frequency = <50000000>;
289c81bd70fSLad Prabhakar		spi-rx-bus-width = <4>;
290c81bd70fSLad Prabhakar
291c81bd70fSLad Prabhakar		partitions {
292c81bd70fSLad Prabhakar			compatible = "fixed-partitions";
293c81bd70fSLad Prabhakar			#address-cells = <1>;
294c81bd70fSLad Prabhakar			#size-cells = <1>;
295c81bd70fSLad Prabhakar
296c81bd70fSLad Prabhakar			boot@0 {
297c81bd70fSLad Prabhakar				reg = <0x00000000 0x2000000>;
298c81bd70fSLad Prabhakar				read-only;
299c81bd70fSLad Prabhakar			};
300c81bd70fSLad Prabhakar			user@2000000 {
301c81bd70fSLad Prabhakar				reg = <0x2000000 0x2000000>;
302c81bd70fSLad Prabhakar			};
303c81bd70fSLad Prabhakar		};
304c81bd70fSLad Prabhakar	};
305c81bd70fSLad Prabhakar};
306c81bd70fSLad Prabhakar
307a60a311cSBiju Das#if SDHI
308a60a311cSBiju Das&sdhi0 {
309a60a311cSBiju Das	pinctrl-0 = <&sdhi0_pins>;
310a60a311cSBiju Das	pinctrl-1 = <&sdhi0_pins_uhs>;
311a60a311cSBiju Das	pinctrl-names = "default", "state_uhs";
312a60a311cSBiju Das
313a60a311cSBiju Das	vmmc-supply = <&reg_3p3v>;
314a60a311cSBiju Das	vqmmc-supply = <&vccq_sdhi0>;
315a60a311cSBiju Das	bus-width = <4>;
316a60a311cSBiju Das	sd-uhs-sdr50;
317a60a311cSBiju Das	sd-uhs-sdr104;
318a60a311cSBiju Das	status = "okay";
319a60a311cSBiju Das};
320a60a311cSBiju Das#endif
321a60a311cSBiju Das
322a60a311cSBiju Das#if EMMC
323a60a311cSBiju Das&sdhi0 {
324a60a311cSBiju Das	pinctrl-0 = <&sdhi0_emmc_pins>;
325a60a311cSBiju Das	pinctrl-1 = <&sdhi0_emmc_pins>;
326a60a311cSBiju Das	pinctrl-names = "default", "state_uhs";
327a60a311cSBiju Das
328a60a311cSBiju Das	vmmc-supply = <&reg_3p3v>;
329a60a311cSBiju Das	vqmmc-supply = <&reg_1p8v>;
330a60a311cSBiju Das	bus-width = <8>;
331a60a311cSBiju Das	mmc-hs200-1_8v;
332a60a311cSBiju Das	non-removable;
333a60a311cSBiju Das	fixed-emmc-driver-type = <1>;
334a60a311cSBiju Das	status = "okay";
335a60a311cSBiju Das};
336a60a311cSBiju Das#endif
33744c2d2c2SBiju Das
33844c2d2c2SBiju Das&wdt0 {
33944c2d2c2SBiju Das	status = "okay";
34044c2d2c2SBiju Das	timeout-sec = <60>;
34144c2d2c2SBiju Das};
34244c2d2c2SBiju Das
34344c2d2c2SBiju Das&wdt1 {
34444c2d2c2SBiju Das	status = "okay";
34544c2d2c2SBiju Das	timeout-sec = <60>;
34644c2d2c2SBiju Das};
34744c2d2c2SBiju Das
34844c2d2c2SBiju Das&wdt2 {
34944c2d2c2SBiju Das	status = "okay";
35044c2d2c2SBiju Das	timeout-sec = <60>;
35144c2d2c2SBiju Das};
352