Linux Audio

Check our new training course

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