Linux Audio

Check our new training course

Loading...
v4.17
  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 = &ethernet;
 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};
v3.15
  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};