1*2aaa4ce4SWenyou Yang/*
2*2aaa4ce4SWenyou Yang * at91-sama5d4_xplained.dts - Device Tree file for SAMA5D4 Xplained board
3*2aaa4ce4SWenyou Yang *
4*2aaa4ce4SWenyou Yang *  Copyright (C) 2015 Atmel,
5*2aaa4ce4SWenyou Yang *                2015 Josh Wu <josh.wu@atmel.com>
6*2aaa4ce4SWenyou Yang *
7*2aaa4ce4SWenyou Yang * This file is dual-licensed: you can use it either under the terms
8*2aaa4ce4SWenyou Yang * of the GPL or the X11 license, at your option. Note that this dual
9*2aaa4ce4SWenyou Yang * licensing only applies to this file, and not this project as a
10*2aaa4ce4SWenyou Yang * whole.
11*2aaa4ce4SWenyou Yang *
12*2aaa4ce4SWenyou Yang *  a) This file is free software; you can redistribute it and/or
13*2aaa4ce4SWenyou Yang *     modify it under the terms of the GNU General Public License as
14*2aaa4ce4SWenyou Yang *     published by the Free Software Foundation; either version 2 of the
15*2aaa4ce4SWenyou Yang *     License, or (at your option) any later version.
16*2aaa4ce4SWenyou Yang *
17*2aaa4ce4SWenyou Yang *     This file is distributed in the hope that it will be useful,
18*2aaa4ce4SWenyou Yang *     but WITHOUT ANY WARRANTY; without even the implied warranty of
19*2aaa4ce4SWenyou Yang *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20*2aaa4ce4SWenyou Yang *     GNU General Public License for more details.
21*2aaa4ce4SWenyou Yang *
22*2aaa4ce4SWenyou Yang * Or, alternatively,
23*2aaa4ce4SWenyou Yang *
24*2aaa4ce4SWenyou Yang *  b) Permission is hereby granted, free of charge, to any person
25*2aaa4ce4SWenyou Yang *     obtaining a copy of this software and associated documentation
26*2aaa4ce4SWenyou Yang *     files (the "Software"), to deal in the Software without
27*2aaa4ce4SWenyou Yang *     restriction, including without limitation the rights to use,
28*2aaa4ce4SWenyou Yang *     copy, modify, merge, publish, distribute, sublicense, and/or
29*2aaa4ce4SWenyou Yang *     sell copies of the Software, and to permit persons to whom the
30*2aaa4ce4SWenyou Yang *     Software is furnished to do so, subject to the following
31*2aaa4ce4SWenyou Yang *     conditions:
32*2aaa4ce4SWenyou Yang *
33*2aaa4ce4SWenyou Yang *     The above copyright notice and this permission notice shall be
34*2aaa4ce4SWenyou Yang *     included in all copies or substantial portions of the Software.
35*2aaa4ce4SWenyou Yang *
36*2aaa4ce4SWenyou Yang *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
37*2aaa4ce4SWenyou Yang *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
38*2aaa4ce4SWenyou Yang *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
39*2aaa4ce4SWenyou Yang *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
40*2aaa4ce4SWenyou Yang *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
41*2aaa4ce4SWenyou Yang *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
42*2aaa4ce4SWenyou Yang *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
43*2aaa4ce4SWenyou Yang *     OTHER DEALINGS IN THE SOFTWARE.
44*2aaa4ce4SWenyou Yang */
45*2aaa4ce4SWenyou Yang/dts-v1/;
46*2aaa4ce4SWenyou Yang#include "sama5d4.dtsi"
47*2aaa4ce4SWenyou Yang
48*2aaa4ce4SWenyou Yang/ {
49*2aaa4ce4SWenyou Yang	model = "Atmel SAMA5D4 Xplained";
50*2aaa4ce4SWenyou Yang	compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
51*2aaa4ce4SWenyou Yang
52*2aaa4ce4SWenyou Yang	aliases {
53*2aaa4ce4SWenyou Yang		spi0 = &spi0;
54*2aaa4ce4SWenyou Yang	};
55*2aaa4ce4SWenyou Yang
56*2aaa4ce4SWenyou Yang	chosen {
57*2aaa4ce4SWenyou Yang		u-boot,dm-pre-reloc;
58*2aaa4ce4SWenyou Yang		stdout-path = &usart3;
59*2aaa4ce4SWenyou Yang	};
60*2aaa4ce4SWenyou Yang
61*2aaa4ce4SWenyou Yang	memory {
62*2aaa4ce4SWenyou Yang		reg = <0x20000000 0x20000000>;
63*2aaa4ce4SWenyou Yang	};
64*2aaa4ce4SWenyou Yang
65*2aaa4ce4SWenyou Yang	clocks {
66*2aaa4ce4SWenyou Yang		slow_xtal {
67*2aaa4ce4SWenyou Yang			clock-frequency = <32768>;
68*2aaa4ce4SWenyou Yang		};
69*2aaa4ce4SWenyou Yang
70*2aaa4ce4SWenyou Yang		main_xtal {
71*2aaa4ce4SWenyou Yang			clock-frequency = <12000000>;
72*2aaa4ce4SWenyou Yang		};
73*2aaa4ce4SWenyou Yang	};
74*2aaa4ce4SWenyou Yang
75*2aaa4ce4SWenyou Yang	ahb {
76*2aaa4ce4SWenyou Yang		apb {
77*2aaa4ce4SWenyou Yang			spi0: spi@f8010000 {
78*2aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
79*2aaa4ce4SWenyou Yang				cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
80*2aaa4ce4SWenyou Yang				status = "okay";
81*2aaa4ce4SWenyou Yang				spi_flash@0 {
82*2aaa4ce4SWenyou Yang					u-boot,dm-pre-reloc;
83*2aaa4ce4SWenyou Yang					compatible = "spi-flash";
84*2aaa4ce4SWenyou Yang					spi-max-frequency = <50000000>;
85*2aaa4ce4SWenyou Yang					reg = <0>;
86*2aaa4ce4SWenyou Yang				};
87*2aaa4ce4SWenyou Yang			};
88*2aaa4ce4SWenyou Yang
89*2aaa4ce4SWenyou Yang			i2c0: i2c@f8014000 {
90*2aaa4ce4SWenyou Yang				status = "okay";
91*2aaa4ce4SWenyou Yang			};
92*2aaa4ce4SWenyou Yang
93*2aaa4ce4SWenyou Yang			macb0: ethernet@f8020000 {
94*2aaa4ce4SWenyou Yang				phy-mode = "rmii";
95*2aaa4ce4SWenyou Yang				status = "okay";
96*2aaa4ce4SWenyou Yang				pinctrl-names = "default";
97*2aaa4ce4SWenyou Yang				pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
98*2aaa4ce4SWenyou Yang
99*2aaa4ce4SWenyou Yang				phy0: ethernet-phy@1 {
100*2aaa4ce4SWenyou Yang					interrupt-parent = <&pioE>;
101*2aaa4ce4SWenyou Yang					interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
102*2aaa4ce4SWenyou Yang					reg = <1>;
103*2aaa4ce4SWenyou Yang				};
104*2aaa4ce4SWenyou Yang			};
105*2aaa4ce4SWenyou Yang
106*2aaa4ce4SWenyou Yang			mmc1: mmc@fc000000 {
107*2aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
108*2aaa4ce4SWenyou Yang				pinctrl-names = "default";
109*2aaa4ce4SWenyou Yang				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
110*2aaa4ce4SWenyou Yang				vmmc-supply = <&vcc_mmc1_reg>;
111*2aaa4ce4SWenyou Yang				vqmmc-supply = <&vcc_3v3_reg>;
112*2aaa4ce4SWenyou Yang				status = "okay";
113*2aaa4ce4SWenyou Yang				slot@0 {
114*2aaa4ce4SWenyou Yang					reg = <0>;
115*2aaa4ce4SWenyou Yang					bus-width = <4>;
116*2aaa4ce4SWenyou Yang					cd-gpios = <&pioE 3 0>;
117*2aaa4ce4SWenyou Yang				};
118*2aaa4ce4SWenyou Yang			};
119*2aaa4ce4SWenyou Yang
120*2aaa4ce4SWenyou Yang			usart3: serial@fc00c000 {
121*2aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
122*2aaa4ce4SWenyou Yang				status = "okay";
123*2aaa4ce4SWenyou Yang			};
124*2aaa4ce4SWenyou Yang
125*2aaa4ce4SWenyou Yang			usart4: serial@fc010000 {
126*2aaa4ce4SWenyou Yang				status = "okay";
127*2aaa4ce4SWenyou Yang			};
128*2aaa4ce4SWenyou Yang
129*2aaa4ce4SWenyou Yang			spi1: spi@fc018000 {
130*2aaa4ce4SWenyou Yang				cs-gpios = <&pioB 21 0>;
131*2aaa4ce4SWenyou Yang				status = "okay";
132*2aaa4ce4SWenyou Yang			};
133*2aaa4ce4SWenyou Yang
134*2aaa4ce4SWenyou Yang			adc0: adc@fc034000 {
135*2aaa4ce4SWenyou Yang				pinctrl-names = "default";
136*2aaa4ce4SWenyou Yang				pinctrl-0 = <
137*2aaa4ce4SWenyou Yang					/* external trigger conflicts with USBA_VBUS */
138*2aaa4ce4SWenyou Yang					&pinctrl_adc0_ad0
139*2aaa4ce4SWenyou Yang					&pinctrl_adc0_ad1
140*2aaa4ce4SWenyou Yang					&pinctrl_adc0_ad2
141*2aaa4ce4SWenyou Yang					&pinctrl_adc0_ad3
142*2aaa4ce4SWenyou Yang					&pinctrl_adc0_ad4
143*2aaa4ce4SWenyou Yang					>;
144*2aaa4ce4SWenyou Yang				atmel,adc-vref = <3300>;
145*2aaa4ce4SWenyou Yang				status = "okay";
146*2aaa4ce4SWenyou Yang			};
147*2aaa4ce4SWenyou Yang
148*2aaa4ce4SWenyou Yang			watchdog@fc068640 {
149*2aaa4ce4SWenyou Yang				status = "okay";
150*2aaa4ce4SWenyou Yang			};
151*2aaa4ce4SWenyou Yang
152*2aaa4ce4SWenyou Yang			pinctrl@fc06a000 {
153*2aaa4ce4SWenyou Yang				board {
154*2aaa4ce4SWenyou Yang					u-boot,dm-pre-reloc;
155*2aaa4ce4SWenyou Yang					pinctrl_mmc1_cd: mmc1_cd {
156*2aaa4ce4SWenyou Yang						u-boot,dm-pre-reloc;
157*2aaa4ce4SWenyou Yang						atmel,pins =
158*2aaa4ce4SWenyou Yang							<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
159*2aaa4ce4SWenyou Yang					};
160*2aaa4ce4SWenyou Yang					pinctrl_usba_vbus: usba_vbus {
161*2aaa4ce4SWenyou Yang						atmel,pins =
162*2aaa4ce4SWenyou Yang							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
163*2aaa4ce4SWenyou Yang					};
164*2aaa4ce4SWenyou Yang					pinctrl_key_gpio: key_gpio_0 {
165*2aaa4ce4SWenyou Yang						atmel,pins =
166*2aaa4ce4SWenyou Yang							<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
167*2aaa4ce4SWenyou Yang					};
168*2aaa4ce4SWenyou Yang					pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
169*2aaa4ce4SWenyou Yang						atmel,pins =
170*2aaa4ce4SWenyou Yang							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
171*2aaa4ce4SWenyou Yang					};
172*2aaa4ce4SWenyou Yang				};
173*2aaa4ce4SWenyou Yang			};
174*2aaa4ce4SWenyou Yang		};
175*2aaa4ce4SWenyou Yang
176*2aaa4ce4SWenyou Yang		usb0: gadget@00400000 {
177*2aaa4ce4SWenyou Yang			atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
178*2aaa4ce4SWenyou Yang			pinctrl-names = "default";
179*2aaa4ce4SWenyou Yang			pinctrl-0 = <&pinctrl_usba_vbus>;
180*2aaa4ce4SWenyou Yang			status = "okay";
181*2aaa4ce4SWenyou Yang		};
182*2aaa4ce4SWenyou Yang
183*2aaa4ce4SWenyou Yang		usb1: ohci@00500000 {
184*2aaa4ce4SWenyou Yang			num-ports = <3>;
185*2aaa4ce4SWenyou Yang			atmel,vbus-gpio = <0
186*2aaa4ce4SWenyou Yang					   &pioE 11 GPIO_ACTIVE_HIGH
187*2aaa4ce4SWenyou Yang					   &pioE 14 GPIO_ACTIVE_HIGH
188*2aaa4ce4SWenyou Yang					  >;
189*2aaa4ce4SWenyou Yang			status = "okay";
190*2aaa4ce4SWenyou Yang		};
191*2aaa4ce4SWenyou Yang
192*2aaa4ce4SWenyou Yang		usb2: ehci@00600000 {
193*2aaa4ce4SWenyou Yang			status = "okay";
194*2aaa4ce4SWenyou Yang		};
195*2aaa4ce4SWenyou Yang
196*2aaa4ce4SWenyou Yang		nand0: nand@80000000 {
197*2aaa4ce4SWenyou Yang			nand-bus-width = <8>;
198*2aaa4ce4SWenyou Yang			nand-ecc-mode = "hw";
199*2aaa4ce4SWenyou Yang			nand-on-flash-bbt;
200*2aaa4ce4SWenyou Yang			atmel,has-pmecc;
201*2aaa4ce4SWenyou Yang			status = "okay";
202*2aaa4ce4SWenyou Yang
203*2aaa4ce4SWenyou Yang			at91bootstrap@0 {
204*2aaa4ce4SWenyou Yang				label = "at91bootstrap";
205*2aaa4ce4SWenyou Yang				reg = <0x0 0x40000>;
206*2aaa4ce4SWenyou Yang			};
207*2aaa4ce4SWenyou Yang
208*2aaa4ce4SWenyou Yang			bootloader@40000 {
209*2aaa4ce4SWenyou Yang				label = "bootloader";
210*2aaa4ce4SWenyou Yang				reg = <0x40000 0x80000>;
211*2aaa4ce4SWenyou Yang			};
212*2aaa4ce4SWenyou Yang
213*2aaa4ce4SWenyou Yang			bootloaderenv@c0000 {
214*2aaa4ce4SWenyou Yang				label = "bootloader env";
215*2aaa4ce4SWenyou Yang				reg = <0xc0000 0xc0000>;
216*2aaa4ce4SWenyou Yang			};
217*2aaa4ce4SWenyou Yang
218*2aaa4ce4SWenyou Yang			dtb@180000 {
219*2aaa4ce4SWenyou Yang				label = "device tree";
220*2aaa4ce4SWenyou Yang				reg = <0x180000 0x80000>;
221*2aaa4ce4SWenyou Yang			};
222*2aaa4ce4SWenyou Yang
223*2aaa4ce4SWenyou Yang			kernel@200000 {
224*2aaa4ce4SWenyou Yang				label = "kernel";
225*2aaa4ce4SWenyou Yang				reg = <0x200000 0x600000>;
226*2aaa4ce4SWenyou Yang			};
227*2aaa4ce4SWenyou Yang
228*2aaa4ce4SWenyou Yang			rootfs@800000 {
229*2aaa4ce4SWenyou Yang				label = "rootfs";
230*2aaa4ce4SWenyou Yang				reg = <0x800000 0x0f800000>;
231*2aaa4ce4SWenyou Yang			};
232*2aaa4ce4SWenyou Yang		};
233*2aaa4ce4SWenyou Yang	};
234*2aaa4ce4SWenyou Yang
235*2aaa4ce4SWenyou Yang	gpio_keys {
236*2aaa4ce4SWenyou Yang		compatible = "gpio-keys";
237*2aaa4ce4SWenyou Yang
238*2aaa4ce4SWenyou Yang		pinctrl-names = "default";
239*2aaa4ce4SWenyou Yang		pinctrl-0 = <&pinctrl_key_gpio>;
240*2aaa4ce4SWenyou Yang
241*2aaa4ce4SWenyou Yang		pb_user1 {
242*2aaa4ce4SWenyou Yang			label = "pb_user1";
243*2aaa4ce4SWenyou Yang			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
244*2aaa4ce4SWenyou Yang			linux,code = <0x100>;
245*2aaa4ce4SWenyou Yang			wakeup-source;
246*2aaa4ce4SWenyou Yang		};
247*2aaa4ce4SWenyou Yang	};
248*2aaa4ce4SWenyou Yang
249*2aaa4ce4SWenyou Yang	leds {
250*2aaa4ce4SWenyou Yang		compatible = "gpio-leds";
251*2aaa4ce4SWenyou Yang		status = "okay";
252*2aaa4ce4SWenyou Yang
253*2aaa4ce4SWenyou Yang		d8 {
254*2aaa4ce4SWenyou Yang			label = "d8";
255*2aaa4ce4SWenyou Yang			gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
256*2aaa4ce4SWenyou Yang			default-state = "on";
257*2aaa4ce4SWenyou Yang		};
258*2aaa4ce4SWenyou Yang
259*2aaa4ce4SWenyou Yang		d10 {
260*2aaa4ce4SWenyou Yang			label = "d10";
261*2aaa4ce4SWenyou Yang			gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
262*2aaa4ce4SWenyou Yang			linux,default-trigger = "heartbeat";
263*2aaa4ce4SWenyou Yang		};
264*2aaa4ce4SWenyou Yang	};
265*2aaa4ce4SWenyou Yang
266*2aaa4ce4SWenyou Yang	vcc_3v3_reg: fixedregulator@0 {
267*2aaa4ce4SWenyou Yang		compatible = "regulator-fixed";
268*2aaa4ce4SWenyou Yang		regulator-name = "VCC 3V3";
269*2aaa4ce4SWenyou Yang		regulator-min-microvolt = <3300000>;
270*2aaa4ce4SWenyou Yang		regulator-max-microvolt = <3300000>;
271*2aaa4ce4SWenyou Yang		regulator-boot-on;
272*2aaa4ce4SWenyou Yang		regulator-always-on;
273*2aaa4ce4SWenyou Yang		reg = <0 1>;
274*2aaa4ce4SWenyou Yang	};
275*2aaa4ce4SWenyou Yang
276*2aaa4ce4SWenyou Yang	vcc_mmc1_reg: fixedregulator@1 {
277*2aaa4ce4SWenyou Yang		compatible = "regulator-fixed";
278*2aaa4ce4SWenyou Yang		gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
279*2aaa4ce4SWenyou Yang		regulator-name = "VDD MCI1";
280*2aaa4ce4SWenyou Yang		regulator-min-microvolt = <3300000>;
281*2aaa4ce4SWenyou Yang		regulator-max-microvolt = <3300000>;
282*2aaa4ce4SWenyou Yang		vin-supply = <&vcc_3v3_reg>;
283*2aaa4ce4SWenyou Yang		regulator-always-on;
284*2aaa4ce4SWenyou Yang		reg = <1 1>;
285*2aaa4ce4SWenyou Yang	};
286*2aaa4ce4SWenyou Yang};
287