1/*
2 * sama5d3xmb.dts - Device Tree file for SAMA5D3x mother board
3 *
4 *  Copyright (C) 2013 Atmel,
5 *                2013 Ludovic Desroches <ludovic.desroches@atmel.com>
6 *
7 * Licensed under GPLv2 or later.
8 */
9#include "sama5d3xcm.dtsi"
10
11/ {
12	compatible = "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d3", "atmel,sama5";
13
14	chosen {
15		u-boot,dm-pre-reloc;
16		stdout-path = &dbgu;
17	};
18
19	ahb {
20		apb {
21			mmc0: mmc@f0000000 {
22				pinctrl-names = "default";
23				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
24				status = "okay";
25				u-boot,dm-pre-reloc;
26				slot@0 {
27					reg = <0>;
28					bus-width = <4>;
29					cd-gpios = <&pioD 17 GPIO_ACTIVE_HIGH>;
30				};
31			};
32
33			spi0: spi@f0004000 {
34				dmas = <0>, <0>;	/*  Do not use DMA for spi0 */
35				u-boot,dm-pre-reloc;
36
37				spi_flash@0 {
38					compatible = "jedec,spi-nor";
39					spi-max-frequency = <50000000>;
40					reg = <0>;
41					u-boot,dm-pre-reloc;
42				};
43			};
44
45			ssc0: ssc@f0008000 {
46				atmel,clk-from-rk-pin;
47			};
48
49			/*
50			 * i2c0 conflicts with ISI:
51			 * disable it to allow the use of ISI
52			 * can not enable audio when i2c0 disabled
53			 */
54			i2c0: i2c@f0014000 {
55				wm8904: wm8904@1a {
56					compatible = "wlf,wm8904";
57					reg = <0x1a>;
58					clocks = <&pck0>;
59					clock-names = "mclk";
60				};
61			};
62
63			i2c1: i2c@f0018000 {
64				ov2640: camera@30 {
65					compatible = "ovti,ov2640";
66					reg = <0x30>;
67					pinctrl-names = "default";
68					pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
69					resetb-gpios = <&pioE 24 GPIO_ACTIVE_LOW>;
70					pwdn-gpios = <&pioE 29 GPIO_ACTIVE_HIGH>;
71					/* use pck1 for the master clock of ov2640 */
72					clocks = <&pck1>;
73					clock-names = "xvclk";
74					assigned-clocks = <&pck1>;
75					assigned-clock-rates = <25000000>;
76
77					port {
78						ov2640_0: endpoint {
79							remote-endpoint = <&isi_0>;
80							bus-width = <8>;
81						};
82					};
83				};
84			};
85
86			usart1: serial@f0020000 {
87				dmas = <0>, <0>;	/*  Do not use DMA for usart1 */
88				pinctrl-names = "default";
89				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
90				status = "okay";
91			};
92
93			isi: isi@f0034000 {
94				port {
95					isi_0: endpoint {
96						remote-endpoint = <&ov2640_0>;
97						bus-width = <8>;
98						vsync-active = <1>;
99						hsync-active = <1>;
100					};
101				};
102			};
103
104			mmc1: mmc@f8000000 {
105				pinctrl-names = "default";
106				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
107				status = "okay";
108				u-boot,dm-pre-reloc;
109				slot@0 {
110					reg = <0>;
111					bus-width = <4>;
112					cd-gpios = <&pioD 18 GPIO_ACTIVE_HIGH>;
113				};
114			};
115
116			adc0: adc@f8018000 {
117				pinctrl-names = "default";
118				pinctrl-0 = <
119					&pinctrl_adc0_adtrg
120					&pinctrl_adc0_ad0
121					&pinctrl_adc0_ad1
122					&pinctrl_adc0_ad2
123					&pinctrl_adc0_ad3
124					&pinctrl_adc0_ad4
125					>;
126				status = "okay";
127			};
128
129			macb1: ethernet@f802c000 {
130				phy-mode = "rmii";
131
132				#address-cells = <1>;
133				#size-cells = <0>;
134				phy0: ethernet-phy@1 {
135					/*interrupt-parent = <&pioE>;*/
136					/*interrupts = <30 IRQ_TYPE_EDGE_FALLING>;*/
137					reg = <1>;
138				};
139			};
140
141			pinctrl@fffff200 {
142				board {
143					u-boot,dm-pre-reloc;
144					pinctrl_mmc0_cd: mmc0_cd {
145						u-boot,dm-pre-reloc;
146						atmel,pins =
147							<AT91_PIOD 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD17 GPIO with pullup deglitch */
148					};
149
150					pinctrl_mmc1_cd: mmc1_cd {
151						u-boot,dm-pre-reloc;
152						atmel,pins =
153							<AT91_PIOD 18 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD18 GPIO with pullup deglitch */
154					};
155
156					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
157						atmel,pins =
158							<AT91_PIOD 30 AT91_PERIPH_B AT91_PINCTRL_NONE>;	/* PD30 periph B */
159					};
160
161					pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 {
162						atmel,pins =
163							<AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;	/* PD31 periph B ISI_MCK */
164					};
165
166					pinctrl_sensor_reset: sensor_reset-0 {
167						atmel,pins =
168							<AT91_PIOE 24 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;   /* PE24 gpio */
169					};
170
171					pinctrl_sensor_power: sensor_power-0 {
172						atmel,pins =
173							<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>; /* PE29 gpio */
174					};
175
176					pinctrl_usba_vbus: usba_vbus {
177						atmel,pins =
178							<AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PD29 GPIO with deglitch */
179					};
180				};
181			};
182
183			dbgu: serial@ffffee00 {
184				dmas = <0>, <0>;	/*  Do not use DMA for dbgu */
185				status = "okay";
186				u-boot,dm-pre-reloc;
187			};
188
189			watchdog@fffffe40 {
190				status = "okay";
191			};
192		};
193
194		usb0: gadget@00500000 {
195			atmel,vbus-gpio = <&pioD 29 GPIO_ACTIVE_HIGH>;
196			pinctrl-names = "default";
197			pinctrl-0 = <&pinctrl_usba_vbus>;
198			status = "okay";
199		};
200
201		usb1: ohci@00600000 {
202			num-ports = <3>;
203			atmel,vbus-gpio = <&pioD 25 GPIO_ACTIVE_HIGH
204					   &pioD 26 GPIO_ACTIVE_LOW
205					   &pioD 27 GPIO_ACTIVE_LOW
206					  >;
207			status = "okay";
208		};
209
210		usb2: ehci@00700000 {
211			status = "okay";
212		};
213	};
214
215	sound {
216		compatible = "atmel,asoc-wm8904";
217		pinctrl-names = "default";
218		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
219
220		atmel,model = "wm8904 @ SAMA5D3EK";
221		atmel,audio-routing =
222			"Headphone Jack", "HPOUTL",
223			"Headphone Jack", "HPOUTR",
224			"IN2L", "Line In Jack",
225			"IN2R", "Line In Jack",
226			"Mic", "MICBIAS",
227			"IN1L", "Mic";
228
229		atmel,ssc-controller = <&ssc0>;
230		atmel,audio-codec = <&wm8904>;
231
232		status = "disabled";
233	};
234};
235