127ec910eSWenyou Yang/*
227ec910eSWenyou Yang * at91-sama5d3_xplained.dts - Device Tree file for the SAMA5D3 Xplained board
327ec910eSWenyou Yang *
427ec910eSWenyou Yang *  Copyright (C) 2014 Atmel,
527ec910eSWenyou Yang *		  2014 Nicolas Ferre <nicolas.ferre@atmel.com>
627ec910eSWenyou Yang *
727ec910eSWenyou Yang * Licensed under GPLv2 or later.
827ec910eSWenyou Yang */
927ec910eSWenyou Yang/dts-v1/;
1027ec910eSWenyou Yang#include "sama5d36.dtsi"
1127ec910eSWenyou Yang
1227ec910eSWenyou Yang/ {
1327ec910eSWenyou Yang	model = "SAMA5D3 Xplained";
1427ec910eSWenyou Yang	compatible = "atmel,sama5d3-xplained", "atmel,sama5d3", "atmel,sama5";
1527ec910eSWenyou Yang
1627ec910eSWenyou Yang	chosen {
1727ec910eSWenyou Yang		u-boot,dm-pre-reloc;
1827ec910eSWenyou Yang		stdout-path = &dbgu;
1927ec910eSWenyou Yang	};
2027ec910eSWenyou Yang
2127ec910eSWenyou Yang	aliases {
2227ec910eSWenyou Yang		spi0 = &spi0;
2327ec910eSWenyou Yang	};
2427ec910eSWenyou Yang
2527ec910eSWenyou Yang	memory {
2627ec910eSWenyou Yang		reg = <0x20000000 0x10000000>;
2727ec910eSWenyou Yang	};
2827ec910eSWenyou Yang
2927ec910eSWenyou Yang	clocks {
3027ec910eSWenyou Yang		slow_xtal {
3127ec910eSWenyou Yang			clock-frequency = <32768>;
3227ec910eSWenyou Yang		};
3327ec910eSWenyou Yang
3427ec910eSWenyou Yang		main_xtal {
3527ec910eSWenyou Yang			clock-frequency = <12000000>;
3627ec910eSWenyou Yang		};
3727ec910eSWenyou Yang	};
3827ec910eSWenyou Yang
39*2b238c6cSEugen Hristev	onewire_tm: onewire {
40*2b238c6cSEugen Hristev		gpios = <&pioE 23 GPIO_ACTIVE_LOW>;
41*2b238c6cSEugen Hristev		pinctrl-names = "default";
42*2b238c6cSEugen Hristev		pinctrl-0 = <&pinctrl_onewire_tm_default>;
43*2b238c6cSEugen Hristev		status = "okay";
44*2b238c6cSEugen Hristev
45*2b238c6cSEugen Hristev		w1_eeprom: w1_eeprom@0 {
46*2b238c6cSEugen Hristev			compatible = "maxim,ds24b33";
47*2b238c6cSEugen Hristev			status = "okay";
48*2b238c6cSEugen Hristev		};
49*2b238c6cSEugen Hristev	};
50*2b238c6cSEugen Hristev
5127ec910eSWenyou Yang	ahb {
5227ec910eSWenyou Yang		apb {
5327ec910eSWenyou Yang			mmc0: mmc@f0000000 {
5427ec910eSWenyou Yang				u-boot,dm-pre-reloc;
5527ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_dat4_7 &pinctrl_mmc0_cd>;
5627ec910eSWenyou Yang				vmmc-supply = <&vcc_mmc0_reg>;
5727ec910eSWenyou Yang				vqmmc-supply = <&vcc_3v3_reg>;
5827ec910eSWenyou Yang				status = "okay";
5927ec910eSWenyou Yang				slot@0 {
6027ec910eSWenyou Yang					reg = <0>;
6127ec910eSWenyou Yang					bus-width = <8>;
6227ec910eSWenyou Yang					cd-gpios = <&pioE 0 GPIO_ACTIVE_LOW>;
6327ec910eSWenyou Yang				};
6427ec910eSWenyou Yang			};
6527ec910eSWenyou Yang
6627ec910eSWenyou Yang			mmc1: mmc@f8000000 {
6727ec910eSWenyou Yang				u-boot,dm-pre-reloc;
6827ec910eSWenyou Yang				vmmc-supply = <&vcc_3v3_reg>;
6927ec910eSWenyou Yang				vqmmc-supply = <&vcc_3v3_reg>;
7027ec910eSWenyou Yang				status = "disabled";
7127ec910eSWenyou Yang				slot@0 {
7227ec910eSWenyou Yang					reg = <0>;
7327ec910eSWenyou Yang					bus-width = <4>;
7427ec910eSWenyou Yang					cd-gpios = <&pioE 1 GPIO_ACTIVE_LOW>;
7527ec910eSWenyou Yang				};
7627ec910eSWenyou Yang			};
7727ec910eSWenyou Yang
7827ec910eSWenyou Yang			spi0: spi@f0004000 {
7927ec910eSWenyou Yang				cs-gpios = <&pioD 13 0>, <0>, <0>, <&pioD 16 0>;
8027ec910eSWenyou Yang				status = "okay";
8127ec910eSWenyou Yang			};
8227ec910eSWenyou Yang
8327ec910eSWenyou Yang			can0: can@f000c000 {
8427ec910eSWenyou Yang				status = "okay";
8527ec910eSWenyou Yang			};
8627ec910eSWenyou Yang
8727ec910eSWenyou Yang			i2c0: i2c@f0014000 {
8827ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_i2c0_pu>;
8927ec910eSWenyou Yang				status = "okay";
9027ec910eSWenyou Yang			};
9127ec910eSWenyou Yang
9227ec910eSWenyou Yang			i2c1: i2c@f0018000 {
9327ec910eSWenyou Yang				status = "okay";
9427ec910eSWenyou Yang
9527ec910eSWenyou Yang				pmic: act8865@5b {
9627ec910eSWenyou Yang					compatible = "active-semi,act8865";
9727ec910eSWenyou Yang					reg = <0x5b>;
9827ec910eSWenyou Yang					status = "disabled";
9927ec910eSWenyou Yang
10027ec910eSWenyou Yang					regulators {
10127ec910eSWenyou Yang						vcc_1v8_reg: DCDC_REG1 {
10227ec910eSWenyou Yang							regulator-name = "VCC_1V8";
10327ec910eSWenyou Yang							regulator-min-microvolt = <1800000>;
10427ec910eSWenyou Yang							regulator-max-microvolt = <1800000>;
10527ec910eSWenyou Yang							regulator-always-on;
10627ec910eSWenyou Yang						};
10727ec910eSWenyou Yang
10827ec910eSWenyou Yang						vcc_1v2_reg: DCDC_REG2 {
10927ec910eSWenyou Yang							regulator-name = "VCC_1V2";
11027ec910eSWenyou Yang							regulator-min-microvolt = <1200000>;
11127ec910eSWenyou Yang							regulator-max-microvolt = <1200000>;
11227ec910eSWenyou Yang							regulator-always-on;
11327ec910eSWenyou Yang						};
11427ec910eSWenyou Yang
11527ec910eSWenyou Yang						vcc_3v3_reg: DCDC_REG3 {
11627ec910eSWenyou Yang							regulator-name = "VCC_3V3";
11727ec910eSWenyou Yang							regulator-min-microvolt = <3300000>;
11827ec910eSWenyou Yang							regulator-max-microvolt = <3300000>;
11927ec910eSWenyou Yang							regulator-always-on;
12027ec910eSWenyou Yang						};
12127ec910eSWenyou Yang
12227ec910eSWenyou Yang						vddfuse_reg: LDO_REG1 {
12327ec910eSWenyou Yang							regulator-name = "FUSE_2V5";
12427ec910eSWenyou Yang							regulator-min-microvolt = <2500000>;
12527ec910eSWenyou Yang							regulator-max-microvolt = <2500000>;
12627ec910eSWenyou Yang						};
12727ec910eSWenyou Yang
12827ec910eSWenyou Yang						vddana_reg: LDO_REG2 {
12927ec910eSWenyou Yang							regulator-name = "VDDANA";
13027ec910eSWenyou Yang							regulator-min-microvolt = <3300000>;
13127ec910eSWenyou Yang							regulator-max-microvolt = <3300000>;
13227ec910eSWenyou Yang							regulator-always-on;
13327ec910eSWenyou Yang						};
13427ec910eSWenyou Yang					};
13527ec910eSWenyou Yang				};
13627ec910eSWenyou Yang			};
13727ec910eSWenyou Yang
13827ec910eSWenyou Yang			macb0: ethernet@f0028000 {
13927ec910eSWenyou Yang				phy-mode = "rgmii";
14027ec910eSWenyou Yang				#address-cells = <1>;
14127ec910eSWenyou Yang				#size-cells = <0>;
14227ec910eSWenyou Yang				status = "okay";
14327ec910eSWenyou Yang
14427ec910eSWenyou Yang				ethernet-phy@7 {
14527ec910eSWenyou Yang					reg = <0x7>;
14627ec910eSWenyou Yang				};
14727ec910eSWenyou Yang			};
14827ec910eSWenyou Yang
14927ec910eSWenyou Yang			pwm0: pwm@f002c000 {
15027ec910eSWenyou Yang				pinctrl-names = "default";
15127ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_pwm0_pwmh0_0 &pinctrl_pwm0_pwmh1_0>;
15227ec910eSWenyou Yang				status = "okay";
15327ec910eSWenyou Yang			};
15427ec910eSWenyou Yang
15527ec910eSWenyou Yang			usart0: serial@f001c000 {
15627ec910eSWenyou Yang				status = "okay";
15727ec910eSWenyou Yang			};
15827ec910eSWenyou Yang
15927ec910eSWenyou Yang			usart1: serial@f0020000 {
16027ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
16127ec910eSWenyou Yang				status = "okay";
16227ec910eSWenyou Yang			};
16327ec910eSWenyou Yang
16427ec910eSWenyou Yang			uart0: serial@f0024000 {
16527ec910eSWenyou Yang				status = "okay";
16627ec910eSWenyou Yang			};
16727ec910eSWenyou Yang
16827ec910eSWenyou Yang			mmc1: mmc@f8000000 {
16927ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
17027ec910eSWenyou Yang				status = "okay";
17127ec910eSWenyou Yang				slot@0 {
17227ec910eSWenyou Yang					reg = <0>;
17327ec910eSWenyou Yang					bus-width = <4>;
17427ec910eSWenyou Yang					cd-gpios = <&pioE 1 GPIO_ACTIVE_HIGH>;
17527ec910eSWenyou Yang				};
17627ec910eSWenyou Yang			};
17727ec910eSWenyou Yang
17827ec910eSWenyou Yang			spi1: spi@f8008000 {
17927ec910eSWenyou Yang				cs-gpios = <&pioC 25 0>;
18027ec910eSWenyou Yang				status = "okay";
18127ec910eSWenyou Yang			};
18227ec910eSWenyou Yang
18327ec910eSWenyou Yang			adc0: adc@f8018000 {
18427ec910eSWenyou Yang				pinctrl-0 = <
18527ec910eSWenyou Yang					&pinctrl_adc0_adtrg
18627ec910eSWenyou Yang					&pinctrl_adc0_ad0
18727ec910eSWenyou Yang					&pinctrl_adc0_ad1
18827ec910eSWenyou Yang					&pinctrl_adc0_ad2
18927ec910eSWenyou Yang					&pinctrl_adc0_ad3
19027ec910eSWenyou Yang					&pinctrl_adc0_ad4
19127ec910eSWenyou Yang					&pinctrl_adc0_ad5
19227ec910eSWenyou Yang					&pinctrl_adc0_ad6
19327ec910eSWenyou Yang					&pinctrl_adc0_ad7
19427ec910eSWenyou Yang					&pinctrl_adc0_ad8
19527ec910eSWenyou Yang					&pinctrl_adc0_ad9
19627ec910eSWenyou Yang					>;
19727ec910eSWenyou Yang				status = "okay";
19827ec910eSWenyou Yang			};
19927ec910eSWenyou Yang
20027ec910eSWenyou Yang			i2c2: i2c@f801c000 {
20127ec910eSWenyou Yang				dmas = <0>, <0>;	/* Do not use DMA for i2c2 */
20227ec910eSWenyou Yang				pinctrl-0 = <&pinctrl_i2c2_pu>;
20327ec910eSWenyou Yang				status = "okay";
20427ec910eSWenyou Yang			};
20527ec910eSWenyou Yang
20627ec910eSWenyou Yang			macb1: ethernet@f802c000 {
20727ec910eSWenyou Yang				phy-mode = "rmii";
20827ec910eSWenyou Yang				#address-cells = <1>;
20927ec910eSWenyou Yang				#size-cells = <0>;
21027ec910eSWenyou Yang				status = "okay";
21127ec910eSWenyou Yang
21227ec910eSWenyou Yang				ethernet-phy@1 {
21327ec910eSWenyou Yang					reg = <0x1>;
21427ec910eSWenyou Yang				};
21527ec910eSWenyou Yang			};
21627ec910eSWenyou Yang
21727ec910eSWenyou Yang			dbgu: serial@ffffee00 {
21827ec910eSWenyou Yang				u-boot,dm-pre-reloc;
21927ec910eSWenyou Yang				status = "okay";
22027ec910eSWenyou Yang			};
22127ec910eSWenyou Yang
22227ec910eSWenyou Yang			pinctrl@fffff200 {
22327ec910eSWenyou Yang				board {
22427ec910eSWenyou Yang					u-boot,dm-pre-reloc;
22527ec910eSWenyou Yang					pinctrl_i2c0_pu: i2c0_pu {
22627ec910eSWenyou Yang						atmel,pins =
22727ec910eSWenyou Yang							<AT91_PIOA 30 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>,
22827ec910eSWenyou Yang							<AT91_PIOA 31 AT91_PERIPH_A AT91_PINCTRL_PULL_UP>;
22927ec910eSWenyou Yang					};
23027ec910eSWenyou Yang
23127ec910eSWenyou Yang					pinctrl_i2c2_pu: i2c2_pu {
23227ec910eSWenyou Yang						atmel,pins =
23327ec910eSWenyou Yang							<AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>,
23427ec910eSWenyou Yang							<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
23527ec910eSWenyou Yang					};
23627ec910eSWenyou Yang
23727ec910eSWenyou Yang					pinctrl_key_gpio: key_gpio_0 {
23827ec910eSWenyou Yang						atmel,pins =
23927ec910eSWenyou Yang							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
24027ec910eSWenyou Yang					};
24127ec910eSWenyou Yang
24227ec910eSWenyou Yang					pinctrl_mmc0_cd: mmc0_cd {
24327ec910eSWenyou Yang						u-boot,dm-pre-reloc;
24427ec910eSWenyou Yang						atmel,pins =
24527ec910eSWenyou Yang							<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
24627ec910eSWenyou Yang					};
24727ec910eSWenyou Yang
24827ec910eSWenyou Yang					pinctrl_mmc1_cd: mmc1_cd {
24927ec910eSWenyou Yang						u-boot,dm-pre-reloc;
25027ec910eSWenyou Yang						atmel,pins =
25127ec910eSWenyou Yang							<AT91_PIOE 1 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
25227ec910eSWenyou Yang					};
25327ec910eSWenyou Yang
25427ec910eSWenyou Yang					pinctrl_usba_vbus: usba_vbus {
25527ec910eSWenyou Yang						atmel,pins =
25627ec910eSWenyou Yang							<AT91_PIOE 9 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PE9, conflicts with A9 */
25727ec910eSWenyou Yang					};
258*2b238c6cSEugen Hristev
259*2b238c6cSEugen Hristev					pinctrl_onewire_tm_default: onewire_tm_default {
260*2b238c6cSEugen Hristev						atmel,pins =
261*2b238c6cSEugen Hristev							<AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
262*2b238c6cSEugen Hristev					};
26327ec910eSWenyou Yang				};
26427ec910eSWenyou Yang			};
26527ec910eSWenyou Yang		};
26627ec910eSWenyou Yang
26727ec910eSWenyou Yang		nand0: nand@60000000 {
26827ec910eSWenyou Yang			nand-bus-width = <8>;
26927ec910eSWenyou Yang			nand-ecc-mode = "hw";
27027ec910eSWenyou Yang			atmel,has-pmecc;
27127ec910eSWenyou Yang			atmel,pmecc-cap = <4>;
27227ec910eSWenyou Yang			atmel,pmecc-sector-size = <512>;
27327ec910eSWenyou Yang			nand-on-flash-bbt;
27427ec910eSWenyou Yang			status = "okay";
27527ec910eSWenyou Yang
27627ec910eSWenyou Yang			at91bootstrap@0 {
27727ec910eSWenyou Yang				label = "at91bootstrap";
27827ec910eSWenyou Yang				reg = <0x0 0x40000>;
27927ec910eSWenyou Yang			};
28027ec910eSWenyou Yang
28127ec910eSWenyou Yang			bootloader@40000 {
28227ec910eSWenyou Yang				label = "bootloader";
28327ec910eSWenyou Yang				reg = <0x40000 0x80000>;
28427ec910eSWenyou Yang			};
28527ec910eSWenyou Yang
28627ec910eSWenyou Yang			bootloaderenv@c0000 {
28727ec910eSWenyou Yang				label = "bootloader env";
28827ec910eSWenyou Yang				reg = <0xc0000 0xc0000>;
28927ec910eSWenyou Yang			};
29027ec910eSWenyou Yang
29127ec910eSWenyou Yang			dtb@180000 {
29227ec910eSWenyou Yang				label = "device tree";
29327ec910eSWenyou Yang				reg = <0x180000 0x80000>;
29427ec910eSWenyou Yang			};
29527ec910eSWenyou Yang
29627ec910eSWenyou Yang			kernel@200000 {
29727ec910eSWenyou Yang				label = "kernel";
29827ec910eSWenyou Yang				reg = <0x200000 0x600000>;
29927ec910eSWenyou Yang			};
30027ec910eSWenyou Yang
30127ec910eSWenyou Yang			rootfs@800000 {
30227ec910eSWenyou Yang				label = "rootfs";
30327ec910eSWenyou Yang				reg = <0x800000 0x0f800000>;
30427ec910eSWenyou Yang			};
30527ec910eSWenyou Yang		};
30627ec910eSWenyou Yang
30727ec910eSWenyou Yang		usb0: gadget@00500000 {
30827ec910eSWenyou Yang			atmel,vbus-gpio = <&pioE 9 GPIO_ACTIVE_HIGH>;	/* PE9, conflicts with A9 */
30927ec910eSWenyou Yang			pinctrl-names = "default";
31027ec910eSWenyou Yang			pinctrl-0 = <&pinctrl_usba_vbus>;
31127ec910eSWenyou Yang			status = "okay";
31227ec910eSWenyou Yang		};
31327ec910eSWenyou Yang
31427ec910eSWenyou Yang		usb1: ohci@00600000 {
31527ec910eSWenyou Yang			num-ports = <3>;
31627ec910eSWenyou Yang			atmel,vbus-gpio = <0
31727ec910eSWenyou Yang					   &pioE 3 GPIO_ACTIVE_LOW
31827ec910eSWenyou Yang					   &pioE 4 GPIO_ACTIVE_LOW
31927ec910eSWenyou Yang					  >;
32027ec910eSWenyou Yang			status = "okay";
32127ec910eSWenyou Yang		};
32227ec910eSWenyou Yang
32327ec910eSWenyou Yang		usb2: ehci@00700000 {
32427ec910eSWenyou Yang			status = "okay";
32527ec910eSWenyou Yang		};
32627ec910eSWenyou Yang	};
32727ec910eSWenyou Yang
32827ec910eSWenyou Yang	vcc_mmc0_reg: fixedregulator@0 {
32927ec910eSWenyou Yang		compatible = "regulator-fixed";
33027ec910eSWenyou Yang		gpio = <&pioE 2 GPIO_ACTIVE_LOW>;
33127ec910eSWenyou Yang		regulator-name = "mmc0-card-supply";
33227ec910eSWenyou Yang		regulator-min-microvolt = <3300000>;
33327ec910eSWenyou Yang		regulator-max-microvolt = <3300000>;
33427ec910eSWenyou Yang		regulator-always-on;
33527ec910eSWenyou Yang	};
33627ec910eSWenyou Yang
33727ec910eSWenyou Yang	gpio_keys {
33827ec910eSWenyou Yang		compatible = "gpio-keys";
33927ec910eSWenyou Yang
34027ec910eSWenyou Yang		pinctrl-names = "default";
34127ec910eSWenyou Yang		pinctrl-0 = <&pinctrl_key_gpio>;
34227ec910eSWenyou Yang
34327ec910eSWenyou Yang		bp3 {
34427ec910eSWenyou Yang			label = "PB_USER";
34527ec910eSWenyou Yang			gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
34627ec910eSWenyou Yang			linux,code = <0x104>;
34727ec910eSWenyou Yang			wakeup-source;
34827ec910eSWenyou Yang		};
34927ec910eSWenyou Yang	};
35027ec910eSWenyou Yang
35127ec910eSWenyou Yang	leds {
35227ec910eSWenyou Yang		compatible = "gpio-leds";
35327ec910eSWenyou Yang
35427ec910eSWenyou Yang		d2 {
35527ec910eSWenyou Yang			label = "d2";
35627ec910eSWenyou Yang			gpios = <&pioE 23 GPIO_ACTIVE_LOW>;	/* PE23, conflicts with A23, CTS2 */
35727ec910eSWenyou Yang			linux,default-trigger = "heartbeat";
35827ec910eSWenyou Yang		};
35927ec910eSWenyou Yang
36027ec910eSWenyou Yang		d3 {
36127ec910eSWenyou Yang			label = "d3";
36227ec910eSWenyou Yang			gpios = <&pioE 24 GPIO_ACTIVE_HIGH>;
36327ec910eSWenyou Yang		};
36427ec910eSWenyou Yang	};
36527ec910eSWenyou Yang};
366