1// SPDX-License-Identifier: GPL-2.0+ OR MIT
2/*
3 * at91-sama5d3_eds.dts - Device Tree file for the SAMA5D3 Ethernet
4 *    Development System board.
5 *
6 * Copyright (C) 2022 Microchip Technology Inc. and its subsidiaries
7 *
8 * Author: Jerry Ray <jerry.ray@microchip.com>
9 */
10/dts-v1/;
11#include "sama5d36.dtsi"
12
13/ {
14	model = "SAMA5D3 Ethernet Development System";
15	compatible = "microchip,sama5d3-eds", "atmel,sama5d36",
16		     "atmel,sama5d3", "atmel,sama5";
17
18	chosen {
19		stdout-path = "serial0:115200n8";
20	};
21
22	gpio-keys {
23		compatible = "gpio-keys";
24
25		pinctrl-names = "default";
26		pinctrl-0 = <&pinctrl_key_gpio>;
27
28		button-3 {
29			label = "PB_USER";
30			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
31			linux,code = <0x104>;
32			wakeup-source;
33		};
34	};
35
36	memory@20000000 {
37		reg = <0x20000000 0x10000000>;
38	};
39
40	vcc_3v3_reg: regulator-1 {
41		compatible = "regulator-fixed";
42		regulator-name = "VCC_3V3";
43		regulator-min-microvolt = <3300000>;
44		regulator-max-microvolt = <3300000>;
45		regulator-always-on;
46	};
47
48	vcc_2v5_reg: regulator-2 {
49		compatible = "regulator-fixed";
50		regulator-name = "VCC_2V5";
51		regulator-min-microvolt = <2500000>;
52		regulator-max-microvolt = <2500000>;
53		regulator-always-on;
54		vin-supply = <&vcc_3v3_reg>;
55	};
56
57	vcc_1v8_reg: regulator-3 {
58		compatible = "regulator-fixed";
59		regulator-name = "VCC_1V8";
60		regulator-min-microvolt = <1800000>;
61		regulator-max-microvolt = <1800000>;
62		regulator-always-on;
63		vin-supply = <&vcc_3v3_reg>;
64	};
65
66	vcc_1v2_reg: regulator-4 {
67		compatible = "regulator-fixed";
68		regulator-name = "VCC_1V2";
69		regulator-min-microvolt = <1200000>;
70		regulator-max-microvolt = <1200000>;
71		regulator-always-on;
72	};
73
74	vcc_mmc0_reg: regulator-5 {
75		compatible = "regulator-fixed";
76		regulator-name = "mmc0-card-supply";
77		regulator-min-microvolt = <3300000>;
78		regulator-max-microvolt = <3300000>;
79		regulator-always-on;
80		pinctrl-names = "default";
81		pinctrl-0 = <&pinctrl_vcc_mmc0_reg_gpio>;
82		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
83	};
84};
85
86&can0 {
87	status = "okay";
88};
89
90&dbgu {
91	status = "okay";
92};
93
94&ebi {
95	pinctrl-0 = <&pinctrl_ebi_nand_addr>;
96	pinctrl-names = "default";
97	status = "okay";
98
99	nand_controller: nand-controller {
100		status = "okay";
101
102		nand@3 {
103			reg = <0x3 0x0 0x2>;
104			atmel,rb = <0>;
105			nand-bus-width = <8>;
106			nand-ecc-mode = "hw";
107			nand-ecc-strength = <4>;
108			nand-ecc-step-size = <512>;
109			nand-on-flash-bbt;
110			label = "atmel_nand";
111
112			partitions {
113				compatible = "fixed-partitions";
114				#address-cells = <1>;
115				#size-cells = <1>;
116
117				at91bootstrap@0 {
118					label = "at91bootstrap";
119					reg = <0x0 0x40000>;
120				};
121
122				bootloader@40000 {
123					label = "bootloader";
124					reg = <0x40000 0xc0000>;
125				};
126
127				bootloaderenvred@100000 {
128					label = "bootloader env redundant";
129					reg = <0x100000 0x40000>;
130				};
131
132				bootloaderenv@140000 {
133					label = "bootloader env";
134					reg = <0x140000 0x40000>;
135				};
136
137				dtb@180000 {
138					label = "device tree";
139					reg = <0x180000 0x80000>;
140				};
141
142				kernel@200000 {
143					label = "kernel";
144					reg = <0x200000 0x600000>;
145				};
146
147				rootfs@800000 {
148					label = "rootfs";
149					reg = <0x800000 0x0f800000>;
150				};
151			};
152		};
153	};
154};
155
156&i2c0 {
157	pinctrl-0 = <&pinctrl_i2c0_pu>;
158	status = "okay";
159};
160
161&i2c1 {
162	status = "okay";
163};
164
165&i2c2 {
166	pinctrl-0 = <&pinctrl_i2c2_pu>;
167	status = "okay";
168};
169
170&main_xtal {
171	clock-frequency = <12000000>;
172};
173
174&mmc0 {
175	pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3
176		     &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
177	vmmc-supply = <&vcc_mmc0_reg>;
178	vqmmc-supply = <&vcc_3v3_reg>;
179	status = "okay";
180	slot@0 {
181		reg = <0>;
182		bus-width = <8>;
183		cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
184	};
185};
186
187&pinctrl {
188	board {
189		pinctrl_i2c0_pu: i2c0-pu {
190			atmel,pins =
191				<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
192				<AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
193		};
194
195		pinctrl_i2c2_pu: i2c2-pu {
196			atmel,pins =
197				<AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>,
198				<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
199		};
200
201		pinctrl_key_gpio: key-gpio-0 {
202			atmel,pins =
203				<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
204		};
205
206		pinctrl_mmc0_cd: mmc0-cd {
207			atmel,pins =
208				<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
209		};
210
211		/* Reserved for reset signal to the RGMII connector. */
212		pinctrl_rgmii_rstn: rgmii-rstn {
213			atmel,pins =
214				<AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
215		};
216
217		/* Reserved for an interrupt line from the RMII and RGMII connectors. */
218		pinctrl_spi_irqn: spi-irqn {
219			atmel,pins =
220				<AT91_PIOB 28 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
221		};
222
223		pinctrl_spi0_cs: spi0-cs-default {
224			atmel,pins =
225				<AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
226				 AT91_PIOD 16 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
227		};
228
229		pinctrl_spi1_cs: spi1-cs-default {
230			atmel,pins = <AT91_PIOC 25 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
231				      AT91_PIOC 28 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
232		};
233
234		pinctrl_usba_vbus: usba-vbus {
235			atmel,pins =
236				<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
237		};
238
239		pinctrl_usb_default: usb-default {
240			atmel,pins =
241				<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
242				 AT91_PIOE 4 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
243		};
244
245		/* Reserved for VBUS fault interrupt. */
246		pinctrl_vbusfault_irqn: vbusfault-irqn {
247			atmel,pins =
248				<AT91_PIOE 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
249		};
250
251		pinctrl_vcc_mmc0_reg_gpio: vcc-mmc0-reg-gpio-default {
252			atmel,pins = <AT91_PIOE 2 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
253		};
254	};
255};
256
257&slow_xtal {
258	clock-frequency = <32768>;
259};
260
261&spi0 {
262	pinctrl-names = "default", "cs";
263	pinctrl-1 = <&pinctrl_spi0_cs>;
264	cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
265	status = "okay";
266};
267
268&spi1 {
269	pinctrl-names = "default", "cs";
270	pinctrl-1 = <&pinctrl_spi1_cs>;
271	cs-gpios = <&pioC 25 0>, <0>, <0>, <&pioC 28 0>;
272	status = "okay";
273};
274
275&tcb0 {
276	timer0: timer@0 {
277		compatible = "atmel,tcb-timer";
278		reg = <0>;
279	};
280
281	timer1: timer@1 {
282		compatible = "atmel,tcb-timer";
283		reg = <1>;
284	};
285};
286
287&usb0 {	/* USB Device port with VBUS detection. */
288	atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;
289	pinctrl-names = "default";
290	pinctrl-0 = <&pinctrl_usba_vbus>;
291	status = "okay";
292};
293
294&usb1 {	/* 3-port Host. First port is unused. */
295	atmel,vbus-gpio = <0
296			   &pioE 3 GPIO_ACTIVE_HIGH
297			   &pioE 4 GPIO_ACTIVE_HIGH
298			  >;
299	num-ports = <3>;
300	pinctrl-names = "default";
301	pinctrl-0 = <&pinctrl_usb_default>;
302	status = "okay";
303};
304
305&usb2 {
306	status = "okay";
307};
308