xref: /linux/arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi (revision 42422993cf28d456778ee9168d73758ec037cd51)
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	chosen {
10		stdout-path = &uart3;
11	};
12
13	aliases {
14		display0 = &lcd0;
15		display1 = &hdmi0;
16	};
17
18	/*
19	 * We seem to have only 1021 MB accessible, 1021 - 1022 is locked,
20	 * then 1023 - 1024 seems to contain mbm.
21	 */
22	memory {
23		device_type = "memory";
24		reg = <0x80000000 0x3fd00000>;	/* 1021 MB */
25	};
26
27	/* Poweroff GPIO probably connected to CPCAP */
28	gpio-poweroff {
29		compatible = "gpio-poweroff";
30		pinctrl-0 = <&poweroff_gpio>;
31		pinctrl-names = "default";
32		gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;	/* gpio50 */
33	};
34
35	hdmi0: connector {
36		compatible = "hdmi-connector";
37		pinctrl-0 = <&hdmi_hpd_gpio>;
38		pinctrl-names = "default";
39		label = "hdmi";
40		type = "d";
41
42		hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;	/* gpio63 */
43
44		port {
45			hdmi_connector_in: endpoint {
46				remote-endpoint = <&hdmi_out>;
47			};
48		};
49	};
50
51	/*
52	 * HDMI 5V regulator probably sourced from battery. Let's keep
53	 * keep this as always enabled for HDMI to work until we've
54	 * figured what the encoder chip is.
55	 */
56	hdmi_regulator: regulator-hdmi {
57		compatible = "regulator-fixed";
58		regulator-name = "hdmi";
59		regulator-min-microvolt = <5000000>;
60		regulator-max-microvolt = <5000000>;
61		gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;	/* gpio59 */
62		enable-active-high;
63		regulator-always-on;
64	};
65
66	/* FS USB Host PHY on port 1 for mdm6600 */
67	fsusb1_phy: usb-phy@1 {
68		compatible = "motorola,mapphone-mdm6600";
69		pinctrl-0 = <&usb_mdm6600_pins>;
70		pinctrl-1 = <&usb_mdm6600_sleep_pins>;
71		pinctrl-names = "default", "sleep";
72		enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */
73		power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;	/* gpio_54 */
74		reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;	/* gpio_49 */
75		/* mode: gpio_148 gpio_149 */
76		motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
77				      <&gpio5 21 GPIO_ACTIVE_HIGH>;
78		/* cmd: gpio_103 gpio_104 gpio_142 */
79		motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
80				     <&gpio4 8 GPIO_ACTIVE_HIGH>,
81				     <&gpio5 14 GPIO_ACTIVE_HIGH>;
82		/* status: gpio_52 gpio_53 gpio_55 */
83		motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
84					<&gpio2 21 GPIO_ACTIVE_HIGH>,
85					<&gpio2 23 GPIO_ACTIVE_HIGH>;
86		#phy-cells = <0>;
87	};
88
89	/* HS USB host TLL nop-phy on port 2 for w3glte */
90	hsusb2_phy: usb-phy@2 {
91		compatible = "usb-nop-xceiv";
92		#phy-cells = <0>;
93	};
94
95	/* LCD regulator from sw5 source */
96	lcd_regulator: regulator-lcd {
97		compatible = "regulator-fixed";
98		regulator-name = "lcd";
99		regulator-min-microvolt = <5050000>;
100		regulator-max-microvolt = <5050000>;
101		gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;	/* gpio96 */
102		enable-active-high;
103		vin-supply = <&sw5>;
104	};
105
106	/* This is probably coming straight from the battery.. */
107	wl12xx_vmmc: regulator-wl12xx {
108		compatible = "regulator-fixed";
109		regulator-name = "vwl1271";
110		regulator-min-microvolt = <1650000>;
111		regulator-max-microvolt = <1650000>;
112		gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;	/* gpio94 */
113		startup-delay-us = <70000>;
114		enable-active-high;
115	};
116
117	soundcard {
118		compatible = "audio-graph-card";
119		label = "Mapphone Audio";
120
121		widgets =
122			"Speaker", "Earpiece",
123			"Speaker", "Loudspeaker",
124			"Headphone", "Headphone Jack",
125			"Microphone", "Internal Mic";
126
127		routing =
128			"Earpiece", "EP",
129			"Loudspeaker", "SPKR",
130			"Headphone Jack", "HSL",
131			"Headphone Jack", "HSR",
132			"MICR", "Internal Mic";
133
134		dais = <&mcbsp2_port>, <&mcbsp3_port>;
135	};
136
137	pwm8: pwm-8 {
138		pinctrl-names = "default";
139		pinctrl-0 = <&vibrator_direction_pin>;
140
141		compatible = "ti,omap-dmtimer-pwm";
142		#pwm-cells = <3>;
143		ti,timers = <&timer8>;
144		ti,clock-source = <0x01>;
145	};
146
147	pwm9: pwm-9 {
148		pinctrl-names = "default";
149		pinctrl-0 = <&vibrator_enable_pin>;
150
151		compatible = "ti,omap-dmtimer-pwm";
152		#pwm-cells = <3>;
153		ti,timers = <&timer9>;
154		ti,clock-source = <0x01>;
155	};
156
157	vibrator {
158		compatible = "pwm-vibrator";
159		pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>;
160		pwm-names = "enable", "direction";
161		direction-duty-cycle-ns = <10000000>;
162	};
163
164	backlight: backlight {
165		compatible = "led-backlight";
166
167		leds = <&backlight_led>;
168		brightness-levels = <31 63 95 127 159 191 223 255>;
169		default-brightness-level = <6>;
170	};
171};
172
173&cpu_thermal {
174	polling-delay = <10000>; /* milliseconds */
175};
176
177&cpu_alert0 {
178        temperature = <80000>; /* millicelsius */
179};
180
181&cpu0 {
182        /*
183	 * Note that the 1.2GiHz mode is enabled for all SoC variants for
184	 * the Motorola Android Linux v3.0.8 based kernel.
185	 */
186        operating-points = <
187	        /* kHz    uV */
188	        300000  1025000
189	        600000  1200000
190	        800000  1313000
191	        1008000 1375000
192		1200000 1375000
193        >;
194};
195
196&dss {
197	status = "okay";
198};
199
200&dsi1 {
201	status = "okay";
202	vdd-supply = <&vcsi>;
203
204	port {
205		dsi1_out_ep: endpoint {
206			remote-endpoint = <&lcd0_in>;
207			lanes = <0 1 2 3 4 5>;
208		};
209	};
210
211	lcd0: panel@0 {
212		compatible = "motorola,droid4-panel", "panel-dsi-cm";
213		reg = <0>;
214		label = "lcd0";
215		vddi-supply = <&lcd_regulator>;
216		reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;	/* gpio101 */
217
218		backlight = <&backlight>;
219
220		width-mm = <50>;
221		height-mm = <89>;
222		rotation = <90>;
223
224		panel-timing {
225			clock-frequency = <0>;		/* Calculated by dsi */
226
227			hback-porch = <2>;
228			hactive = <540>;
229			hfront-porch = <0>;
230			hsync-len = <2>;
231
232			vback-porch = <1>;
233			vactive = <960>;
234			vfront-porch = <0>;
235			vsync-len = <1>;
236
237			hsync-active = <0>;
238			vsync-active = <0>;
239			de-active = <1>;
240			pixelclk-active = <1>;
241		};
242
243		port {
244			lcd0_in: endpoint {
245				remote-endpoint = <&dsi1_out_ep>;
246			};
247		};
248	};
249};
250
251&hdmi {
252	status = "okay";
253	pinctrl-0 = <&dss_hdmi_pins>;
254	pinctrl-names = "default";
255	vdda-supply = <&vdac>;
256
257	port {
258		hdmi_out: endpoint {
259			remote-endpoint = <&hdmi_connector_in>;
260			lanes = <1 0 3 2 5 4 7 6>;
261		};
262	};
263};
264
265/* Battery NVRAM on 1-wire handled by w1_ds250x driver */
266&hdqw1w {
267	pinctrl-0 = <&hdq_pins>;
268	pinctrl-names = "default";
269	ti,mode = "1w";
270};
271
272&i2c1 {
273	tmp105@48 {
274		compatible = "ti,tmp105";
275		reg = <0x48>;
276		pinctrl-0 = <&tmp105_irq>;
277		pinctrl-names = "default";
278		/* kpd_row0.gpio_178 */
279		interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING
280				       &omap4_pmx_core 0x14e>;
281		interrupt-names = "irq", "wakeup";
282		wakeup-source;
283	};
284};
285
286&mmc1 {
287	vmmc-supply = <&vwlan2>;
288	bus-width = <4>;
289	cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* gpio176 */
290};
291
292&mmc2 {
293	vmmc-supply = <&vsdio>;
294	bus-width = <8>;
295	ti,non-removable;
296};
297
298&mmc3 {
299	pinctrl-names = "default";
300	pinctrl-0 = <&mmc3_pins>;
301	vmmc-supply = <&wl12xx_vmmc>;
302	/* uart2_tx.sdmmc3_dat1 pad as wakeirq */
303	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
304			       &omap4_pmx_core 0xde>;
305	interrupt-names = "irq", "wakeup";
306	non-removable;
307	bus-width = <4>;
308	cap-power-off-card;
309	keep-power-in-suspend;
310
311	#address-cells = <1>;
312	#size-cells = <0>;
313	wlcore: wlcore@2 {
314		compatible = "ti,wl1285";
315		reg = <2>;
316		/* gpio_100 with gpmc_wait2 pad as wakeirq */
317		interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>,
318				      <&omap4_pmx_core 0x4e>;
319		interrupt-names = "irq", "wakeup";
320		ref-clock-frequency = <26000000>;
321		tcxo-clock-frequency = <26000000>;
322	};
323};
324
325&i2c2 {
326	touchscreen@4a {
327		compatible = "atmel,maxtouch";
328		reg = <0x4a>;
329		pinctrl-names = "default";
330		pinctrl-0 = <&touchscreen_pins>;
331
332		reset-gpios = <&gpio6 13 GPIO_ACTIVE_LOW>; /* gpio173 */
333
334		/* gpio_183 with sys_nirq2 pad as wakeup */
335		interrupts-extended = <&gpio6 23 IRQ_TYPE_LEVEL_LOW>,
336				      <&omap4_pmx_core 0x160>;
337		interrupt-names = "irq", "wakeup";
338		wakeup-source;
339	};
340
341	isl29030@44 {
342		compatible = "isil,isl29030";
343		reg = <0x44>;
344
345		pinctrl-names = "default";
346		pinctrl-0 = <&als_proximity_pins>;
347
348		interrupt-parent = <&gpio6>;
349		interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */
350	};
351};
352
353&omap4_pmx_core {
354
355	/* hdmi_hpd.gpio_63 */
356	hdmi_hpd_gpio: hdmi-hpd-pins {
357		pinctrl-single,pins = <
358		OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)
359		>;
360	};
361
362	hdq_pins: hdq-pins {
363		pinctrl-single,pins = <
364		/* 0x4a100120 hdq_sio.hdq_sio aa27 */
365		OMAP4_IOPAD(0x120, PIN_INPUT | MUX_MODE0)
366		>;
367	};
368
369	/* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */
370	dss_hdmi_pins: dss-hdmi-pins {
371		pinctrl-single,pins = <
372		OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)
373		OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0)
374		OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0)
375		>;
376	};
377
378	/*
379	 * Android uses PIN_OFF_INPUT_PULLDOWN | PIN_INPUT_PULLUP | MUX_MODE3
380	 * for gpio_100, but the internal pull makes wlan flakey on some
381	 * devices. Off mode value should be tested if we have off mode working
382	 * later on.
383	 */
384	mmc3_pins: mmc3-pins {
385		pinctrl-single,pins = <
386		/* 0x4a10008e gpmc_wait2.gpio_100 d23 */
387		OMAP4_IOPAD(0x08e, PIN_INPUT | MUX_MODE3)
388
389		/* 0x4a100102 abe_mcbsp1_dx.sdmmc3_dat2 ab25 */
390		OMAP4_IOPAD(0x102, PIN_INPUT_PULLUP | MUX_MODE1)
391
392		/* 0x4a100104 abe_mcbsp1_fsx.sdmmc3_dat3 ac27 */
393		OMAP4_IOPAD(0x104, PIN_INPUT_PULLUP | MUX_MODE1)
394
395		/* 0x4a100118 uart2_cts.sdmmc3_clk ab26 */
396		OMAP4_IOPAD(0x118, PIN_INPUT | MUX_MODE1)
397
398		/* 0x4a10011a uart2_rts.sdmmc3_cmd ab27 */
399		OMAP4_IOPAD(0x11a, PIN_INPUT_PULLUP | MUX_MODE1)
400
401		/* 0x4a10011c uart2_rx.sdmmc3_dat0 aa25 */
402		OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE1)
403
404		/* 0x4a10011e uart2_tx.sdmmc3_dat1 aa26 */
405		OMAP4_IOPAD(0x11e, PIN_INPUT_PULLUP | MUX_MODE1)
406		>;
407	};
408
409	/* gpmc_ncs0.gpio_50 */
410	poweroff_gpio: poweroff-pins {
411		pinctrl-single,pins = <
412		OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3)
413		>;
414	};
415
416	/* kpd_row0.gpio_178 */
417	tmp105_irq: tmp105-irq-pins {
418		pinctrl-single,pins = <
419		OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
420		>;
421	};
422
423	usb_gpio_mux_sel1: usb-gpio-mux-sel1-pins {
424		/* gpio_60 */
425		pinctrl-single,pins = <
426		OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)
427		>;
428	};
429
430	touchscreen_pins: touchscreen-pins {
431		pinctrl-single,pins = <
432		OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
433		OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
434		>;
435	};
436
437	als_proximity_pins: als-proximity-pins {
438		pinctrl-single,pins = <
439		OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
440		>;
441	};
442
443	usb_mdm6600_pins: usb-mdm6600-pins {
444		pinctrl-single,pins = <
445		/* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */
446		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
447
448		/* power 0x4a10007c gpmc_nwp.gpio_54 c25 */
449		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
450
451		/* reset 0x4a100072 gpmc_a25.gpio_49 d20 */
452		OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3)
453
454		/* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */
455		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
456
457		/* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */
458		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
459
460		/* status0 0x4a10007e gpmc_clk.gpio_55 b22 */
461		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
462
463		/* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */
464		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
465
466		/* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */
467		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
468
469		/* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */
470		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
471
472		/* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */
473		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
474
475		/* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */
476		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
477		>;
478	};
479
480	/* Modem sleep pins to keep gpio_49 high with internal pull */
481	usb_mdm6600_sleep_pins: usb-mdm6600-sleep-pins {
482		pinctrl-single,pins = <
483		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
484		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
485		OMAP4_IOPAD(0x072, PIN_INPUT_PULLUP | MUX_MODE7) /* Keep gpio_49 reset high */
486		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
487		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
488		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
489		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
490		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
491		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
492		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
493		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
494		>;
495	};
496
497	usb_ulpi_pins: usb-ulpi-pins {
498		pinctrl-single,pins = <
499		OMAP4_IOPAD(0x196, MUX_MODE7)
500		OMAP4_IOPAD(0x198, MUX_MODE7)
501		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0)
502		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0)
503		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0)
504		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0)
505		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0)
506		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0)
507		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0)
508		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0)
509		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0)
510		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0)
511		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0)
512		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0)
513		>;
514	};
515
516	/* usb0_otg_dp and usb0_otg_dm */
517	usb_utmi_pins: usb-utmi-pins {
518		pinctrl-single,pins = <
519		OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0)
520		OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0)
521		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
522		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
523		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
524		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
525		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7)
526		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7)
527		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
528		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
529		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
530		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
531		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
532		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
533		>;
534	};
535
536	/*
537	 * Note that the v3.0.8 stock userspace dynamically remuxes uart1
538	 * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7
539	 * when not used. If needed, we can add rts pin remux later based
540	 * on power measurements.
541	 */
542	uart1_pins: uart1-pins {
543		pinctrl-single,pins = <
544		/* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */
545		OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1)
546
547		/* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */
548		OMAP4_IOPAD(0x13e, MUX_MODE1)
549
550		/* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */
551		OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1)
552
553		/* 0x4a1001ca dpm_emu14.uart1_rx aa3 */
554		OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2)
555		>;
556	};
557
558	/* uart3_tx_irtx and uart3_rx_irrx */
559	uart3_pins: uart3-pins {
560		pinctrl-single,pins = <
561		OMAP4_IOPAD(0x196, MUX_MODE7)
562		OMAP4_IOPAD(0x198, MUX_MODE7)
563		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
564		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
565		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
566		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
567		OMAP4_IOPAD(0x1ba, MUX_MODE2)
568		OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2)
569		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
570		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
571		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
572		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
573		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
574		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
575		>;
576	};
577
578	uart4_pins: uart4-pins {
579		pinctrl-single,pins = <
580		OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)		/* uart4_rx */
581		OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)		/* uart4_tx */
582		OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)	/* uart4_cts */
583		OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)	/* uart4_rts */
584		>;
585	};
586
587	mcbsp2_pins: mcbsp2-pins {
588		pinctrl-single,pins = <
589		OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_clkx */
590		OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_dr */
591		OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)	/* abe_mcbsp2_dx */
592		OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_fsx */
593		>;
594	};
595
596	mcbsp3_pins: mcbsp3-pins {
597		pinctrl-single,pins = <
598		OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_dr */
599		OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)	/* abe_mcbsp3_dx */
600		OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_clkx */
601		OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_fsx */
602		>;
603	};
604
605	vibrator_direction_pin: vibrator-direction-pins {
606		pinctrl-single,pins = <
607		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)	/* dmtimer8_pwm_evt (gpio_27) */
608		>;
609	};
610
611	vibrator_enable_pin: vibrator-enable-pins {
612		pinctrl-single,pins = <
613		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)	/* dmtimer9_pwm_evt (gpio_28) */
614		>;
615	};
616};
617
618&omap4_pmx_wkup {
619	usb_gpio_mux_sel2: usb-gpio-mux-sel2-pins {
620		/* gpio_wk0 */
621		pinctrl-single,pins = <
622		OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
623		>;
624	};
625};
626
627/* RNG is used by secure mode and not accessible */
628&rng_target {
629	status = "disabled";
630};
631
632/* Configure pwm clock source for timers 8 & 9 */
633&timer8 {
634	assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
635	assigned-clock-parents = <&sys_32k_ck>;
636};
637
638&timer9 {
639	assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
640	assigned-clock-parents = <&sys_32k_ck>;
641};
642
643/*
644 * The uart1 port is wired to mdm6600 with rts and cts. The modem uses gpio_149
645 * for wake-up events for both the USB PHY and the UART. We can use gpio_149
646 * pad as the shared wakeirq for the UART rather than the RX or CTS pad as we
647 * have gpio_149 trigger before the UART transfer starts.
648 */
649&uart1 {
650	pinctrl-names = "default";
651	pinctrl-0 = <&uart1_pins>;
652	interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH
653			       &omap4_pmx_core 0x110>;
654	uart-has-rtscts;
655	current-speed = <115200>;
656};
657
658&uart3 {
659	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
660			       &omap4_pmx_core 0x17c>;
661	overrun-throttle-ms = <500>;
662};
663
664&uart4 {
665	pinctrl-names = "default";
666	pinctrl-0 = <&uart4_pins>;
667
668	bluetooth {
669		compatible = "ti,wl1285-st";
670		enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */
671		max-speed = <3686400>;
672	};
673};
674
675&usbhsohci {
676	phys = <&fsusb1_phy>;
677	phy-names = "usb";
678};
679
680&usbhsehci {
681	phys = <&hsusb2_phy>;
682};
683
684&usbhshost {
685	port1-mode = "ohci-phy-4pin-dpdm";
686	port2-mode = "ehci-tll";
687};
688
689/* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */
690&usb_otg_hs {
691	interface-type = <1>;
692	mode = <3>;
693
694	/*
695	 * Max 300 mA steps based on similar PMIC MC13783UG.pdf "Table 10-4.
696	 * VBUS Regulator Main Characteristics". Binding uses 2 mA units.
697	 */
698	power = <150>;
699};
700
701&i2c4 {
702	ak8975: magnetometer@c {
703		compatible = "asahi-kasei,ak8975";
704		reg = <0x0c>;
705
706		vdd-supply = <&vhvio>;
707
708		interrupt-parent = <&gpio6>;
709		interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */
710
711		rotation-matrix = "-1", "0", "0",
712				  "0", "1", "0",
713				  "0", "0", "-1";
714
715	};
716};
717
718&mcbsp2 {
719	#sound-dai-cells = <0>;
720	pinctrl-names = "default";
721	pinctrl-0 = <&mcbsp2_pins>;
722	status = "okay";
723
724	mcbsp2_port: port {
725		cpu_dai2: endpoint {
726			dai-format = "i2s";
727			remote-endpoint = <&cpcap_audio_codec0>;
728			frame-master = <&cpcap_audio_codec0>;
729			bitclock-master = <&cpcap_audio_codec0>;
730		};
731	};
732};
733
734&mcbsp3 {
735	#sound-dai-cells = <0>;
736	pinctrl-names = "default";
737	pinctrl-0 = <&mcbsp3_pins>;
738	status = "okay";
739
740	mcbsp3_port: port {
741		cpu_dai3: endpoint {
742			dai-format = "dsp_a";
743			frame-master = <&cpcap_audio_codec1>;
744			bitclock-master = <&cpcap_audio_codec1>;
745			remote-endpoint = <&cpcap_audio_codec1>;
746		};
747	};
748};
749
750&cpcap_audio_codec0 {
751	remote-endpoint = <&cpu_dai2>;
752};
753
754&cpcap_audio_codec1 {
755	remote-endpoint = <&cpu_dai3>;
756};
757