12aaa4ce4SWenyou Yang/*
22aaa4ce4SWenyou Yang * at91-sama5d4_xplained.dts - Device Tree file for SAMA5D4 Xplained board
32aaa4ce4SWenyou Yang *
42aaa4ce4SWenyou Yang *  Copyright (C) 2015 Atmel,
52aaa4ce4SWenyou Yang *                2015 Josh Wu <josh.wu@atmel.com>
62aaa4ce4SWenyou Yang *
72aaa4ce4SWenyou Yang * This file is dual-licensed: you can use it either under the terms
82aaa4ce4SWenyou Yang * of the GPL or the X11 license, at your option. Note that this dual
92aaa4ce4SWenyou Yang * licensing only applies to this file, and not this project as a
102aaa4ce4SWenyou Yang * whole.
112aaa4ce4SWenyou Yang *
122aaa4ce4SWenyou Yang *  a) This file is free software; you can redistribute it and/or
132aaa4ce4SWenyou Yang *     modify it under the terms of the GNU General Public License as
142aaa4ce4SWenyou Yang *     published by the Free Software Foundation; either version 2 of the
152aaa4ce4SWenyou Yang *     License, or (at your option) any later version.
162aaa4ce4SWenyou Yang *
172aaa4ce4SWenyou Yang *     This file is distributed in the hope that it will be useful,
182aaa4ce4SWenyou Yang *     but WITHOUT ANY WARRANTY; without even the implied warranty of
192aaa4ce4SWenyou Yang *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
202aaa4ce4SWenyou Yang *     GNU General Public License for more details.
212aaa4ce4SWenyou Yang *
222aaa4ce4SWenyou Yang * Or, alternatively,
232aaa4ce4SWenyou Yang *
242aaa4ce4SWenyou Yang *  b) Permission is hereby granted, free of charge, to any person
252aaa4ce4SWenyou Yang *     obtaining a copy of this software and associated documentation
262aaa4ce4SWenyou Yang *     files (the "Software"), to deal in the Software without
272aaa4ce4SWenyou Yang *     restriction, including without limitation the rights to use,
282aaa4ce4SWenyou Yang *     copy, modify, merge, publish, distribute, sublicense, and/or
292aaa4ce4SWenyou Yang *     sell copies of the Software, and to permit persons to whom the
302aaa4ce4SWenyou Yang *     Software is furnished to do so, subject to the following
312aaa4ce4SWenyou Yang *     conditions:
322aaa4ce4SWenyou Yang *
332aaa4ce4SWenyou Yang *     The above copyright notice and this permission notice shall be
342aaa4ce4SWenyou Yang *     included in all copies or substantial portions of the Software.
352aaa4ce4SWenyou Yang *
362aaa4ce4SWenyou Yang *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
372aaa4ce4SWenyou Yang *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
382aaa4ce4SWenyou Yang *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
392aaa4ce4SWenyou Yang *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
402aaa4ce4SWenyou Yang *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
412aaa4ce4SWenyou Yang *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
422aaa4ce4SWenyou Yang *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
432aaa4ce4SWenyou Yang *     OTHER DEALINGS IN THE SOFTWARE.
442aaa4ce4SWenyou Yang */
452aaa4ce4SWenyou Yang/dts-v1/;
462aaa4ce4SWenyou Yang#include "sama5d4.dtsi"
472aaa4ce4SWenyou Yang
482aaa4ce4SWenyou Yang/ {
492aaa4ce4SWenyou Yang	model = "Atmel SAMA5D4 Xplained";
502aaa4ce4SWenyou Yang	compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
512aaa4ce4SWenyou Yang
522aaa4ce4SWenyou Yang	aliases {
532aaa4ce4SWenyou Yang		spi0 = &spi0;
542aaa4ce4SWenyou Yang	};
552aaa4ce4SWenyou Yang
562aaa4ce4SWenyou Yang	chosen {
572aaa4ce4SWenyou Yang		u-boot,dm-pre-reloc;
582aaa4ce4SWenyou Yang		stdout-path = &usart3;
592aaa4ce4SWenyou Yang	};
602aaa4ce4SWenyou Yang
61*57fb8b46SEugen Hristev	onewire_tm: onewire {
62*57fb8b46SEugen Hristev		gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
63*57fb8b46SEugen Hristev		pinctrl-names = "default";
64*57fb8b46SEugen Hristev		pinctrl-0 = <&pinctrl_onewire_tm_default>;
65*57fb8b46SEugen Hristev		status = "okay";
66*57fb8b46SEugen Hristev
67*57fb8b46SEugen Hristev		w1_eeprom: w1_eeprom@0 {
68*57fb8b46SEugen Hristev			compatible = "maxim,ds24b33";
69*57fb8b46SEugen Hristev			status = "okay";
70*57fb8b46SEugen Hristev		};
71*57fb8b46SEugen Hristev	};
72*57fb8b46SEugen Hristev
732aaa4ce4SWenyou Yang	memory {
742aaa4ce4SWenyou Yang		reg = <0x20000000 0x20000000>;
752aaa4ce4SWenyou Yang	};
762aaa4ce4SWenyou Yang
772aaa4ce4SWenyou Yang	clocks {
782aaa4ce4SWenyou Yang		slow_xtal {
792aaa4ce4SWenyou Yang			clock-frequency = <32768>;
802aaa4ce4SWenyou Yang		};
812aaa4ce4SWenyou Yang
822aaa4ce4SWenyou Yang		main_xtal {
832aaa4ce4SWenyou Yang			clock-frequency = <12000000>;
842aaa4ce4SWenyou Yang		};
852aaa4ce4SWenyou Yang	};
862aaa4ce4SWenyou Yang
872aaa4ce4SWenyou Yang	ahb {
882aaa4ce4SWenyou Yang		apb {
89e974b081SWenyou Yang			hlcdc: hlcdc@f0000000 {
90e974b081SWenyou Yang				atmel,vl-bpix = <4>;
91e974b081SWenyou Yang				atmel,guard-time = <1>;
92e974b081SWenyou Yang				pinctrl-names = "default";
93e974b081SWenyou Yang				pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_pwm &pinctrl_lcd_rgb888>;
94e974b081SWenyou Yang				status = "okay";
95e974b081SWenyou Yang				u-boot,dm-pre-reloc;
96e974b081SWenyou Yang
97e974b081SWenyou Yang				display-timings {
98e974b081SWenyou Yang					u-boot,dm-pre-reloc;
99e974b081SWenyou Yang					480x272 {
100e974b081SWenyou Yang						clock-frequency = <9000000>;
101e974b081SWenyou Yang						hactive = <480>;
102e974b081SWenyou Yang						vactive = <272>;
103e974b081SWenyou Yang						hsync-len = <41>;
104e974b081SWenyou Yang						hfront-porch = <2>;
105e974b081SWenyou Yang						hback-porch = <2>;
106e974b081SWenyou Yang						vfront-porch = <2>;
107e974b081SWenyou Yang						vback-porch = <2>;
108e974b081SWenyou Yang						vsync-len = <11>;
109e974b081SWenyou Yang						u-boot,dm-pre-reloc;
110e974b081SWenyou Yang					};
111e974b081SWenyou Yang				};
112e974b081SWenyou Yang			};
113e974b081SWenyou Yang
1142aaa4ce4SWenyou Yang			spi0: spi@f8010000 {
1152aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
1162aaa4ce4SWenyou Yang				cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
1172aaa4ce4SWenyou Yang				status = "okay";
1182aaa4ce4SWenyou Yang				spi_flash@0 {
1192aaa4ce4SWenyou Yang					u-boot,dm-pre-reloc;
1202aaa4ce4SWenyou Yang					compatible = "spi-flash";
1212aaa4ce4SWenyou Yang					spi-max-frequency = <50000000>;
1222aaa4ce4SWenyou Yang					reg = <0>;
1232aaa4ce4SWenyou Yang				};
1242aaa4ce4SWenyou Yang			};
1252aaa4ce4SWenyou Yang
1262aaa4ce4SWenyou Yang			i2c0: i2c@f8014000 {
1272aaa4ce4SWenyou Yang				status = "okay";
128fafa4403SWenyou Yang
129fafa4403SWenyou Yang				i2c_eeprom: i2c_eeprom@5c {
130fafa4403SWenyou Yang					compatible = "atmel,24mac402";
131fafa4403SWenyou Yang					reg = <0x5c>;
132fafa4403SWenyou Yang				};
1332aaa4ce4SWenyou Yang			};
1342aaa4ce4SWenyou Yang
1352aaa4ce4SWenyou Yang			macb0: ethernet@f8020000 {
1362aaa4ce4SWenyou Yang				phy-mode = "rmii";
1372aaa4ce4SWenyou Yang				status = "okay";
1382aaa4ce4SWenyou Yang				pinctrl-names = "default";
1392aaa4ce4SWenyou Yang				pinctrl-0 = <&pinctrl_macb0_rmii &pinctrl_macb0_phy_irq>;
1402aaa4ce4SWenyou Yang
1412aaa4ce4SWenyou Yang				phy0: ethernet-phy@1 {
1422aaa4ce4SWenyou Yang					interrupt-parent = <&pioE>;
1432aaa4ce4SWenyou Yang					interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
1442aaa4ce4SWenyou Yang					reg = <1>;
1452aaa4ce4SWenyou Yang				};
1462aaa4ce4SWenyou Yang			};
1472aaa4ce4SWenyou Yang
1482aaa4ce4SWenyou Yang			mmc1: mmc@fc000000 {
1492aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
1502aaa4ce4SWenyou Yang				pinctrl-names = "default";
1512aaa4ce4SWenyou Yang				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
1522aaa4ce4SWenyou Yang				vmmc-supply = <&vcc_mmc1_reg>;
1532aaa4ce4SWenyou Yang				vqmmc-supply = <&vcc_3v3_reg>;
1542aaa4ce4SWenyou Yang				status = "okay";
1552aaa4ce4SWenyou Yang				slot@0 {
1562aaa4ce4SWenyou Yang					reg = <0>;
1572aaa4ce4SWenyou Yang					bus-width = <4>;
1582aaa4ce4SWenyou Yang					cd-gpios = <&pioE 3 0>;
1592aaa4ce4SWenyou Yang				};
1602aaa4ce4SWenyou Yang			};
1612aaa4ce4SWenyou Yang
1622aaa4ce4SWenyou Yang			usart3: serial@fc00c000 {
1632aaa4ce4SWenyou Yang				u-boot,dm-pre-reloc;
1642aaa4ce4SWenyou Yang				status = "okay";
1652aaa4ce4SWenyou Yang			};
1662aaa4ce4SWenyou Yang
1672aaa4ce4SWenyou Yang			usart4: serial@fc010000 {
1682aaa4ce4SWenyou Yang				status = "okay";
1692aaa4ce4SWenyou Yang			};
1702aaa4ce4SWenyou Yang
1712aaa4ce4SWenyou Yang			spi1: spi@fc018000 {
1722aaa4ce4SWenyou Yang				cs-gpios = <&pioB 21 0>;
1732aaa4ce4SWenyou Yang				status = "okay";
1742aaa4ce4SWenyou Yang			};
1752aaa4ce4SWenyou Yang
1762aaa4ce4SWenyou Yang			adc0: adc@fc034000 {
1772aaa4ce4SWenyou Yang				pinctrl-names = "default";
1782aaa4ce4SWenyou Yang				pinctrl-0 = <
1792aaa4ce4SWenyou Yang					/* external trigger conflicts with USBA_VBUS */
1802aaa4ce4SWenyou Yang					&pinctrl_adc0_ad0
1812aaa4ce4SWenyou Yang					&pinctrl_adc0_ad1
1822aaa4ce4SWenyou Yang					&pinctrl_adc0_ad2
1832aaa4ce4SWenyou Yang					&pinctrl_adc0_ad3
1842aaa4ce4SWenyou Yang					&pinctrl_adc0_ad4
1852aaa4ce4SWenyou Yang					>;
1862aaa4ce4SWenyou Yang				atmel,adc-vref = <3300>;
1872aaa4ce4SWenyou Yang				status = "okay";
1882aaa4ce4SWenyou Yang			};
1892aaa4ce4SWenyou Yang
1902aaa4ce4SWenyou Yang			watchdog@fc068640 {
1912aaa4ce4SWenyou Yang				status = "okay";
1922aaa4ce4SWenyou Yang			};
1932aaa4ce4SWenyou Yang
1942aaa4ce4SWenyou Yang			pinctrl@fc06a000 {
1952aaa4ce4SWenyou Yang				board {
1962aaa4ce4SWenyou Yang					u-boot,dm-pre-reloc;
1972aaa4ce4SWenyou Yang					pinctrl_mmc1_cd: mmc1_cd {
1982aaa4ce4SWenyou Yang						u-boot,dm-pre-reloc;
1992aaa4ce4SWenyou Yang						atmel,pins =
2002aaa4ce4SWenyou Yang							<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
2012aaa4ce4SWenyou Yang					};
2022aaa4ce4SWenyou Yang					pinctrl_usba_vbus: usba_vbus {
2032aaa4ce4SWenyou Yang						atmel,pins =
2042aaa4ce4SWenyou Yang							<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
2052aaa4ce4SWenyou Yang					};
2062aaa4ce4SWenyou Yang					pinctrl_key_gpio: key_gpio_0 {
2072aaa4ce4SWenyou Yang						atmel,pins =
2082aaa4ce4SWenyou Yang							<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
2092aaa4ce4SWenyou Yang					};
2102aaa4ce4SWenyou Yang					pinctrl_macb0_phy_irq: macb0_phy_irq_0 {
2112aaa4ce4SWenyou Yang						atmel,pins =
2122aaa4ce4SWenyou Yang							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
2132aaa4ce4SWenyou Yang					};
214*57fb8b46SEugen Hristev					pinctrl_onewire_tm_default: onewire_tm_default {
215*57fb8b46SEugen Hristev						atmel,pins =
216*57fb8b46SEugen Hristev							<AT91_PIOE 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>;
217*57fb8b46SEugen Hristev					};
2182aaa4ce4SWenyou Yang				};
2192aaa4ce4SWenyou Yang			};
2202aaa4ce4SWenyou Yang		};
2212aaa4ce4SWenyou Yang
2222aaa4ce4SWenyou Yang		usb0: gadget@00400000 {
2232aaa4ce4SWenyou Yang			atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
2242aaa4ce4SWenyou Yang			pinctrl-names = "default";
2252aaa4ce4SWenyou Yang			pinctrl-0 = <&pinctrl_usba_vbus>;
2262aaa4ce4SWenyou Yang			status = "okay";
2272aaa4ce4SWenyou Yang		};
2282aaa4ce4SWenyou Yang
2292aaa4ce4SWenyou Yang		usb1: ohci@00500000 {
2302aaa4ce4SWenyou Yang			num-ports = <3>;
2312aaa4ce4SWenyou Yang			atmel,vbus-gpio = <0
2322aaa4ce4SWenyou Yang					   &pioE 11 GPIO_ACTIVE_HIGH
2332aaa4ce4SWenyou Yang					   &pioE 14 GPIO_ACTIVE_HIGH
2342aaa4ce4SWenyou Yang					  >;
2352aaa4ce4SWenyou Yang			status = "okay";
2362aaa4ce4SWenyou Yang		};
2372aaa4ce4SWenyou Yang
2382aaa4ce4SWenyou Yang		usb2: ehci@00600000 {
2392aaa4ce4SWenyou Yang			status = "okay";
2402aaa4ce4SWenyou Yang		};
2412aaa4ce4SWenyou Yang
2422aaa4ce4SWenyou Yang		nand0: nand@80000000 {
2432aaa4ce4SWenyou Yang			nand-bus-width = <8>;
2442aaa4ce4SWenyou Yang			nand-ecc-mode = "hw";
2452aaa4ce4SWenyou Yang			nand-on-flash-bbt;
2462aaa4ce4SWenyou Yang			atmel,has-pmecc;
2472aaa4ce4SWenyou Yang			status = "okay";
2482aaa4ce4SWenyou Yang
2492aaa4ce4SWenyou Yang			at91bootstrap@0 {
2502aaa4ce4SWenyou Yang				label = "at91bootstrap";
2512aaa4ce4SWenyou Yang				reg = <0x0 0x40000>;
2522aaa4ce4SWenyou Yang			};
2532aaa4ce4SWenyou Yang
2542aaa4ce4SWenyou Yang			bootloader@40000 {
2552aaa4ce4SWenyou Yang				label = "bootloader";
2562aaa4ce4SWenyou Yang				reg = <0x40000 0x80000>;
2572aaa4ce4SWenyou Yang			};
2582aaa4ce4SWenyou Yang
2592aaa4ce4SWenyou Yang			bootloaderenv@c0000 {
2602aaa4ce4SWenyou Yang				label = "bootloader env";
2612aaa4ce4SWenyou Yang				reg = <0xc0000 0xc0000>;
2622aaa4ce4SWenyou Yang			};
2632aaa4ce4SWenyou Yang
2642aaa4ce4SWenyou Yang			dtb@180000 {
2652aaa4ce4SWenyou Yang				label = "device tree";
2662aaa4ce4SWenyou Yang				reg = <0x180000 0x80000>;
2672aaa4ce4SWenyou Yang			};
2682aaa4ce4SWenyou Yang
2692aaa4ce4SWenyou Yang			kernel@200000 {
2702aaa4ce4SWenyou Yang				label = "kernel";
2712aaa4ce4SWenyou Yang				reg = <0x200000 0x600000>;
2722aaa4ce4SWenyou Yang			};
2732aaa4ce4SWenyou Yang
2742aaa4ce4SWenyou Yang			rootfs@800000 {
2752aaa4ce4SWenyou Yang				label = "rootfs";
2762aaa4ce4SWenyou Yang				reg = <0x800000 0x0f800000>;
2772aaa4ce4SWenyou Yang			};
2782aaa4ce4SWenyou Yang		};
2792aaa4ce4SWenyou Yang	};
2802aaa4ce4SWenyou Yang
2812aaa4ce4SWenyou Yang	gpio_keys {
2822aaa4ce4SWenyou Yang		compatible = "gpio-keys";
2832aaa4ce4SWenyou Yang
2842aaa4ce4SWenyou Yang		pinctrl-names = "default";
2852aaa4ce4SWenyou Yang		pinctrl-0 = <&pinctrl_key_gpio>;
2862aaa4ce4SWenyou Yang
2872aaa4ce4SWenyou Yang		pb_user1 {
2882aaa4ce4SWenyou Yang			label = "pb_user1";
2892aaa4ce4SWenyou Yang			gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
2902aaa4ce4SWenyou Yang			linux,code = <0x100>;
2912aaa4ce4SWenyou Yang			wakeup-source;
2922aaa4ce4SWenyou Yang		};
2932aaa4ce4SWenyou Yang	};
2942aaa4ce4SWenyou Yang
2952aaa4ce4SWenyou Yang	leds {
2962aaa4ce4SWenyou Yang		compatible = "gpio-leds";
2972aaa4ce4SWenyou Yang		status = "okay";
2982aaa4ce4SWenyou Yang
2992aaa4ce4SWenyou Yang		d8 {
3002aaa4ce4SWenyou Yang			label = "d8";
3012aaa4ce4SWenyou Yang			gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
3022aaa4ce4SWenyou Yang			default-state = "on";
3032aaa4ce4SWenyou Yang		};
3042aaa4ce4SWenyou Yang
3052aaa4ce4SWenyou Yang		d10 {
3062aaa4ce4SWenyou Yang			label = "d10";
3072aaa4ce4SWenyou Yang			gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
3082aaa4ce4SWenyou Yang			linux,default-trigger = "heartbeat";
3092aaa4ce4SWenyou Yang		};
3102aaa4ce4SWenyou Yang	};
3112aaa4ce4SWenyou Yang
3122aaa4ce4SWenyou Yang	vcc_3v3_reg: fixedregulator@0 {
3132aaa4ce4SWenyou Yang		compatible = "regulator-fixed";
3142aaa4ce4SWenyou Yang		regulator-name = "VCC 3V3";
3152aaa4ce4SWenyou Yang		regulator-min-microvolt = <3300000>;
3162aaa4ce4SWenyou Yang		regulator-max-microvolt = <3300000>;
3172aaa4ce4SWenyou Yang		regulator-boot-on;
3182aaa4ce4SWenyou Yang		regulator-always-on;
3192aaa4ce4SWenyou Yang		reg = <0 1>;
3202aaa4ce4SWenyou Yang	};
3212aaa4ce4SWenyou Yang
3222aaa4ce4SWenyou Yang	vcc_mmc1_reg: fixedregulator@1 {
3232aaa4ce4SWenyou Yang		compatible = "regulator-fixed";
3242aaa4ce4SWenyou Yang		gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
3252aaa4ce4SWenyou Yang		regulator-name = "VDD MCI1";
3262aaa4ce4SWenyou Yang		regulator-min-microvolt = <3300000>;
3272aaa4ce4SWenyou Yang		regulator-max-microvolt = <3300000>;
3282aaa4ce4SWenyou Yang		vin-supply = <&vcc_3v3_reg>;
3292aaa4ce4SWenyou Yang		regulator-always-on;
3302aaa4ce4SWenyou Yang		reg = <1 1>;
3312aaa4ce4SWenyou Yang	};
3322aaa4ce4SWenyou Yang};
333