1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * at91-sama5d4_xplained.dts - Device Tree file for SAMA5D4 Xplained board
4 *
5 *  Copyright (C) 2015 Atmel,
6 *                2015 Josh Wu <josh.wu@atmel.com>
7 */
8/dts-v1/;
9#include "sama5d4.dtsi"
10
11/ {
12	model = "Atmel SAMA5D4 Xplained";
13	compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
14
15	chosen {
16		stdout-path = "serial0:115200n8";
17	};
18
19	memory@20000000 {
20		reg = <0x20000000 0x20000000>;
21	};
22
23	clocks {
24		slow_xtal {
25			clock-frequency = <32768>;
26		};
27
28		main_xtal {
29			clock-frequency = <12000000>;
30		};
31	};
32
33	ahb {
34		apb {
35			uart0: serial@f8004000 {
36				atmel,use-dma-rx;
37				atmel,use-dma-tx;
38				status = "okay";
39			};
40
41			spi0: spi@f8010000 {
42				cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
43				status = "okay";
44				m25p80@0 {
45					compatible = "atmel,at25df321a";
46					spi-max-frequency = <50000000>;
47					reg = <0>;
48				};
49			};
50
51			i2c0: i2c@f8014000 {
52				i2c-digital-filter;
53				status = "okay";
54			};
55
56			macb0: ethernet@f8020000 {
57				phy-mode = "rmii";
58				status = "okay";
59				pinctrl-names = "default";
60				pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
61
62				phy0: ethernet-phy@1 {
63					interrupt-parent = <&pioE>;
64					interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
65					reg = <1>;
66				};
67			};
68
69			mmc1: mmc@fc000000 {
70				pinctrl-names = "default";
71				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
72				vmmc-supply = <&vcc_mmc1_reg>;
73				vqmmc-supply = <&vcc_3v3_reg>;
74				status = "okay";
75				slot@0 {
76					reg = <0>;
77					bus-width = <4>;
78					cd-gpios = <&pioE 3 0>;
79				};
80			};
81
82			usart3: serial@fc00c000 {
83				atmel,use-dma-rx;
84				atmel,use-dma-tx;
85				status = "okay";
86			};
87
88			usart4: serial@fc010000 {
89				status = "okay";
90			};
91
92			spi1: spi@fc018000 {
93				cs-gpios = <&pioB 21 0>;
94				status = "okay";
95			};
96
97			tcb2: timer@fc024000 {
98				timer0: timer@0 {
99					compatible = "atmel,tcb-timer";
100					reg = <0>;
101				};
102
103				timer1: timer@1 {
104					compatible = "atmel,tcb-timer";
105					reg = <1>;
106				};
107			};
108
109			adc0: adc@fc034000 {
110				pinctrl-names = "default";
111				pinctrl-0 = <
112					/* external trigger conflicts with USBA_VBUS */
113					&pinctrl_adc0_ad0
114					&pinctrl_adc0_ad1
115					&pinctrl_adc0_ad2
116					&pinctrl_adc0_ad3
117					&pinctrl_adc0_ad4
118					>;
119				atmel,adc-vref = <3300>;
120				status = "okay";
121			};
122
123			watchdog@fc068640 {
124				status = "okay";
125			};
126
127			pinctrl@fc06a000 {
128				board {
129					pinctrl_mmc1_cd: mmc1_cd {
130						atmel,pins =
131							<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
132					};
133					pinctrl_usba_vbus: usba_vbus {
134						atmel,pins =
135							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
136					};
137					pinctrl_key_gpio: key_gpio_0 {
138						atmel,pins =
139							<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
140					};
141					pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
142						atmel,pins =
143							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
144					};
145				};
146			};
147		};
148
149		usb0: gadget@400000 {
150			atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
151			pinctrl-names = "default";
152			pinctrl-0 = <&pinctrl_usba_vbus>;
153			status = "okay";
154		};
155
156		usb1: ohci@500000 {
157			num-ports = <3>;
158			atmel,vbus-gpio = <0
159					   &pioE 11 GPIO_ACTIVE_HIGH
160					   &pioE 14 GPIO_ACTIVE_HIGH
161					  >;
162			status = "okay";
163		};
164
165		usb2: ehci@600000 {
166			status = "okay";
167		};
168
169		ebi: ebi@10000000 {
170			pinctrl-0 = <&pinctrl_ebi_cs3 &pinctrl_ebi_nrd_nandoe
171				     &pinctrl_ebi_nwe_nandwe &pinctrl_ebi_nandrdy
172				     &pinctrl_ebi_data_0_7 &pinctrl_ebi_nand_addr>;
173			pinctrl-names = "default";
174			status = "okay";
175
176			nand_controller: nand-controller {
177				status = "okay";
178
179				nand@3 {
180					reg = <0x3 0x0 0x2>;
181					atmel,rb = <0>;
182					nand-bus-width = <8>;
183					nand-ecc-mode = "hw";
184					nand-on-flash-bbt;
185					label = "atmel_nand";
186
187					partitions {
188						compatible = "fixed-partitions";
189						#address-cells = <1>;
190						#size-cells = <1>;
191
192						at91bootstrap@0 {
193							label = "at91bootstrap";
194							reg = <0x0 0x40000>;
195						};
196
197						bootloader@40000 {
198							label = "bootloader";
199							reg = <0x40000 0xc0000>;
200						};
201
202						bootloaderenvred@100000 {
203							label = "bootloader env redundant";
204							reg = <0x100000 0x40000>;
205						};
206
207						bootloaderenv@140000 {
208							label = "bootloader env";
209							reg = <0x140000 0x40000>;
210						};
211
212						dtb@180000 {
213							label = "device tree";
214							reg = <0x180000 0x80000>;
215						};
216
217						kernel@200000 {
218							label = "kernel";
219							reg = <0x200000 0x600000>;
220						};
221
222						rootfs@800000 {
223							label = "rootfs";
224							reg = <0x800000 0x1f800000>;
225						};
226					};
227				};
228			};
229		};
230	};
231
232	gpio_keys {
233		compatible = "gpio-keys";
234
235		pinctrl-names = "default";
236		pinctrl-0 = <&pinctrl_key_gpio>;
237
238		pb_user1 {
239			label = "pb_user1";
240			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
241			linux,code = <0x100>;
242			wakeup-source;
243		};
244	};
245
246	leds {
247		compatible = "gpio-leds";
248		status = "okay";
249
250		d8 {
251			label = "d8";
252			gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
253			default-state = "on";
254		};
255
256		d10 {
257			label = "d10";
258			gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
259			linux,default-trigger = "heartbeat";
260		};
261	};
262
263	vcc_3v3_reg: fixedregulator_3v3 {
264		compatible = "regulator-fixed";
265		regulator-name = "VCC 3V3";
266		regulator-min-microvolt = <3300000>;
267		regulator-max-microvolt = <3300000>;
268		regulator-boot-on;
269		regulator-always-on;
270	};
271
272	vcc_mmc1_reg: fixedregulator_mmc1 {
273		compatible = "regulator-fixed";
274		gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
275		regulator-name = "VDD MCI1";
276		regulator-min-microvolt = <3300000>;
277		regulator-max-microvolt = <3300000>;
278		vin-supply = <&vcc_3v3_reg>;
279		regulator-always-on;
280	};
281};
282