1270866Simp/*
2270866Simp * Copyright 2013 Eukr��a Electromatique <denis@eukrea.com>
3270866Simp *
4270866Simp * This program is free software; you can redistribute it and/or
5270866Simp * modify it under the terms of the GNU General Public License
6270866Simp * as published by the Free Software Foundation; either version 2
7270866Simp * of the License, or (at your option) any later version.
8270866Simp * This program is distributed in the hope that it will be useful,
9270866Simp * but WITHOUT ANY WARRANTY; without even the implied warranty of
10270866Simp * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11270866Simp * GNU General Public License for more details.
12270866Simp *
13270866Simp * You should have received a copy of the GNU General Public License
14270866Simp * along with this program; if not, write to the Free Software
15270866Simp * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
16270866Simp * MA 02110-1301, USA.
17270866Simp */
18270866Simp
19270866Simp/dts-v1/;
20270866Simp#include "imx51-eukrea-cpuimx51.dtsi"
21270866Simp#include <dt-bindings/gpio/gpio.h>
22270866Simp
23270866Simp/ {
24270866Simp	model = "Eukrea CPUIMX51";
25270866Simp	compatible = "eukrea,mbimxsd51","eukrea,cpuimx51", "fsl,imx51";
26270866Simp
27270866Simp	clocks {
28270866Simp		clk24M: can_clock {
29270866Simp			compatible = "fixed-clock";
30270866Simp			#clock-cells = <0>;
31270866Simp			clock-frequency = <24000000>;
32270866Simp		};
33270866Simp	};
34270866Simp
35270866Simp	gpio_keys {
36270866Simp		compatible = "gpio-keys";
37270866Simp		pinctrl-names = "default";
38270866Simp		pinctrl-0 = <&pinctrl_gpiokeys_1>;
39270866Simp
40270866Simp		button-1 {
41270866Simp			label = "BP1";
42270866Simp			gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
43270866Simp			linux,code = <256>;
44270866Simp			gpio-key,wakeup;
45270866Simp			linux,input-type = <1>;
46270866Simp		};
47270866Simp	};
48270866Simp
49270866Simp	leds {
50270866Simp		compatible = "gpio-leds";
51270866Simp		pinctrl-names = "default";
52270866Simp		pinctrl-0 = <&pinctrl_gpioled>;
53270866Simp
54270866Simp		led1 {
55270866Simp			label = "led1";
56270866Simp			gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
57270866Simp			linux,default-trigger = "heartbeat";
58270866Simp		};
59270866Simp	};
60270866Simp
61270866Simp	regulators {
62270866Simp		compatible = "simple-bus";
63270866Simp		#address-cells = <1>;
64270866Simp		#size-cells = <0>;
65270866Simp
66270866Simp		reg_can: regulator@0 {
67270866Simp			compatible = "regulator-fixed";
68270866Simp			reg = <0>;
69270866Simp			regulator-name = "CAN_RST";
70270866Simp			regulator-min-microvolt = <3300000>;
71270866Simp			regulator-max-microvolt = <3300000>;
72270866Simp			gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
73270866Simp			startup-delay-us = <20000>;
74270866Simp			enable-active-high;
75270866Simp		};
76270866Simp	};
77270866Simp
78270866Simp	sound {
79270866Simp		compatible = "eukrea,asoc-tlv320";
80270866Simp		eukrea,model = "imx51-eukrea-tlv320aic23";
81270866Simp		ssi-controller = <&ssi2>;
82270866Simp		fsl,mux-int-port = <2>;
83270866Simp		fsl,mux-ext-port = <3>;
84270866Simp	};
85270866Simp
86270866Simp	usbphy {
87270866Simp		#address-cells = <1>;
88270866Simp		#size-cells = <0>;
89270866Simp		compatible = "simple-bus";
90270866Simp
91270866Simp		usbh1phy: usbh1phy@0 {
92270866Simp			compatible = "usb-nop-xceiv";
93270866Simp			reg = <0>;
94270866Simp			clocks = <&clks IMX5_CLK_USB_PHY_GATE>;
95270866Simp			clock-names = "main_clk";
96270866Simp			clock-frequency = <19200000>;
97270866Simp		};
98270866Simp	};
99270866Simp};
100270866Simp
101270866Simp&audmux {
102270866Simp	pinctrl-names = "default";
103270866Simp	pinctrl-0 = <&pinctrl_audmux>;
104270866Simp	status = "okay";
105270866Simp};
106270866Simp
107270866Simp&esdhc1 {
108270866Simp	pinctrl-names = "default";
109270866Simp	pinctrl-0 = <&pinctrl_esdhc1 &pinctrl_esdhc1_cd>;
110270866Simp	cd-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
111270866Simp	status = "okay";
112270866Simp};
113270866Simp
114270866Simp&ecspi1 {
115270866Simp	pinctrl-names = "default";
116270866Simp	pinctrl-0 = <&pinctrl_ecspi1>;
117270866Simp	fsl,spi-num-chipselects = <1>;
118270866Simp	cs-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>;
119270866Simp	status = "okay";
120270866Simp
121270866Simp	can0: can@0 {
122270866Simp		pinctrl-names = "default";
123270866Simp		pinctrl-0 = <&pinctrl_can>;
124270866Simp		compatible = "microchip,mcp2515";
125270866Simp		reg = <0>;
126270866Simp		clocks = <&clk24M>;
127270866Simp		spi-max-frequency = <10000000>;
128270866Simp		interrupt-parent = <&gpio1>;
129270866Simp		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
130270866Simp		vdd-supply = <&reg_can>;
131270866Simp	};
132270866Simp};
133270866Simp
134270866Simp&i2c1 {
135270866Simp	tlv320aic23: codec@1a {
136270866Simp		compatible = "ti,tlv320aic23";
137270866Simp		reg = <0x1a>;
138270866Simp	};
139270866Simp};
140270866Simp
141270866Simp&iomuxc {
142270866Simp	imx51-eukrea {
143270866Simp		pinctrl_audmux: audmuxgrp {
144270866Simp			fsl,pins = <
145270866Simp				MX51_PAD_AUD3_BB_TXD__AUD3_TXD		0x80000000
146270866Simp				MX51_PAD_AUD3_BB_RXD__AUD3_RXD		0x80000000
147270866Simp				MX51_PAD_AUD3_BB_CK__AUD3_TXC		0x80000000
148270866Simp				MX51_PAD_AUD3_BB_FS__AUD3_TXFS		0x80000000
149270866Simp			>;
150270866Simp		};
151270866Simp
152270866Simp
153270866Simp		pinctrl_can: cangrp {
154270866Simp			fsl,pins = <
155270866Simp				MX51_PAD_CSI2_PIXCLK__GPIO4_15		0x80000000	/* nReset */
156270866Simp				MX51_PAD_GPIO1_1__GPIO1_1		0x80000000	/* IRQ */
157270866Simp			>;
158270866Simp		};
159270866Simp
160270866Simp		pinctrl_ecspi1: ecspi1grp {
161270866Simp			fsl,pins = <
162270866Simp				MX51_PAD_CSPI1_MISO__ECSPI1_MISO	0x185
163270866Simp				MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI	0x185
164270866Simp				MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK	0x185
165270866Simp				MX51_PAD_CSPI1_SS0__GPIO4_24		0x80000000 	/* CS0 */
166270866Simp			>;
167270866Simp		};
168270866Simp
169270866Simp		pinctrl_esdhc1: esdhc1grp {
170270866Simp			fsl,pins = <
171270866Simp				MX51_PAD_SD1_CMD__SD1_CMD		0x400020d5
172270866Simp				MX51_PAD_SD1_CLK__SD1_CLK		0x20d5
173270866Simp				MX51_PAD_SD1_DATA0__SD1_DATA0		0x20d5
174270866Simp				MX51_PAD_SD1_DATA1__SD1_DATA1		0x20d5
175270866Simp				MX51_PAD_SD1_DATA2__SD1_DATA2		0x20d5
176270866Simp				MX51_PAD_SD1_DATA3__SD1_DATA3		0x20d5
177270866Simp			>;
178270866Simp		};
179270866Simp
180270866Simp		pinctrl_uart1: uart1grp {
181270866Simp			fsl,pins = <
182270866Simp				MX51_PAD_UART1_RXD__UART1_RXD		0x1c5
183270866Simp				MX51_PAD_UART1_TXD__UART1_TXD		0x1c5
184270866Simp			>;
185270866Simp		};
186270866Simp
187270866Simp		pinctrl_uart3: uart3grp {
188270866Simp			fsl,pins = <
189270866Simp				MX51_PAD_UART3_RXD__UART3_RXD		0x1c5
190270866Simp				MX51_PAD_UART3_TXD__UART3_TXD		0x1c5
191270866Simp			>;
192270866Simp		};
193270866Simp
194270866Simp		pinctrl_uart3_rtscts: uart3rtsctsgrp {
195270866Simp			fsl,pins = <
196270866Simp				MX51_PAD_KEY_COL4__UART3_RTS		0x1c5
197270866Simp				MX51_PAD_KEY_COL5__UART3_CTS		0x1c5
198270866Simp			>;
199270866Simp		};
200270866Simp
201270866Simp		pinctrl_backlight_1: backlightgrp-1 {
202270866Simp			fsl,pins = <
203270866Simp				MX51_PAD_DI1_D1_CS__GPIO3_4 0x1f5
204270866Simp			>;
205270866Simp		};
206270866Simp
207270866Simp		pinctrl_esdhc1_cd: esdhc1_cd {
208270866Simp			fsl,pins = <
209270866Simp				MX51_PAD_GPIO1_0__GPIO1_0 0xd5
210270866Simp			>;
211270866Simp		};
212270866Simp
213270866Simp		pinctrl_gpiokeys_1: gpiokeysgrp-1 {
214270866Simp			fsl,pins = <
215270866Simp				MX51_PAD_NANDF_D9__GPIO3_31 0x1f5
216270866Simp			>;
217270866Simp		};
218270866Simp
219270866Simp		pinctrl_gpioled: gpioledgrp-1 {
220270866Simp			fsl,pins = <
221270866Simp				MX51_PAD_NANDF_D10__GPIO3_30 0x80000000
222270866Simp			>;
223270866Simp		};
224270866Simp
225270866Simp		pinctrl_reg_lcd_3v3: reg_lcd_3v3 {
226270866Simp			fsl,pins = <
227270866Simp				MX51_PAD_CSI1_D9__GPIO3_13 0x1f5
228270866Simp			>;
229270866Simp		};
230270866Simp
231270866Simp		pinctrl_usbh1: usbh1grp {
232270866Simp			fsl,pins = <
233270866Simp				MX51_PAD_USBH1_CLK__USBH1_CLK     0x1e5
234270866Simp				MX51_PAD_USBH1_DIR__USBH1_DIR     0x1e5
235270866Simp				MX51_PAD_USBH1_NXT__USBH1_NXT     0x1e5
236270866Simp				MX51_PAD_USBH1_DATA0__USBH1_DATA0 0x1e5
237270866Simp				MX51_PAD_USBH1_DATA1__USBH1_DATA1 0x1e5
238270866Simp				MX51_PAD_USBH1_DATA2__USBH1_DATA2 0x1e5
239270866Simp				MX51_PAD_USBH1_DATA3__USBH1_DATA3 0x1e5
240270866Simp				MX51_PAD_USBH1_DATA4__USBH1_DATA4 0x1e5
241270866Simp				MX51_PAD_USBH1_DATA5__USBH1_DATA5 0x1e5
242270866Simp				MX51_PAD_USBH1_DATA6__USBH1_DATA6 0x1e5
243270866Simp				MX51_PAD_USBH1_DATA7__USBH1_DATA7 0x1e5
244270866Simp				MX51_PAD_USBH1_STP__USBH1_STP     0x1e5
245270866Simp			>;
246270866Simp		};
247270866Simp
248270866Simp		pinctrl_usbh1_vbus: usbh1-vbusgrp {
249270866Simp			fsl,pins = <
250270866Simp				MX51_PAD_EIM_CS3__GPIO2_28 0x1f5
251270866Simp			>;
252270866Simp		};
253270866Simp	};
254270866Simp};
255270866Simp
256270866Simp&ssi2 {
257270866Simp	codec-handle = <&tlv320aic23>;
258270866Simp	status = "okay";
259270866Simp};
260270866Simp
261270866Simp&uart1 {
262270866Simp	pinctrl-names = "default";
263270866Simp	pinctrl-0 = <&pinctrl_uart1>;
264270866Simp	fsl,uart-has-rtscts;
265270866Simp	status = "okay";
266270866Simp};
267270866Simp
268270866Simp&uart3 {
269270866Simp	pinctrl-names = "default";
270270866Simp	pinctrl-0 = <&pinctrl_uart3 &pinctrl_uart3_rtscts>;
271270866Simp	fsl,uart-has-rtscts;
272270866Simp	status = "okay";
273270866Simp};
274270866Simp
275270866Simp&usbh1 {
276270866Simp	pinctrl-names = "default";
277270866Simp	pinctrl-0 = <&pinctrl_usbh1>;
278270866Simp	fsl,usbphy = <&usbh1phy>;
279270866Simp	dr_mode = "host";
280270866Simp	phy_type = "ulpi";
281270866Simp	status = "okay";
282270866Simp};
283270866Simp
284270866Simp&usbotg {
285270866Simp	dr_mode = "otg";
286270866Simp	phy_type = "utmi_wide";
287270866Simp	status = "okay";
288270866Simp};
289270866Simp
290270866Simp&usbphy0 {
291270866Simp	pinctrl-names = "default";
292270866Simp	pinctrl-0 = <&pinctrl_usbh1_vbus>;
293270866Simp	reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
294270866Simp};
295