1// SPDX-License-Identifier: GPL-2.0-only
2/dts-v1/;
3
4#include <dt-bindings/input/input.h>
5#include "omap443x.dtsi"
6#include "motorola-cpcap-mapphone.dtsi"
7
8/ {
9	model = "Motorola Droid 4 XT894";
10	compatible = "motorola,droid4", "ti,omap4430", "ti,omap4";
11
12	chosen {
13		stdout-path = &uart3;
14	};
15
16	aliases {
17		display0 = &lcd0;
18		display1 = &hdmi0;
19	};
20
21	/*
22	 * We seem to have only 1021 MB accessible, 1021 - 1022 is locked,
23	 * then 1023 - 1024 seems to contain mbm.
24	 */
25	memory {
26		device_type = "memory";
27		reg = <0x80000000 0x3fd00000>;	/* 1021 MB */
28	};
29
30	/* Poweroff GPIO probably connected to CPCAP */
31	gpio-poweroff {
32		compatible = "gpio-poweroff";
33		pinctrl-0 = <&poweroff_gpio>;
34		pinctrl-names = "default";
35		gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;	/* gpio50 */
36	};
37
38	hdmi0: connector {
39		compatible = "hdmi-connector";
40		pinctrl-0 = <&hdmi_hpd_gpio>;
41		pinctrl-names = "default";
42		label = "hdmi";
43		type = "d";
44
45		hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;	/* gpio63 */
46
47		port {
48			hdmi_connector_in: endpoint {
49				remote-endpoint = <&hdmi_out>;
50			};
51		};
52	};
53
54	/*
55	 * HDMI 5V regulator probably sourced from battery. Let's keep
56	 * keep this as always enabled for HDMI to work until we've
57	 * figured what the encoder chip is.
58	 */
59	hdmi_regulator: regulator-hdmi {
60		compatible = "regulator-fixed";
61		regulator-name = "hdmi";
62		regulator-min-microvolt = <5000000>;
63		regulator-max-microvolt = <5000000>;
64		gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;	/* gpio59 */
65		enable-active-high;
66		regulator-always-on;
67	};
68
69	/* FS USB Host PHY on port 1 for mdm6600 */
70	fsusb1_phy: usb-phy@1 {
71		compatible = "motorola,mapphone-mdm6600";
72		pinctrl-0 = <&usb_mdm6600_pins>;
73		pinctrl-names = "default";
74		enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */
75		power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;	/* gpio_54 */
76		reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;	/* gpio_49 */
77		/* mode: gpio_148 gpio_149 */
78		motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
79				      <&gpio5 21 GPIO_ACTIVE_HIGH>;
80		/* cmd: gpio_103 gpio_104 gpio_142 */
81		motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
82				     <&gpio4 8 GPIO_ACTIVE_HIGH>,
83				     <&gpio5 14 GPIO_ACTIVE_HIGH>;
84		/* status: gpio_52 gpio_53 gpio_55 */
85		motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
86					<&gpio2 21 GPIO_ACTIVE_HIGH>,
87					<&gpio2 23 GPIO_ACTIVE_HIGH>;
88		#phy-cells = <0>;
89	};
90
91	/* HS USB host TLL nop-phy on port 2 for w3glte */
92	hsusb2_phy: usb-phy@2 {
93		compatible = "usb-nop-xceiv";
94		#phy-cells = <0>;
95	};
96
97	/* LCD regulator from sw5 source */
98	lcd_regulator: regulator-lcd {
99		compatible = "regulator-fixed";
100		regulator-name = "lcd";
101		regulator-min-microvolt = <5050000>;
102		regulator-max-microvolt = <5050000>;
103		gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;	/* gpio96 */
104		enable-active-high;
105		vin-supply = <&sw5>;
106	};
107
108	/* This is probably coming straight from the battery.. */
109	wl12xx_vmmc: regulator-wl12xx {
110		compatible = "regulator-fixed";
111		regulator-name = "vwl1271";
112		regulator-min-microvolt = <1650000>;
113		regulator-max-microvolt = <1650000>;
114		gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;	/* gpio94 */
115		startup-delay-us = <70000>;
116		enable-active-high;
117	};
118
119	gpio_keys {
120		compatible = "gpio-keys";
121
122		volume_down {
123			label = "Volume Down";
124			gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; /* gpio154 */
125			linux,code = <KEY_VOLUMEDOWN>;
126			linux,can-disable;
127			/* Value above 7.95ms for no GPIO hardware debounce */
128			debounce-interval = <10>;
129		};
130
131		slider {
132			label = "Keypad Slide";
133			gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* gpio122 */
134			linux,input-type = <EV_SW>;
135			linux,code = <SW_KEYPAD_SLIDE>;
136			linux,can-disable;
137			/* Value above 7.95ms for no GPIO hardware debounce */
138			debounce-interval = <10>;
139		};
140	};
141
142	soundcard {
143		compatible = "audio-graph-card";
144		label = "Droid 4 Audio";
145
146		simple-graph-card,widgets =
147			"Speaker", "Earpiece",
148			"Speaker", "Loudspeaker",
149			"Headphone", "Headphone Jack",
150			"Microphone", "Internal Mic";
151
152		simple-graph-card,routing =
153			"Earpiece", "EP",
154			"Loudspeaker", "SPKR",
155			"Headphone Jack", "HSL",
156			"Headphone Jack", "HSR",
157			"MICR", "Internal Mic";
158
159		dais = <&mcbsp2_port>, <&mcbsp3_port>;
160	};
161
162	pwm8: dmtimer-pwm-8 {
163		pinctrl-names = "default";
164		pinctrl-0 = <&vibrator_direction_pin>;
165
166		compatible = "ti,omap-dmtimer-pwm";
167		#pwm-cells = <3>;
168		ti,timers = <&timer8>;
169		ti,clock-source = <0x01>;
170	};
171
172	pwm9: dmtimer-pwm-9 {
173		pinctrl-names = "default";
174		pinctrl-0 = <&vibrator_enable_pin>;
175
176		compatible = "ti,omap-dmtimer-pwm";
177		#pwm-cells = <3>;
178		ti,timers = <&timer9>;
179		ti,clock-source = <0x01>;
180	};
181
182	vibrator {
183		compatible = "pwm-vibrator";
184		pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>;
185		pwm-names = "enable", "direction";
186		direction-duty-cycle-ns = <10000000>;
187	};
188};
189
190&dss {
191	status = "okay";
192};
193
194&dsi1 {
195	status = "okay";
196	vdd-supply = <&vcsi>;
197
198	port {
199		dsi1_out_ep: endpoint {
200			remote-endpoint = <&lcd0_in>;
201			lanes = <0 1 2 3 4 5>;
202		};
203	};
204
205	lcd0: display {
206		compatible = "panel-dsi-cm";
207		label = "lcd0";
208		vddi-supply = <&lcd_regulator>;
209		reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;	/* gpio101 */
210
211		width-mm = <50>;
212		height-mm = <89>;
213
214		panel-timing {
215			clock-frequency = <0>;		/* Calculated by dsi */
216
217			hback-porch = <2>;
218			hactive = <540>;
219			hfront-porch = <0>;
220			hsync-len = <2>;
221
222			vback-porch = <1>;
223			vactive = <960>;
224			vfront-porch = <0>;
225			vsync-len = <1>;
226
227			hsync-active = <0>;
228			vsync-active = <0>;
229			de-active = <1>;
230			pixelclk-active = <1>;
231		};
232
233		port {
234			lcd0_in: endpoint {
235				remote-endpoint = <&dsi1_out_ep>;
236			};
237		};
238	};
239};
240
241&hdmi {
242	status = "okay";
243	pinctrl-0 = <&dss_hdmi_pins>;
244	pinctrl-names = "default";
245	vdda-supply = <&vdac>;
246
247	port {
248		hdmi_out: endpoint {
249			remote-endpoint = <&hdmi_connector_in>;
250			lanes = <1 0 3 2 5 4 7 6>;
251		};
252	};
253};
254
255&i2c1 {
256	tmp105@48 {
257		compatible = "ti,tmp105";
258		reg = <0x48>;
259		pinctrl-0 = <&tmp105_irq>;
260		pinctrl-names = "default";
261		/* kpd_row0.gpio_178 */
262		interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING
263				       &omap4_pmx_core 0x14e>;
264		interrupt-names = "irq", "wakeup";
265		wakeup-source;
266	};
267};
268
269&keypad {
270	keypad,num-rows = <8>;
271	keypad,num-columns = <8>;
272	linux,keymap = <
273
274	/* Row 1 */
275	MATRIX_KEY(0, 2, KEY_1)
276	MATRIX_KEY(0, 6, KEY_2)
277	MATRIX_KEY(2, 3, KEY_3)
278	MATRIX_KEY(0, 7, KEY_4)
279	MATRIX_KEY(0, 4, KEY_5)
280	MATRIX_KEY(5, 5, KEY_6)
281	MATRIX_KEY(0, 1, KEY_7)
282	MATRIX_KEY(0, 5, KEY_8)
283	MATRIX_KEY(0, 0, KEY_9)
284	MATRIX_KEY(1, 6, KEY_0)
285
286	/* Row 2 */
287	MATRIX_KEY(3, 4, KEY_APOSTROPHE)
288	MATRIX_KEY(7, 6, KEY_Q)
289	MATRIX_KEY(7, 7, KEY_W)
290	MATRIX_KEY(7, 2, KEY_E)
291	MATRIX_KEY(1, 0, KEY_R)
292	MATRIX_KEY(4, 4, KEY_T)
293	MATRIX_KEY(1, 2, KEY_Y)
294	MATRIX_KEY(6, 7, KEY_U)
295	MATRIX_KEY(2, 2, KEY_I)
296	MATRIX_KEY(5, 6, KEY_O)
297	MATRIX_KEY(3, 7, KEY_P)
298	MATRIX_KEY(6, 5, KEY_BACKSPACE)
299
300	/* Row 3 */
301	MATRIX_KEY(5, 4, KEY_TAB)
302	MATRIX_KEY(5, 7, KEY_A)
303	MATRIX_KEY(2, 7, KEY_S)
304	MATRIX_KEY(7, 0, KEY_D)
305	MATRIX_KEY(2, 6, KEY_F)
306	MATRIX_KEY(6, 2, KEY_G)
307	MATRIX_KEY(6, 6, KEY_H)
308	MATRIX_KEY(1, 4, KEY_J)
309	MATRIX_KEY(3, 1, KEY_K)
310	MATRIX_KEY(2, 1, KEY_L)
311	MATRIX_KEY(4, 6, KEY_ENTER)
312
313	/* Row 4 */
314	MATRIX_KEY(3, 6, KEY_LEFTSHIFT)		/* KEY_CAPSLOCK */
315	MATRIX_KEY(6, 1, KEY_Z)
316	MATRIX_KEY(7, 4, KEY_X)
317	MATRIX_KEY(5, 1, KEY_C)
318	MATRIX_KEY(1, 7, KEY_V)
319	MATRIX_KEY(2, 4, KEY_B)
320	MATRIX_KEY(4, 1, KEY_N)
321	MATRIX_KEY(1, 1, KEY_M)
322	MATRIX_KEY(3, 5, KEY_COMMA)
323	MATRIX_KEY(5, 2, KEY_DOT)
324	MATRIX_KEY(6, 3, KEY_UP)
325	MATRIX_KEY(7, 3, KEY_OK)
326
327	/* Row 5 */
328	MATRIX_KEY(2, 5, KEY_LEFTCTRL)		/* KEY_LEFTSHIFT */
329	MATRIX_KEY(4, 5, KEY_LEFTALT)		/* SYM */
330	MATRIX_KEY(6, 0, KEY_MINUS)
331	MATRIX_KEY(4, 7, KEY_EQUAL)
332	MATRIX_KEY(1, 5, KEY_SPACE)
333	MATRIX_KEY(3, 2, KEY_SLASH)
334	MATRIX_KEY(4, 3, KEY_LEFT)
335	MATRIX_KEY(5, 3, KEY_DOWN)
336	MATRIX_KEY(3, 3, KEY_RIGHT)
337
338	/* Side buttons, KEY_VOLUMEDOWN and KEY_PWER are on CPCAP? */
339	MATRIX_KEY(5, 0, KEY_VOLUMEUP)
340	>;
341};
342
343&mmc1 {
344	vmmc-supply = <&vwlan2>;
345	bus-width = <4>;
346	cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* gpio176 */
347};
348
349&mmc2 {
350	vmmc-supply = <&vsdio>;
351	bus-width = <8>;
352	ti,non-removable;
353};
354
355&mmc3 {
356	vmmc-supply = <&wl12xx_vmmc>;
357	/* uart2_tx.sdmmc3_dat1 pad as wakeirq */
358	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
359			       &omap4_pmx_core 0xde>;
360	interrupt-names = "irq", "wakeup";
361	non-removable;
362	bus-width = <4>;
363	cap-power-off-card;
364	keep-power-in-suspend;
365
366	#address-cells = <1>;
367	#size-cells = <0>;
368	wlcore: wlcore@2 {
369		compatible = "ti,wl1285", "ti,wl1283";
370		reg = <2>;
371		/* gpio_100 with gpmc_wait2 pad as wakeirq */
372		interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>,
373				      <&omap4_pmx_core 0x4e>;
374		interrupt-names = "irq", "wakeup";
375		ref-clock-frequency = <26000000>;
376		tcxo-clock-frequency = <26000000>;
377	};
378};
379
380&i2c1 {
381	led-controller@38 {
382		compatible = "ti,lm3532";
383		#address-cells = <1>;
384		#size-cells = <0>;
385		reg = <0x38>;
386
387		enable-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>;
388
389		ramp-up-us = <1024>;
390		ramp-down-us = <8193>;
391
392		led@0 {
393			reg = <0>;
394			led-sources = <2>;
395			ti,led-mode = <0>;
396			label = ":backlight";
397			linux,default-trigger = "backlight";
398		};
399
400		led@1 {
401			reg = <1>;
402			led-sources = <1>;
403			ti,led-mode = <0>;
404			label = ":kbd_backlight";
405		};
406	};
407};
408
409&i2c2 {
410	touchscreen@4a {
411		compatible = "atmel,maxtouch";
412		reg = <0x4a>;
413		pinctrl-names = "default";
414		pinctrl-0 = <&touchscreen_pins>;
415
416		reset-gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; /* gpio173 */
417
418		/* gpio_183 with sys_nirq2 pad as wakeup */
419		interrupts-extended = <&gpio6 23 IRQ_TYPE_EDGE_FALLING>,
420				      <&omap4_pmx_core 0x160>;
421		interrupt-names = "irq", "wakeup";
422		wakeup-source;
423	};
424
425	isl29030@44 {
426		compatible = "isil,isl29030";
427		reg = <0x44>;
428
429		pinctrl-names = "default";
430		pinctrl-0 = <&als_proximity_pins>;
431
432		interrupt-parent = <&gpio6>;
433		interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */
434	};
435};
436
437&omap4_pmx_core {
438
439	/* hdmi_hpd.gpio_63 */
440	hdmi_hpd_gpio: pinmux_hdmi_hpd_pins {
441		pinctrl-single,pins = <
442		OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)
443		>;
444	};
445
446	/* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */
447	dss_hdmi_pins: pinmux_dss_hdmi_pins {
448		pinctrl-single,pins = <
449		OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)
450		OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0)
451		OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0)
452		>;
453	};
454
455	/* gpmc_ncs0.gpio_50 */
456	poweroff_gpio: pinmux_poweroff_pins {
457		pinctrl-single,pins = <
458		OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3)
459		>;
460	};
461
462	/* kpd_row0.gpio_178 */
463	tmp105_irq: pinmux_tmp105_irq {
464		pinctrl-single,pins = <
465		OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
466		>;
467	};
468
469	usb_gpio_mux_sel1: pinmux_usb_gpio_mux_sel1_pins {
470		/* gpio_60 */
471		pinctrl-single,pins = <
472		OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)
473		>;
474	};
475
476	touchscreen_pins: pinmux_touchscreen_pins {
477		pinctrl-single,pins = <
478		OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
479		OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
480		>;
481	};
482
483	als_proximity_pins: pinmux_als_proximity_pins {
484		pinctrl-single,pins = <
485		OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
486		>;
487	};
488
489	usb_mdm6600_pins: pinmux_usb_mdm6600_pins {
490		pinctrl-single,pins = <
491		/* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */
492		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
493
494		/* power 0x4a10007c gpmc_nwp.gpio_54 c25 */
495		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
496
497		/* reset 0x4a100072 gpmc_a25.gpio_49 d20 */
498		OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3)
499
500		/* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */
501		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
502
503		/* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */
504		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
505
506		/* status0 0x4a10007e gpmc_clk.gpio_55 b22 */
507		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
508
509		/* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */
510		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
511
512		/* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */
513		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
514
515		/* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */
516		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
517
518		/* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */
519		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
520
521		/* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */
522		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
523		>;
524	};
525
526	usb_ulpi_pins: pinmux_usb_ulpi_pins {
527		pinctrl-single,pins = <
528		OMAP4_IOPAD(0x196, MUX_MODE7)
529		OMAP4_IOPAD(0x198, MUX_MODE7)
530		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0)
531		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0)
532		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0)
533		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0)
534		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0)
535		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0)
536		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0)
537		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0)
538		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0)
539		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0)
540		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0)
541		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0)
542		>;
543	};
544
545	/* usb0_otg_dp and usb0_otg_dm */
546	usb_utmi_pins: pinmux_usb_utmi_pins {
547		pinctrl-single,pins = <
548		OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0)
549		OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0)
550		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
551		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
552		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
553		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
554		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7)
555		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7)
556		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
557		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
558		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
559		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
560		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
561		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
562		>;
563	};
564
565	/*
566	 * Note that the v3.0.8 stock userspace dynamically remuxes uart1
567	 * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7
568	 * when not used. If needed, we can add rts pin remux later based
569	 * on power measurements.
570	 */
571	uart1_pins: pinmux_uart1_pins {
572		pinctrl-single,pins = <
573		/* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */
574		OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1)
575
576		/* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */
577		OMAP4_IOPAD(0x13e, MUX_MODE1)
578
579		/* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */
580		OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1)
581
582		/* 0x4a1001ca dpm_emu14.uart1_rx aa3 */
583		OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2)
584		>;
585	};
586
587	/* uart3_tx_irtx and uart3_rx_irrx */
588	uart3_pins: pinmux_uart3_pins {
589		pinctrl-single,pins = <
590		OMAP4_IOPAD(0x196, MUX_MODE7)
591		OMAP4_IOPAD(0x198, MUX_MODE7)
592		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
593		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
594		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
595		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
596		OMAP4_IOPAD(0x1ba, MUX_MODE2)
597		OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2)
598		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
599		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
600		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
601		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
602		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
603		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
604		>;
605	};
606
607	uart4_pins: pinmux_uart4_pins {
608		pinctrl-single,pins = <
609		OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)		/* uart4_rx */
610		OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)		/* uart4_tx */
611		OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)	/* uart4_cts */
612		OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)	/* uart4_rts */
613		>;
614	};
615
616	mcbsp2_pins: pinmux_mcbsp2_pins {
617		pinctrl-single,pins = <
618		OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_clkx */
619		OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_dr */
620		OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)	/* abe_mcbsp2_dx */
621		OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_fsx */
622		>;
623	};
624
625	mcbsp3_pins: pinmux_mcbsp3_pins {
626		pinctrl-single,pins = <
627		OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_dr */
628		OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)	/* abe_mcbsp3_dx */
629		OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_clkx */
630		OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_fsx */
631		>;
632	};
633
634	vibrator_direction_pin: pinmux_vibrator_direction_pin {
635		pinctrl-single,pins = <
636		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)	/* dmtimer8_pwm_evt (gpio_27) */
637		>;
638	};
639
640	vibrator_enable_pin: pinmux_vibrator_enable_pin {
641		pinctrl-single,pins = <
642		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)	/* dmtimer9_pwm_evt (gpio_28) */
643		>;
644	};
645};
646
647&omap4_pmx_wkup {
648	usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins {
649		/* gpio_wk0 */
650		pinctrl-single,pins = <
651		OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
652		>;
653	};
654};
655
656/* Configure pwm clock source for timers 8 & 9 */
657&timer8 {
658	assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
659	assigned-clock-parents = <&sys_clkin_ck>;
660};
661
662&timer9 {
663	assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
664	assigned-clock-parents = <&sys_clkin_ck>;
665};
666
667/*
668 * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
669 * uart1 wakeirq.
670 */
671&uart1 {
672	pinctrl-names = "default";
673	pinctrl-0 = <&uart1_pins>;
674	interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH
675			       &omap4_pmx_core 0xfc>;
676};
677
678&uart3 {
679	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
680			       &omap4_pmx_core 0x17c>;
681};
682
683&uart4 {
684	pinctrl-names = "default";
685	pinctrl-0 = <&uart4_pins>;
686
687	bluetooth {
688		compatible = "ti,wl1285-st";
689		enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */
690		max-speed = <3686400>;
691	};
692};
693
694&usbhsohci {
695	phys = <&fsusb1_phy>;
696	phy-names = "usb";
697};
698
699&usbhsehci {
700	phys = <&hsusb2_phy>;
701};
702
703&usbhshost {
704	port1-mode = "ohci-phy-4pin-dpdm";
705	port2-mode = "ehci-tll";
706};
707
708/* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */
709&usb_otg_hs {
710	interface-type = <1>;
711	mode = <3>;
712	power = <50>;
713};
714
715&i2c4 {
716	ak8975: magnetometer@c {
717		compatible = "asahi-kasei,ak8975";
718		reg = <0x0c>;
719
720		vdd-supply = <&vhvio>;
721
722		interrupt-parent = <&gpio6>;
723		interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */
724
725		rotation-matrix = "-1", "0", "0",
726				  "0", "1", "0",
727				  "0", "0", "-1";
728
729	};
730
731	lis3dh: accelerometer@18 {
732		compatible = "st,lis3dh-accel";
733		reg = <0x18>;
734
735		vdd-supply = <&vhvio>;
736
737		interrupt-parent = <&gpio2>;
738		interrupts = <2 IRQ_TYPE_EDGE_BOTH>; /* gpio34 */
739
740		rotation-matrix = "0", "-1", "0",
741				  "1", "0", "0",
742				  "0", "0", "1";
743	};
744};
745
746&mcbsp2 {
747	#sound-dai-cells = <0>;
748	pinctrl-names = "default";
749	pinctrl-0 = <&mcbsp2_pins>;
750	status = "okay";
751
752	mcbsp2_port: port {
753		cpu_dai2: endpoint {
754			dai-format = "i2s";
755			remote-endpoint = <&cpcap_audio_codec0>;
756			frame-master = <&cpcap_audio_codec0>;
757			bitclock-master = <&cpcap_audio_codec0>;
758		};
759	};
760};
761
762&mcbsp3 {
763	#sound-dai-cells = <0>;
764	pinctrl-names = "default";
765	pinctrl-0 = <&mcbsp3_pins>;
766	status = "okay";
767
768	mcbsp3_port: port {
769		cpu_dai3: endpoint {
770			dai-format = "dsp_a";
771			frame-master = <&cpcap_audio_codec1>;
772			bitclock-master = <&cpcap_audio_codec1>;
773			remote-endpoint = <&cpcap_audio_codec1>;
774		};
775	};
776};
777
778&cpcap_audio_codec0 {
779	remote-endpoint = <&cpu_dai2>;
780};
781
782&cpcap_audio_codec1 {
783	remote-endpoint = <&cpu_dai3>;
784};
785