]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - src/arm64/renesas/rzg2l-smarc-som.dtsi
Import device-tree files from Linux 6.2
[FreeBSD/FreeBSD.git] / src / arm64 / renesas / rzg2l-smarc-som.dtsi
1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 /*
3  * Device Tree Source for the RZ/{G2L,V2L} SMARC SOM common parts
4  *
5  * Copyright (C) 2021 Renesas Electronics Corp.
6  */
7
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/interrupt-controller/irqc-rzg2l.h>
10 #include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
11
12 /* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */
13 #define EMMC    1
14
15 /*
16  * To enable uSD card on CN3,
17  * SW1[2] should be at position 3/ON.
18  * Disable eMMC by setting "#define EMMC        0" above.
19  */
20 #define SDHI    (!EMMC)
21
22 / {
23         aliases {
24                 ethernet0 = &eth0;
25                 ethernet1 = &eth1;
26         };
27
28         chosen {
29                 bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
30         };
31
32         memory@48000000 {
33                 device_type = "memory";
34                 /* first 128MB is reserved for secure area. */
35                 reg = <0x0 0x48000000 0x0 0x78000000>;
36         };
37
38         reg_1p8v: regulator-1p8v {
39                 compatible = "regulator-fixed";
40                 regulator-name = "fixed-1.8V";
41                 regulator-min-microvolt = <1800000>;
42                 regulator-max-microvolt = <1800000>;
43                 regulator-boot-on;
44                 regulator-always-on;
45         };
46
47         reg_3p3v: regulator-3p3v {
48                 compatible = "regulator-fixed";
49                 regulator-name = "fixed-3.3V";
50                 regulator-min-microvolt = <3300000>;
51                 regulator-max-microvolt = <3300000>;
52                 regulator-boot-on;
53                 regulator-always-on;
54         };
55
56         reg_1p1v: regulator-vdd-core {
57                 compatible = "regulator-fixed";
58                 regulator-name = "fixed-1.1V";
59                 regulator-min-microvolt = <1100000>;
60                 regulator-max-microvolt = <1100000>;
61                 regulator-boot-on;
62                 regulator-always-on;
63         };
64
65         vccq_sdhi0: regulator-vccq-sdhi0 {
66                 compatible = "regulator-gpio";
67
68                 regulator-name = "SDHI0 VccQ";
69                 regulator-min-microvolt = <1800000>;
70                 regulator-max-microvolt = <3300000>;
71                 states = <3300000 1>, <1800000 0>;
72                 regulator-boot-on;
73                 gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>;
74                 regulator-always-on;
75         };
76 };
77
78 &adc {
79         pinctrl-0 = <&adc_pins>;
80         pinctrl-names = "default";
81         status = "okay";
82
83         /delete-node/ channel@6;
84         /delete-node/ channel@7;
85 };
86
87 &eth0 {
88         pinctrl-0 = <&eth0_pins>;
89         pinctrl-names = "default";
90         phy-handle = <&phy0>;
91         phy-mode = "rgmii-id";
92         status = "okay";
93
94         phy0: ethernet-phy@7 {
95                 compatible = "ethernet-phy-id0022.1640",
96                              "ethernet-phy-ieee802.3-c22";
97                 reg = <7>;
98                 interrupt-parent = <&irqc>;
99                 interrupts = <RZG2L_IRQ2 IRQ_TYPE_LEVEL_LOW>;
100                 rxc-skew-psec = <2400>;
101                 txc-skew-psec = <2400>;
102                 rxdv-skew-psec = <0>;
103                 txdv-skew-psec = <0>;
104                 rxd0-skew-psec = <0>;
105                 rxd1-skew-psec = <0>;
106                 rxd2-skew-psec = <0>;
107                 rxd3-skew-psec = <0>;
108                 txd0-skew-psec = <0>;
109                 txd1-skew-psec = <0>;
110                 txd2-skew-psec = <0>;
111                 txd3-skew-psec = <0>;
112         };
113 };
114
115 &eth1 {
116         pinctrl-0 = <&eth1_pins>;
117         pinctrl-names = "default";
118         phy-handle = <&phy1>;
119         phy-mode = "rgmii-id";
120         status = "okay";
121
122         phy1: ethernet-phy@7 {
123                 compatible = "ethernet-phy-id0022.1640",
124                              "ethernet-phy-ieee802.3-c22";
125                 reg = <7>;
126                 interrupt-parent = <&irqc>;
127                 interrupts = <RZG2L_IRQ3 IRQ_TYPE_LEVEL_LOW>;
128                 rxc-skew-psec = <2400>;
129                 txc-skew-psec = <2400>;
130                 rxdv-skew-psec = <0>;
131                 txdv-skew-psec = <0>;
132                 rxd0-skew-psec = <0>;
133                 rxd1-skew-psec = <0>;
134                 rxd2-skew-psec = <0>;
135                 rxd3-skew-psec = <0>;
136                 txd0-skew-psec = <0>;
137                 txd1-skew-psec = <0>;
138                 txd2-skew-psec = <0>;
139                 txd3-skew-psec = <0>;
140         };
141 };
142
143 &extal_clk {
144         clock-frequency = <24000000>;
145 };
146
147 &gpu {
148         mali-supply = <&reg_1p1v>;
149 };
150
151 &ostm1 {
152         status = "okay";
153 };
154
155 &ostm2 {
156         status = "okay";
157 };
158
159 &pinctrl {
160         adc_pins: adc {
161                 pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */
162         };
163
164         eth0_pins: eth0 {
165                 pinmux = <RZG2L_PORT_PINMUX(28, 1, 1)>, /* ET0_LINKSTA */
166                          <RZG2L_PORT_PINMUX(27, 1, 1)>, /* ET0_MDC */
167                          <RZG2L_PORT_PINMUX(28, 0, 1)>, /* ET0_MDIO */
168                          <RZG2L_PORT_PINMUX(20, 0, 1)>, /* ET0_TXC */
169                          <RZG2L_PORT_PINMUX(20, 1, 1)>, /* ET0_TX_CTL */
170                          <RZG2L_PORT_PINMUX(20, 2, 1)>, /* ET0_TXD0 */
171                          <RZG2L_PORT_PINMUX(21, 0, 1)>, /* ET0_TXD1 */
172                          <RZG2L_PORT_PINMUX(21, 1, 1)>, /* ET0_TXD2 */
173                          <RZG2L_PORT_PINMUX(22, 0, 1)>, /* ET0_TXD3 */
174                          <RZG2L_PORT_PINMUX(24, 0, 1)>, /* ET0_RXC */
175                          <RZG2L_PORT_PINMUX(24, 1, 1)>, /* ET0_RX_CTL */
176                          <RZG2L_PORT_PINMUX(25, 0, 1)>, /* ET0_RXD0 */
177                          <RZG2L_PORT_PINMUX(25, 1, 1)>, /* ET0_RXD1 */
178                          <RZG2L_PORT_PINMUX(26, 0, 1)>, /* ET0_RXD2 */
179                          <RZG2L_PORT_PINMUX(26, 1, 1)>, /* ET0_RXD3 */
180                          <RZG2L_PORT_PINMUX(1, 0, 1)>;  /* IRQ2 */
181         };
182
183         eth1_pins: eth1 {
184                 pinmux = <RZG2L_PORT_PINMUX(37, 2, 1)>, /* ET1_LINKSTA */
185                          <RZG2L_PORT_PINMUX(37, 0, 1)>, /* ET1_MDC */
186                          <RZG2L_PORT_PINMUX(37, 1, 1)>, /* ET1_MDIO */
187                          <RZG2L_PORT_PINMUX(29, 0, 1)>, /* ET1_TXC */
188                          <RZG2L_PORT_PINMUX(29, 1, 1)>, /* ET1_TX_CTL */
189                          <RZG2L_PORT_PINMUX(30, 0, 1)>, /* ET1_TXD0 */
190                          <RZG2L_PORT_PINMUX(30, 1, 1)>, /* ET1_TXD1 */
191                          <RZG2L_PORT_PINMUX(31, 0, 1)>, /* ET1_TXD2 */
192                          <RZG2L_PORT_PINMUX(31, 1, 1)>, /* ET1_TXD3 */
193                          <RZG2L_PORT_PINMUX(33, 1, 1)>, /* ET1_RXC */
194                          <RZG2L_PORT_PINMUX(34, 0, 1)>, /* ET1_RX_CTL */
195                          <RZG2L_PORT_PINMUX(34, 1, 1)>, /* ET1_RXD0 */
196                          <RZG2L_PORT_PINMUX(35, 0, 1)>, /* ET1_RXD1 */
197                          <RZG2L_PORT_PINMUX(35, 1, 1)>, /* ET1_RXD2 */
198                          <RZG2L_PORT_PINMUX(36, 0, 1)>, /* ET1_RXD3 */
199                          <RZG2L_PORT_PINMUX(1, 1, 1)>;  /* IRQ3 */
200         };
201
202         gpio-sd0-pwr-en-hog {
203                 gpio-hog;
204                 gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>;
205                 output-high;
206                 line-name = "gpio_sd0_pwr_en";
207         };
208
209         qspi0_pins: qspi0 {
210                 qspi0-data {
211                         pins = "QSPI0_IO0", "QSPI0_IO1", "QSPI0_IO2", "QSPI0_IO3";
212                         power-source = <1800>;
213                 };
214
215                 qspi0-ctrl {
216                         pins = "QSPI0_SPCLK", "QSPI0_SSL", "QSPI_RESET#";
217                         power-source = <1800>;
218                 };
219         };
220
221         /*
222          * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2]
223          * The below switch logic can be used to select the device between
224          * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT.
225          * SW1[2] should be at position 2/OFF to enable 64 GB eMMC
226          * SW1[2] should be at position 3/ON to enable uSD card CN3
227          */
228         sd0-dev-sel-hog {
229                 gpio-hog;
230                 gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>;
231                 output-high;
232                 line-name = "sd0_dev_sel";
233         };
234
235         sdhi0_emmc_pins: sd0emmc {
236                 sd0_emmc_data {
237                         pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3",
238                                "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7";
239                         power-source = <1800>;
240                 };
241
242                 sd0_emmc_ctrl {
243                         pins = "SD0_CLK", "SD0_CMD";
244                         power-source = <1800>;
245                 };
246
247                 sd0_emmc_rst {
248                         pins = "SD0_RST#";
249                         power-source = <1800>;
250                 };
251         };
252
253         sdhi0_pins: sd0 {
254                 sd0_data {
255                         pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
256                         power-source = <3300>;
257                 };
258
259                 sd0_ctrl {
260                         pins = "SD0_CLK", "SD0_CMD";
261                         power-source = <3300>;
262                 };
263
264                 sd0_mux {
265                         pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
266                 };
267         };
268
269         sdhi0_pins_uhs: sd0_uhs {
270                 sd0_data_uhs {
271                         pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3";
272                         power-source = <1800>;
273                 };
274
275                 sd0_ctrl_uhs {
276                         pins = "SD0_CLK", "SD0_CMD";
277                         power-source = <1800>;
278                 };
279
280                 sd0_mux_uhs {
281                         pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */
282                 };
283         };
284 };
285
286 &sbc {
287         pinctrl-0 = <&qspi0_pins>;
288         pinctrl-names = "default";
289         status = "okay";
290
291         flash@0 {
292                 compatible = "micron,mt25qu512a", "jedec,spi-nor";
293                 reg = <0>;
294                 m25p,fast-read;
295                 spi-max-frequency = <50000000>;
296                 spi-rx-bus-width = <4>;
297
298                 partitions {
299                         compatible = "fixed-partitions";
300                         #address-cells = <1>;
301                         #size-cells = <1>;
302
303                         boot@0 {
304                                 reg = <0x00000000 0x2000000>;
305                                 read-only;
306                         };
307                         user@2000000 {
308                                 reg = <0x2000000 0x2000000>;
309                         };
310                 };
311         };
312 };
313
314 #if SDHI
315 &sdhi0 {
316         pinctrl-0 = <&sdhi0_pins>;
317         pinctrl-1 = <&sdhi0_pins_uhs>;
318         pinctrl-names = "default", "state_uhs";
319
320         vmmc-supply = <&reg_3p3v>;
321         vqmmc-supply = <&vccq_sdhi0>;
322         bus-width = <4>;
323         sd-uhs-sdr50;
324         sd-uhs-sdr104;
325         status = "okay";
326 };
327 #endif
328
329 #if EMMC
330 &sdhi0 {
331         pinctrl-0 = <&sdhi0_emmc_pins>;
332         pinctrl-1 = <&sdhi0_emmc_pins>;
333         pinctrl-names = "default", "state_uhs";
334
335         vmmc-supply = <&reg_3p3v>;
336         vqmmc-supply = <&reg_1p8v>;
337         bus-width = <8>;
338         mmc-hs200-1_8v;
339         non-removable;
340         fixed-emmc-driver-type = <1>;
341         status = "okay";
342 };
343 #endif
344
345 &wdt0 {
346         status = "okay";
347         timeout-sec = <60>;
348 };
349
350 &wdt1 {
351         status = "okay";
352         timeout-sec = <60>;
353 };