1/*
2 * Copyright (C) 2011-2013 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8#include "elpida_ecb240abacn.dtsi"
9
10/ {
11	memory {
12		device_type = "memory";
13		reg = <0x80000000 0x40000000>; /* 1 GB */
14	};
15
16	aliases {
17		display0 = &dvi0;
18		display1 = &hdmi0;
19	};
20
21	leds: leds {
22		compatible = "gpio-leds";
23		pinctrl-names = "default";
24		pinctrl-0 = <
25			&led_wkgpio_pins
26		>;
27
28		heartbeat {
29			label = "pandaboard::status1";
30			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
31			linux,default-trigger = "heartbeat";
32		};
33
34		mmc {
35			label = "pandaboard::status2";
36			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
37			linux,default-trigger = "mmc0";
38		};
39	};
40
41	sound: sound {
42		compatible = "ti,abe-twl6040";
43		ti,model = "PandaBoard";
44
45		ti,mclk-freq = <38400000>;
46
47		ti,mcpdm = <&mcpdm>;
48
49		ti,twl6040 = <&twl6040>;
50
51		/* Audio routing */
52		ti,audio-routing =
53			"Headset Stereophone", "HSOL",
54			"Headset Stereophone", "HSOR",
55			"Ext Spk", "HFL",
56			"Ext Spk", "HFR",
57			"Line Out", "AUXL",
58			"Line Out", "AUXR",
59			"HSMIC", "Headset Mic",
60			"Headset Mic", "Headset Mic Bias",
61			"AFML", "Line In",
62			"AFMR", "Line In";
63	};
64
65	/* HS USB Port 1 Power */
66	hsusb1_power: hsusb1_power_reg {
67		compatible = "regulator-fixed";
68		regulator-name = "hsusb1_vbus";
69		regulator-min-microvolt = <3300000>;
70		regulator-max-microvolt = <3300000>;
71		gpio = <&gpio1 1 0>;	/* gpio_1 */
72		startup-delay-us = <70000>;
73		enable-active-high;
74		/*
75		 * boot-on is required along with always-on as the
76		 * regulator framework doesn't enable the regulator
77		 * if boot-on is not there.
78		 */
79		regulator-always-on;
80		regulator-boot-on;
81	};
82
83	/* HS USB Host PHY on PORT 1 */
84	hsusb1_phy: hsusb1_phy {
85		compatible = "usb-nop-xceiv";
86		reset-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;   /* gpio_62 */
87		vcc-supply = <&hsusb1_power>;
88		clocks = <&auxclk3_ck>;
89		clock-names = "main_clk";
90		clock-frequency = <19200000>;
91	};
92
93	/* regulator for wl12xx on sdio5 */
94	wl12xx_vmmc: wl12xx_vmmc {
95		pinctrl-names = "default";
96		pinctrl-0 = <&wl12xx_gpio>;
97		compatible = "regulator-fixed";
98		regulator-name = "vwl1271";
99		regulator-min-microvolt = <1800000>;
100		regulator-max-microvolt = <1800000>;
101		gpio = <&gpio2 11 0>;
102		startup-delay-us = <70000>;
103		enable-active-high;
104	};
105
106	tfp410: encoder@0 {
107		compatible = "ti,tfp410";
108		powerdown-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;	/* gpio_0 */
109
110		ports {
111			#address-cells = <1>;
112			#size-cells = <0>;
113
114			port@0 {
115				reg = <0>;
116
117				tfp410_in: endpoint@0 {
118					remote-endpoint = <&dpi_out>;
119				};
120			};
121
122			port@1 {
123				reg = <1>;
124
125				tfp410_out: endpoint@0 {
126					remote-endpoint = <&dvi_connector_in>;
127				};
128			};
129		};
130	};
131
132	dvi0: connector@0 {
133		compatible = "dvi-connector";
134		label = "dvi";
135
136		digital;
137
138		ddc-i2c-bus = <&i2c3>;
139
140		port {
141			dvi_connector_in: endpoint {
142				remote-endpoint = <&tfp410_out>;
143			};
144		};
145	};
146
147	tpd12s015: encoder@1 {
148		compatible = "ti,tpd12s015";
149
150		gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,	/* 60, CT CP HPD */
151			<&gpio2 9 GPIO_ACTIVE_HIGH>,	/* 41, LS OE */
152			<&gpio2 31 GPIO_ACTIVE_HIGH>;	/* 63, HPD */
153
154		ports {
155			#address-cells = <1>;
156			#size-cells = <0>;
157
158			port@0 {
159				reg = <0>;
160
161				tpd12s015_in: endpoint@0 {
162					remote-endpoint = <&hdmi_out>;
163				};
164			};
165
166			port@1 {
167				reg = <1>;
168
169				tpd12s015_out: endpoint@0 {
170					remote-endpoint = <&hdmi_connector_in>;
171				};
172			};
173		};
174	};
175
176	hdmi0: connector@1 {
177		compatible = "hdmi-connector";
178		label = "hdmi";
179
180		type = "a";
181
182		port {
183			hdmi_connector_in: endpoint {
184				remote-endpoint = <&tpd12s015_out>;
185			};
186		};
187	};
188};
189
190&omap4_pmx_core {
191	pinctrl-names = "default";
192	pinctrl-0 = <
193			&dss_dpi_pins
194			&tfp410_pins
195			&dss_hdmi_pins
196			&tpd12s015_pins
197			&hsusbb1_pins
198	>;
199
200	twl6040_pins: pinmux_twl6040_pins {
201		pinctrl-single,pins = <
202			0xe0 (PIN_OUTPUT | MUX_MODE3)	/* hdq_sio.gpio_127 */
203			0x160 (PIN_INPUT | MUX_MODE0)	/* sys_nirq2.sys_nirq2 */
204		>;
205	};
206
207	mcpdm_pins: pinmux_mcpdm_pins {
208		pinctrl-single,pins = <
209			0xc6 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_pdm_ul_data.abe_pdm_ul_data */
210			0xc8 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_pdm_dl_data.abe_pdm_dl_data */
211			0xca (PIN_INPUT_PULLUP   | MUX_MODE0)	/* abe_pdm_frame.abe_pdm_frame */
212			0xcc (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_pdm_lb_clk.abe_pdm_lb_clk */
213			0xce (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_clks.abe_clks */
214		>;
215	};
216
217	mcbsp1_pins: pinmux_mcbsp1_pins {
218		pinctrl-single,pins = <
219			0xbe (PIN_INPUT | MUX_MODE0)		/* abe_mcbsp1_clkx.abe_mcbsp1_clkx */
220			0xc0 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp1_dr.abe_mcbsp1_dr */
221			0xc2 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp1_dx.abe_mcbsp1_dx */
222			0xc4 (PIN_INPUT | MUX_MODE0)		/* abe_mcbsp1_fsx.abe_mcbsp1_fsx */
223		>;
224	};
225
226	dss_dpi_pins: pinmux_dss_dpi_pins {
227		pinctrl-single,pins = <
228			0x122 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data23 */
229			0x124 (PIN_OUTPUT | MUX_MODE5) 	/* dispc2_data22 */
230			0x126 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data21 */
231			0x128 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data20 */
232			0x12a (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data19 */
233			0x12c (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data18 */
234			0x12e (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data15 */
235			0x130 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data14 */
236			0x132 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data13 */
237			0x134 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data12 */
238			0x136 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data11 */
239
240			0x174 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data10 */
241			0x176 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data9 */
242			0x178 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data16 */
243			0x17a (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data17 */
244			0x17c (PIN_OUTPUT | MUX_MODE5)	/* dispc2_hsync */
245			0x17e (PIN_OUTPUT | MUX_MODE5)	/* dispc2_pclk */
246			0x180 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_vsync */
247			0x182 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_de */
248			0x184 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data8 */
249			0x186 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data7 */
250			0x188 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data6 */
251			0x18a (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data5 */
252			0x18c (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data4 */
253			0x18e (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data3 */
254
255			0x190 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data2 */
256			0x192 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data1 */
257			0x194 (PIN_OUTPUT | MUX_MODE5)	/* dispc2_data0 */
258		>;
259	};
260
261	tfp410_pins: pinmux_tfp410_pins {
262		pinctrl-single,pins = <
263			0x144 (PIN_OUTPUT | MUX_MODE3)	/* gpio_0 */
264		>;
265	};
266
267	dss_hdmi_pins: pinmux_dss_hdmi_pins {
268		pinctrl-single,pins = <
269			0x5a (PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_cec.hdmi_cec */
270			0x5c (PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_scl.hdmi_scl */
271			0x5e (PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_sda.hdmi_sda */
272		>;
273	};
274
275	tpd12s015_pins: pinmux_tpd12s015_pins {
276		pinctrl-single,pins = <
277			0x22 (PIN_OUTPUT | MUX_MODE3)		/* gpmc_a17.gpio_41 */
278			0x48 (PIN_OUTPUT | MUX_MODE3)		/* gpmc_nbe1.gpio_60 */
279			0x58 (PIN_INPUT_PULLDOWN | MUX_MODE3)	/* hdmi_hpd.gpio_63 */
280		>;
281	};
282
283	hsusbb1_pins: pinmux_hsusbb1_pins {
284		pinctrl-single,pins = <
285			0x82 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_clk.usbb1_ulpiphy_clk */
286			0x84 (PIN_OUTPUT | MUX_MODE4)		/* usbb1_ulpitll_stp.usbb1_ulpiphy_stp */
287			0x86 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dir.usbb1_ulpiphy_dir */
288			0x88 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_nxt.usbb1_ulpiphy_nxt */
289			0x8a (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat0.usbb1_ulpiphy_dat0 */
290			0x8c (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat1.usbb1_ulpiphy_dat1 */
291			0x8e (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat2.usbb1_ulpiphy_dat2 */
292			0x90 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat3.usbb1_ulpiphy_dat3 */
293			0x92 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat4.usbb1_ulpiphy_dat4 */
294			0x94 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat5.usbb1_ulpiphy_dat5 */
295			0x96 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat6.usbb1_ulpiphy_dat6 */
296			0x98 (PIN_INPUT_PULLDOWN | MUX_MODE4)	/* usbb1_ulpitll_dat7.usbb1_ulpiphy_dat7 */
297		>;
298	};
299
300	i2c1_pins: pinmux_i2c1_pins {
301		pinctrl-single,pins = <
302			0xe2 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl */
303			0xe4 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda */
304		>;
305	};
306
307	i2c2_pins: pinmux_i2c2_pins {
308		pinctrl-single,pins = <
309			0xe6 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_scl */
310			0xe8 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda */
311		>;
312	};
313
314	i2c3_pins: pinmux_i2c3_pins {
315		pinctrl-single,pins = <
316			0xea (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_scl */
317			0xec (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_sda */
318		>;
319	};
320
321	i2c4_pins: pinmux_i2c4_pins {
322		pinctrl-single,pins = <
323			0xee (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c4_scl */
324			0xf0 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c4_sda */
325		>;
326	};
327
328	/*
329	 * wl12xx GPIO outputs for WLAN_EN, BT_EN, FM_EN, BT_WAKEUP
330	 * REVISIT: Are the pull-ups needed for GPIO 48 and 49?
331	 */
332	wl12xx_gpio: pinmux_wl12xx_gpio {
333		pinctrl-single,pins = <
334			0x26 (PIN_OUTPUT | MUX_MODE3)		/* gpmc_a19.gpio_43 */
335			0x2c (PIN_OUTPUT | MUX_MODE3)		/* gpmc_a22.gpio_46 */
336			0x30 (PIN_OUTPUT_PULLUP | MUX_MODE3)	/* gpmc_a24.gpio_48 */
337			0x32 (PIN_OUTPUT_PULLUP | MUX_MODE3)	/* gpmc_a25.gpio_49 */
338		>;
339	};
340
341	/* wl12xx GPIO inputs and SDIO pins */
342	wl12xx_pins: pinmux_wl12xx_pins {
343		pinctrl-single,pins = <
344			0x38 (PIN_INPUT | MUX_MODE3)		/* gpmc_ncs2.gpio_52 */
345			0x3a (PIN_INPUT | MUX_MODE3)		/* gpmc_ncs3.gpio_53 */
346			0x108 (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_clk.sdmmc5_clk */
347			0x10a (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_cmd.sdmmc5_cmd */
348			0x10c (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat0.sdmmc5_dat0 */
349			0x10e (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat1.sdmmc5_dat1 */
350			0x110 (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat2.sdmmc5_dat2 */
351			0x112 (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat3.sdmmc5_dat3 */
352		>;
353	};
354};
355
356&omap4_pmx_wkup {
357	led_wkgpio_pins: pinmux_leds_wkpins {
358		pinctrl-single,pins = <
359			0x1a (PIN_OUTPUT | MUX_MODE3)	/* gpio_wk7 */
360			0x1c (PIN_OUTPUT | MUX_MODE3)	/* gpio_wk8 */
361		>;
362	};
363};
364
365&i2c1 {
366	pinctrl-names = "default";
367	pinctrl-0 = <&i2c1_pins>;
368
369	clock-frequency = <400000>;
370
371	twl: twl@48 {
372		reg = <0x48>;
373		/* IRQ# = 7 */
374		interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */
375	};
376
377	twl6040: twl@4b {
378		compatible = "ti,twl6040";
379		reg = <0x4b>;
380
381		pinctrl-names = "default";
382		pinctrl-0 = <&twl6040_pins>;
383
384		/* IRQ# = 119 */
385		interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_2N cascaded to gic */
386		ti,audpwron-gpio = <&gpio4 31 GPIO_ACTIVE_HIGH>;  /* gpio line 127 */
387
388		vio-supply = <&v1v8>;
389		v2v1-supply = <&v2v1>;
390		enable-active-high;
391	};
392};
393
394#include "twl6030.dtsi"
395#include "twl6030_omap4.dtsi"
396
397&i2c2 {
398	pinctrl-names = "default";
399	pinctrl-0 = <&i2c2_pins>;
400
401	clock-frequency = <400000>;
402};
403
404&i2c3 {
405	pinctrl-names = "default";
406	pinctrl-0 = <&i2c3_pins>;
407
408	clock-frequency = <100000>;
409
410	/*
411	 * Display monitor features are burnt in their EEPROM as EDID data.
412	 * The EEPROM is connected as I2C slave device.
413	 */
414	eeprom@50 {
415		compatible = "ti,eeprom";
416		reg = <0x50>;
417	};
418};
419
420&i2c4 {
421	pinctrl-names = "default";
422	pinctrl-0 = <&i2c4_pins>;
423
424	clock-frequency = <400000>;
425};
426
427&mmc1 {
428	vmmc-supply = <&vmmc>;
429	bus-width = <8>;
430};
431
432&mmc2 {
433	status = "disabled";
434};
435
436&mmc3 {
437	status = "disabled";
438};
439
440&mmc4 {
441	status = "disabled";
442};
443
444&mmc5 {
445	pinctrl-names = "default";
446	pinctrl-0 = <&wl12xx_pins>;
447	vmmc-supply = <&wl12xx_vmmc>;
448	non-removable;
449	bus-width = <4>;
450	cap-power-off-card;
451
452	#address-cells = <1>;
453	#size-cells = <0>;
454	wlcore: wlcore@2 {
455		compatible = "ti,wl1271";
456		reg = <2>;
457		interrupt-parent = <&gpio2>;
458		interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 53 */
459		ref-clock-frequency = <38400000>;
460	};
461};
462
463&emif1 {
464	cs1-used;
465	device-handle = <&elpida_ECB240ABACN>;
466};
467
468&emif2 {
469	cs1-used;
470	device-handle = <&elpida_ECB240ABACN>;
471};
472
473&mcbsp1 {
474	pinctrl-names = "default";
475	pinctrl-0 = <&mcbsp1_pins>;
476	status = "okay";
477};
478
479&mcpdm {
480	pinctrl-names = "default";
481	pinctrl-0 = <&mcpdm_pins>;
482	status = "okay";
483};
484
485&twl_usb_comparator {
486	usb-supply = <&vusb>;
487};
488
489&uart2 {
490	interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH
491			       &omap4_pmx_core OMAP4_UART2_RX>;
492};
493
494&uart3 {
495	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
496			       &omap4_pmx_core OMAP4_UART3_RX>;
497};
498
499&uart4 {
500	interrupts-extended = <&wakeupgen GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH
501			       &omap4_pmx_core OMAP4_UART4_RX>;
502};
503
504&usb_otg_hs {
505	interface-type = <1>;
506	mode = <3>;
507	power = <50>;
508};
509
510&usbhshost {
511	port1-mode = "ehci-phy";
512};
513
514&usbhsehci {
515	phys = <&hsusb1_phy>;
516};
517
518&dss {
519	status = "ok";
520
521	port {
522		dpi_out: endpoint {
523			remote-endpoint = <&tfp410_in>;
524			data-lines = <24>;
525		};
526	};
527};
528
529&dsi2 {
530	status = "ok";
531	vdd-supply = <&vcxio>;
532};
533
534&hdmi {
535	status = "ok";
536	vdda-supply = <&vdac>;
537
538	port {
539		hdmi_out: endpoint {
540			remote-endpoint = <&tpd12s015_in>;
541		};
542	};
543};
544