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
8*a60a311cSBiju Das#include <dt-bindings/gpio/gpio.h>
903f7d78eSLad Prabhakar#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
1003f7d78eSLad Prabhakar
11*a60a311cSBiju Das/* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */
12*a60a311cSBiju Das#define EMMC	1
13*a60a311cSBiju Das
14*a60a311cSBiju Das/*
15*a60a311cSBiju Das * To enable uSD card on CN3,
16*a60a311cSBiju Das * SW1[2] should be at position 3/ON.
17*a60a311cSBiju Das * Disable eMMC by setting "#define EMMC	0" above.
18*a60a311cSBiju Das */
19*a60a311cSBiju Das#define SDHI	(!EMMC)
20*a60a311cSBiju Das
2155c68261SLad Prabhakar/ {
2255c68261SLad Prabhakar	memory@48000000 {
2355c68261SLad Prabhakar		device_type = "memory";
2455c68261SLad Prabhakar		/* first 128MB is reserved for secure area. */
2555c68261SLad Prabhakar		reg = <0x0 0x48000000 0x0 0x78000000>;
2655c68261SLad Prabhakar	};
27*a60a311cSBiju Das
28*a60a311cSBiju Das	reg_1p8v: regulator0 {
29*a60a311cSBiju Das		compatible = "regulator-fixed";
30*a60a311cSBiju Das		regulator-name = "fixed-1.8V";
31*a60a311cSBiju Das		regulator-min-microvolt = <1800000>;
32*a60a311cSBiju Das		regulator-max-microvolt = <1800000>;
33*a60a311cSBiju Das		regulator-boot-on;
34*a60a311cSBiju Das		regulator-always-on;
35*a60a311cSBiju Das	};
36*a60a311cSBiju Das
37*a60a311cSBiju Das	reg_3p3v: regulator1 {
38*a60a311cSBiju Das		compatible = "regulator-fixed";
39*a60a311cSBiju Das		regulator-name = "fixed-3.3V";
40*a60a311cSBiju Das		regulator-min-microvolt = <3300000>;
41*a60a311cSBiju Das		regulator-max-microvolt = <3300000>;
42*a60a311cSBiju Das		regulator-boot-on;
43*a60a311cSBiju Das		regulator-always-on;
44*a60a311cSBiju Das	};
45*a60a311cSBiju Das
46*a60a311cSBiju Das	vccq_sdhi0: regulator-vccq-sdhi0 {
47*a60a311cSBiju Das		compatible = "regulator-gpio";
48*a60a311cSBiju Das
49*a60a311cSBiju Das		regulator-name = "SDHI0 VccQ";
50*a60a311cSBiju Das		regulator-min-microvolt = <1800000>;
51*a60a311cSBiju Das		regulator-max-microvolt = <3300000>;
52*a60a311cSBiju Das		states = <3300000 1>, <1800000 0>;
53*a60a311cSBiju Das		regulator-boot-on;
54*a60a311cSBiju Das		gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>;
55*a60a311cSBiju Das		regulator-always-on;
56*a60a311cSBiju Das	};
5755c68261SLad Prabhakar};
5855c68261SLad Prabhakar
5903f7d78eSLad Prabhakar&adc {
6003f7d78eSLad Prabhakar	pinctrl-0 = <&adc_pins>;
6103f7d78eSLad Prabhakar	pinctrl-names = "default";
6203f7d78eSLad Prabhakar	status = "okay";
6303f7d78eSLad Prabhakar
6403f7d78eSLad Prabhakar	/delete-node/ channel@6;
6503f7d78eSLad Prabhakar	/delete-node/ channel@7;
6603f7d78eSLad Prabhakar};
6703f7d78eSLad Prabhakar
6855c68261SLad Prabhakar&extal_clk {
6955c68261SLad Prabhakar	clock-frequency = <24000000>;
7055c68261SLad Prabhakar};
7103f7d78eSLad Prabhakar
7203f7d78eSLad Prabhakar&pinctrl {
7303f7d78eSLad Prabhakar	adc_pins: adc {
7403f7d78eSLad Prabhakar		pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */
7503f7d78eSLad Prabhakar	};
76*a60a311cSBiju Das
77*a60a311cSBiju Das	gpio-sd0-pwr-en-hog {
78*a60a311cSBiju Das		gpio-hog;
79*a60a311cSBiju Das		gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>;
80*a60a311cSBiju Das		output-high;
81*a60a311cSBiju Das		line-name = "gpio_sd0_pwr_en";
8203f7d78eSLad Prabhakar	};
83*a60a311cSBiju Das
84*a60a311cSBiju Das	/*
85*a60a311cSBiju Das	 * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2]
86*a60a311cSBiju Das	 * The below switch logic can be used to select the device between
87*a60a311cSBiju Das	 * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT.
88*a60a311cSBiju Das	 * SW1[2] should be at position 2/OFF to enable 64 GB eMMC
89*a60a311cSBiju Das	 * SW1[2] should be at position 3/ON to enable uSD card CN3
90*a60a311cSBiju Das	 */
91*a60a311cSBiju Das	sd0-dev-sel-hog {
92*a60a311cSBiju Das		gpio-hog;
93*a60a311cSBiju Das		gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>;
94*a60a311cSBiju Das		output-high;
95*a60a311cSBiju Das		line-name = "sd0_dev_sel";
96*a60a311cSBiju Das	};
97*a60a311cSBiju Das
98*a60a311cSBiju Das	sdhi0_emmc_pins: sd0emmc {
99*a60a311cSBiju Das		sd0_emmc_data {
100*a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
101*a60a311cSBiju Das			       "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
102*a60a311cSBiju Das			power-source = <1800>;
103*a60a311cSBiju Das		};
104*a60a311cSBiju Das
105*a60a311cSBiju Das		sd0_emmc_ctrl {
106*a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
107*a60a311cSBiju Das			power-source = <1800>;
108*a60a311cSBiju Das		};
109*a60a311cSBiju Das
110*a60a311cSBiju Das		sd0_emmc_rst {
111*a60a311cSBiju Das			pins = "SD0_RST#";
112*a60a311cSBiju Das			power-source = <1800>;
113*a60a311cSBiju Das		};
114*a60a311cSBiju Das	};
115*a60a311cSBiju Das
116*a60a311cSBiju Das	sdhi0_pins: sd0 {
117*a60a311cSBiju Das		sd0_data {
118*a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
119*a60a311cSBiju Das			power-source = <3300>;
120*a60a311cSBiju Das		};
121*a60a311cSBiju Das
122*a60a311cSBiju Das		sd0_ctrl {
123*a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
124*a60a311cSBiju Das			power-source = <3300>;
125*a60a311cSBiju Das		};
126*a60a311cSBiju Das
127*a60a311cSBiju Das		sd0_mux {
128*a60a311cSBiju Das			pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
129*a60a311cSBiju Das		};
130*a60a311cSBiju Das	};
131*a60a311cSBiju Das
132*a60a311cSBiju Das	sdhi0_pins_uhs: sd0_uhs {
133*a60a311cSBiju Das		sd0_data_uhs {
134*a60a311cSBiju Das			pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
135*a60a311cSBiju Das			power-source = <1800>;
136*a60a311cSBiju Das		};
137*a60a311cSBiju Das
138*a60a311cSBiju Das		sd0_ctrl_uhs {
139*a60a311cSBiju Das			pins = "SD0_CLK", "SD0_CMD";
140*a60a311cSBiju Das			power-source = <1800>;
141*a60a311cSBiju Das		};
142*a60a311cSBiju Das
143*a60a311cSBiju Das		sd0_mux_uhs {
144*a60a311cSBiju Das			pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
145*a60a311cSBiju Das		};
146*a60a311cSBiju Das	};
147*a60a311cSBiju Das};
148*a60a311cSBiju Das
149*a60a311cSBiju Das#if SDHI
150*a60a311cSBiju Das&sdhi0 {
151*a60a311cSBiju Das	pinctrl-0 = <&sdhi0_pins>;
152*a60a311cSBiju Das	pinctrl-1 = <&sdhi0_pins_uhs>;
153*a60a311cSBiju Das	pinctrl-names = "default", "state_uhs";
154*a60a311cSBiju Das
155*a60a311cSBiju Das	vmmc-supply = <&reg_3p3v>;
156*a60a311cSBiju Das	vqmmc-supply = <&vccq_sdhi0>;
157*a60a311cSBiju Das	bus-width = <4>;
158*a60a311cSBiju Das	sd-uhs-sdr50;
159*a60a311cSBiju Das	sd-uhs-sdr104;
160*a60a311cSBiju Das	status = "okay";
161*a60a311cSBiju Das};
162*a60a311cSBiju Das#endif
163*a60a311cSBiju Das
164*a60a311cSBiju Das#if EMMC
165*a60a311cSBiju Das&sdhi0 {
166*a60a311cSBiju Das	pinctrl-0 = <&sdhi0_emmc_pins>;
167*a60a311cSBiju Das	pinctrl-1 = <&sdhi0_emmc_pins>;
168*a60a311cSBiju Das	pinctrl-names = "default", "state_uhs";
169*a60a311cSBiju Das
170*a60a311cSBiju Das	vmmc-supply = <&reg_3p3v>;
171*a60a311cSBiju Das	vqmmc-supply = <&reg_1p8v>;
172*a60a311cSBiju Das	bus-width = <8>;
173*a60a311cSBiju Das	mmc-hs200-1_8v;
174*a60a311cSBiju Das	non-removable;
175*a60a311cSBiju Das	fixed-emmc-driver-type = <1>;
176*a60a311cSBiju Das	status = "okay";
177*a60a311cSBiju Das};
178*a60a311cSBiju Das#endif
179