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