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