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_usb_default: usb_default {
138						atmel,pins =
139							<AT91_PIOE 11 AT91_PERIPH_GPIO AT91_PINCTRL_NONE
140							 AT91_PIOE 14 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
141					};
142					pinctrl_key_gpio: key_gpio_0 {
143						atmel,pins =
144							<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
145					};
146					pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
147						atmel,pins =
148							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
149					};
150				};
151			};
152		};
153
154		usb0: gadget@400000 {
155			atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
156			pinctrl-names = "default";
157			pinctrl-0 = <&pinctrl_usba_vbus>;
158			status = "okay";
159		};
160
161		usb1: ohci@500000 {
162			num-ports = <3>;
163			atmel,vbus-gpio = <0
164					   &pioE 11 GPIO_ACTIVE_HIGH
165					   &pioE 14 GPIO_ACTIVE_HIGH
166					  >;
167			pinctrl-names = "default";
168			pinctrl-0 = <&pinctrl_usb_default>;
169			status = "okay";
170		};
171
172		usb2: ehci@600000 {
173			status = "okay";
174		};
175
176		ebi: ebi@10000000 {
177			pinctrl-0 = <&pinctrl_ebi_cs3 &pinctrl_ebi_nrd_nandoe
178				     &pinctrl_ebi_nwe_nandwe &pinctrl_ebi_nandrdy
179				     &pinctrl_ebi_data_0_7 &pinctrl_ebi_nand_addr>;
180			pinctrl-names = "default";
181			status = "okay";
182
183			nand_controller: nand-controller {
184				status = "okay";
185
186				nand@3 {
187					reg = <0x3 0x0 0x2>;
188					atmel,rb = <0>;
189					nand-bus-width = <8>;
190					nand-ecc-mode = "hw";
191					nand-on-flash-bbt;
192					label = "atmel_nand";
193
194					partitions {
195						compatible = "fixed-partitions";
196						#address-cells = <1>;
197						#size-cells = <1>;
198
199						at91bootstrap@0 {
200							label = "at91bootstrap";
201							reg = <0x0 0x40000>;
202						};
203
204						bootloader@40000 {
205							label = "bootloader";
206							reg = <0x40000 0xc0000>;
207						};
208
209						bootloaderenvred@100000 {
210							label = "bootloader env redundant";
211							reg = <0x100000 0x40000>;
212						};
213
214						bootloaderenv@140000 {
215							label = "bootloader env";
216							reg = <0x140000 0x40000>;
217						};
218
219						dtb@180000 {
220							label = "device tree";
221							reg = <0x180000 0x80000>;
222						};
223
224						kernel@200000 {
225							label = "kernel";
226							reg = <0x200000 0x600000>;
227						};
228
229						rootfs@800000 {
230							label = "rootfs";
231							reg = <0x800000 0x1f800000>;
232						};
233					};
234				};
235			};
236		};
237	};
238
239	gpio_keys {
240		compatible = "gpio-keys";
241
242		pinctrl-names = "default";
243		pinctrl-0 = <&pinctrl_key_gpio>;
244
245		pb_user1 {
246			label = "pb_user1";
247			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
248			linux,code = <0x100>;
249			wakeup-source;
250		};
251	};
252
253	leds {
254		compatible = "gpio-leds";
255		status = "okay";
256
257		d8 {
258			label = "d8";
259			gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
260			default-state = "on";
261		};
262
263		d10 {
264			label = "d10";
265			gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
266			linux,default-trigger = "heartbeat";
267		};
268	};
269
270	vcc_3v3_reg: fixedregulator_3v3 {
271		compatible = "regulator-fixed";
272		regulator-name = "VCC 3V3";
273		regulator-min-microvolt = <3300000>;
274		regulator-max-microvolt = <3300000>;
275		regulator-boot-on;
276		regulator-always-on;
277	};
278
279	vcc_mmc1_reg: fixedregulator_mmc1 {
280		compatible = "regulator-fixed";
281		gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
282		regulator-name = "VDD MCI1";
283		regulator-min-microvolt = <3300000>;
284		regulator-max-microvolt = <3300000>;
285		vin-supply = <&vcc_3v3_reg>;
286		regulator-always-on;
287	};
288};
289