1262569Simp/*
2262569Simp * sama5d3xmb.dts - Device Tree file for SAMA5D3x mother board
3262569Simp *
4262569Simp *  Copyright (C) 2013 Atmel,
5262569Simp *                2013 Ludovic Desroches <ludovic.desroches@atmel.com>
6262569Simp *
7262569Simp * Licensed under GPLv2 or later.
8262569Simp */
9262569Simp#include "sama5d3xcm.dtsi"
10262569Simp
11262569Simp/ {
12262569Simp	compatible = "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d3", "atmel,sama5";
13262569Simp
14262569Simp	ahb {
15262569Simp		apb {
16262569Simp			mmc0: mmc@f0000000 {
17262569Simp				pinctrl-names = "default";
18262569Simp				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
19262569Simp				status = "okay";
20262569Simp				slot@0 {
21262569Simp					reg = <0>;
22262569Simp					bus-width = <4>;
23262569Simp					cd-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
24262569Simp				};
25262569Simp			};
26262569Simp
27262569Simp			spi0: spi@f0004000 {
28284090Sian				dmas = <0>, <0>;	/*  Do not use DMA for spi0 */
29284090Sian
30262569Simp				m25p80@0 {
31262569Simp					compatible = "atmel,at25df321a";
32262569Simp					spi-max-frequency = <50000000>;
33262569Simp					reg = <0>;
34262569Simp				};
35262569Simp			};
36262569Simp
37270864Simp			ssc0: ssc@f0008000 {
38270864Simp				atmel,clk-from-rk-pin;
39270864Simp			};
40270864Simp
41262569Simp			/*
42262569Simp			 * i2c0 conflicts with ISI:
43262569Simp			 * disable it to allow the use of ISI
44262569Simp			 * can not enable audio when i2c0 disabled
45262569Simp			 */
46262569Simp			i2c0: i2c@f0014000 {
47262569Simp				wm8904: wm8904@1a {
48284090Sian					compatible = "wlf,wm8904";
49262569Simp					reg = <0x1a>;
50270864Simp					clocks = <&pck0>;
51270864Simp					clock-names = "mclk";
52262569Simp				};
53262569Simp			};
54262569Simp
55284090Sian			i2c1: i2c@f0018000 {
56284090Sian				ov2640: camera@0x30 {
57284090Sian					compatible = "ovti,ov2640";
58284090Sian					reg = <0x30>;
59284090Sian					pinctrl-names = "default";
60284090Sian					pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
61284090Sian					resetb-gpios = <&pioE 24 GPIO_ACTIVE_LOW>;
62284090Sian					pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>;
63284090Sian					/* use pck1 for the master clock of ov2640 */
64284090Sian					clocks = <&pck1>;
65284090Sian					clock-names = "xvclk";
66284090Sian					assigned-clocks = <&pck1>;
67284090Sian					assigned-clock-rates = <25000000>;
68284090Sian
69284090Sian					port {
70284090Sian						ov2640_0: endpoint {
71284090Sian							remote-endpoint = <&isi_0>;
72284090Sian							bus-width = <8>;
73284090Sian						};
74284090Sian					};
75284090Sian				};
76284090Sian			};
77284090Sian
78262569Simp			usart1: serial@f0020000 {
79284090Sian				dmas = <0>, <0>;	/*  Do not use DMA for usart1 */
80262569Simp				pinctrl-names = "default";
81262569Simp				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
82262569Simp				status = "okay";
83262569Simp			};
84262569Simp
85262569Simp			isi: isi@f0034000 {
86284090Sian				port {
87284090Sian					isi_0: endpoint {
88284090Sian						remote-endpoint = <&ov2640_0>;
89284090Sian						bus-width = <8>;
90284090Sian					};
91284090Sian				};
92262569Simp			};
93262569Simp
94262569Simp			mmc1: mmc@f8000000 {
95262569Simp				pinctrl-names = "default";
96262569Simp				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
97262569Simp				status = "okay";
98262569Simp				slot@0 {
99262569Simp					reg = <0>;
100262569Simp					bus-width = <4>;
101262569Simp					cd-gpios = <&pioD 18 GPIO_ACTIVE_HIGH>;
102262569Simp				};
103262569Simp			};
104262569Simp
105262569Simp			adc0: adc@f8018000 {
106262569Simp				pinctrl-names = "default";
107262569Simp				pinctrl-0 = <
108262569Simp					&pinctrl_adc0_adtrg
109262569Simp					&pinctrl_adc0_ad0
110262569Simp					&pinctrl_adc0_ad1
111262569Simp					&pinctrl_adc0_ad2
112262569Simp					&pinctrl_adc0_ad3
113262569Simp					&pinctrl_adc0_ad4
114262569Simp					>;
115262569Simp				status = "okay";
116262569Simp			};
117262569Simp
118262569Simp			macb1: ethernet@f802c000 {
119262569Simp				phy-mode = "rmii";
120262569Simp
121262569Simp				#address-cells = <1>;
122262569Simp				#size-cells = <0>;
123262569Simp				phy0: ethernet-phy@1 {
124262569Simp					interrupt-parent = <&pioE>;
125262569Simp					interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
126262569Simp					reg = <1>;
127262569Simp				};
128262569Simp			};
129262569Simp
130262569Simp			pinctrl@fffff200 {
131262569Simp				board {
132262569Simp					pinctrl_mmc0_cd: mmc0_cd {
133262569Simp						atmel,pins =
134262569Simp							<AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD17 GPIO with pullup deglitch */
135262569Simp					};
136262569Simp
137262569Simp					pinctrl_mmc1_cd: mmc1_cd {
138262569Simp						atmel,pins =
139262569Simp							<AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD18 GPIO with pullup deglitch */
140262569Simp					};
141262569Simp
142262569Simp					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
143262569Simp						atmel,pins =
144262569Simp							<AT91_PIOD 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;	/* PD30 periph B */
145262569Simp					};
146262569Simp
147284090Sian					pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 {
148262569Simp						atmel,pins =
149284090Sian							<AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;	/* PD31 periph B ISI_MCK */
150284090Sian					};
151284090Sian
152284090Sian					pinctrl_sensor_reset: sensor_reset-0 {
153284090Sian						atmel,pins =
154262569Simp							<AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;   /* PE24 gpio */
155262569Simp					};
156262569Simp
157284090Sian					pinctrl_sensor_power: sensor_power-0 {
158262569Simp						atmel,pins =
159262569Simp							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; /* PE29 gpio */
160262569Simp					};
161262569Simp
162262569Simp					pinctrl_usba_vbus: usba_vbus {
163262569Simp						atmel,pins =
164262569Simp							<AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PD29 GPIO with deglitch */
165262569Simp					};
166262569Simp				};
167262569Simp			};
168262569Simp
169262569Simp			dbgu: serial@ffffee00 {
170284090Sian				dmas = <0>, <0>;	/*  Do not use DMA for dbgu */
171262569Simp				status = "okay";
172262569Simp			};
173262569Simp
174262569Simp			watchdog@fffffe40 {
175262569Simp				status = "okay";
176262569Simp			};
177262569Simp		};
178262569Simp
179262569Simp		usb0: gadget@00500000 {
180262569Simp			atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>;
181262569Simp			pinctrl-names = "default";
182262569Simp			pinctrl-0 = <&pinctrl_usba_vbus>;
183262569Simp			status = "okay";
184262569Simp		};
185262569Simp
186262569Simp		usb1: ohci@00600000 {
187262569Simp			num-ports = <3>;
188262569Simp			atmel,vbus-gpio = <&pioD 25 GPIO_ACTIVE_HIGH
189262569Simp					   &pioD 26 GPIO_ACTIVE_LOW
190262569Simp					   &pioD 27 GPIO_ACTIVE_LOW
191262569Simp					  >;
192262569Simp			status = "okay";
193262569Simp		};
194262569Simp
195262569Simp		usb2: ehci@00700000 {
196262569Simp			status = "okay";
197262569Simp		};
198262569Simp	};
199262569Simp
200262569Simp	sound {
201270864Simp		compatible = "atmel,asoc-wm8904";
202262569Simp		pinctrl-names = "default";
203262569Simp		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
204262569Simp
205262569Simp		atmel,model = "wm8904 @ SAMA5D3EK";
206262569Simp		atmel,audio-routing =
207262569Simp			"Headphone Jack", "HPOUTL",
208262569Simp			"Headphone Jack", "HPOUTR",
209262569Simp			"IN2L", "Line In Jack",
210262569Simp			"IN2R", "Line In Jack",
211284090Sian			"Mic", "MICBIAS",
212262569Simp			"IN1L", "Mic";
213262569Simp
214262569Simp		atmel,ssc-controller = <&ssc0>;
215262569Simp		atmel,audio-codec = <&wm8904>;
216270864Simp
217270864Simp		status = "disabled";
218262569Simp	};
219262569Simp};
220