xref: /openbmc/linux/arch/arm/boot/dts/ti/omap/motorola-mapphone-common.dtsi (revision e402b08634b398e9feb94902c7adcf05bb8ba47d)
1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0-only
2724ba675SRob Herring/dts-v1/;
3724ba675SRob Herring
4724ba675SRob Herring#include <dt-bindings/input/input.h>
5724ba675SRob Herring#include "omap443x.dtsi"
6724ba675SRob Herring#include "motorola-cpcap-mapphone.dtsi"
7724ba675SRob Herring
8724ba675SRob Herring/ {
9724ba675SRob Herring	chosen {
10724ba675SRob Herring		stdout-path = &uart3;
11724ba675SRob Herring	};
12724ba675SRob Herring
13724ba675SRob Herring	aliases {
14724ba675SRob Herring		display0 = &lcd0;
15724ba675SRob Herring		display1 = &hdmi0;
16724ba675SRob Herring	};
17724ba675SRob Herring
18724ba675SRob Herring	/*
19724ba675SRob Herring	 * We seem to have only 1021 MB accessible, 1021 - 1022 is locked,
20724ba675SRob Herring	 * then 1023 - 1024 seems to contain mbm.
21724ba675SRob Herring	 */
22724ba675SRob Herring	memory {
23724ba675SRob Herring		device_type = "memory";
24724ba675SRob Herring		reg = <0x80000000 0x3fd00000>;	/* 1021 MB */
25724ba675SRob Herring	};
26724ba675SRob Herring
27724ba675SRob Herring	/* Poweroff GPIO probably connected to CPCAP */
28724ba675SRob Herring	gpio-poweroff {
29724ba675SRob Herring		compatible = "gpio-poweroff";
30724ba675SRob Herring		pinctrl-0 = <&poweroff_gpio>;
31724ba675SRob Herring		pinctrl-names = "default";
32724ba675SRob Herring		gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;	/* gpio50 */
33724ba675SRob Herring	};
34724ba675SRob Herring
35724ba675SRob Herring	hdmi0: connector {
36724ba675SRob Herring		compatible = "hdmi-connector";
37724ba675SRob Herring		pinctrl-0 = <&hdmi_hpd_gpio>;
38724ba675SRob Herring		pinctrl-names = "default";
39724ba675SRob Herring		label = "hdmi";
40724ba675SRob Herring		type = "d";
41724ba675SRob Herring
42724ba675SRob Herring		hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;	/* gpio63 */
43724ba675SRob Herring
44724ba675SRob Herring		port {
45724ba675SRob Herring			hdmi_connector_in: endpoint {
46724ba675SRob Herring				remote-endpoint = <&hdmi_out>;
47724ba675SRob Herring			};
48724ba675SRob Herring		};
49724ba675SRob Herring	};
50724ba675SRob Herring
51724ba675SRob Herring	/*
52724ba675SRob Herring	 * HDMI 5V regulator probably sourced from battery. Let's keep
53724ba675SRob Herring	 * keep this as always enabled for HDMI to work until we've
54724ba675SRob Herring	 * figured what the encoder chip is.
55724ba675SRob Herring	 */
56724ba675SRob Herring	hdmi_regulator: regulator-hdmi {
57724ba675SRob Herring		compatible = "regulator-fixed";
58724ba675SRob Herring		regulator-name = "hdmi";
59724ba675SRob Herring		regulator-min-microvolt = <5000000>;
60724ba675SRob Herring		regulator-max-microvolt = <5000000>;
61724ba675SRob Herring		gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;	/* gpio59 */
62724ba675SRob Herring		enable-active-high;
63724ba675SRob Herring		regulator-always-on;
64724ba675SRob Herring	};
65724ba675SRob Herring
66724ba675SRob Herring	/* FS USB Host PHY on port 1 for mdm6600 */
67724ba675SRob Herring	fsusb1_phy: usb-phy@1 {
68724ba675SRob Herring		compatible = "motorola,mapphone-mdm6600";
69724ba675SRob Herring		pinctrl-0 = <&usb_mdm6600_pins>;
70724ba675SRob Herring		pinctrl-names = "default";
71724ba675SRob Herring		enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */
72724ba675SRob Herring		power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;	/* gpio_54 */
73724ba675SRob Herring		reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;	/* gpio_49 */
74724ba675SRob Herring		/* mode: gpio_148 gpio_149 */
75724ba675SRob Herring		motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>,
76724ba675SRob Herring				      <&gpio5 21 GPIO_ACTIVE_HIGH>;
77724ba675SRob Herring		/* cmd: gpio_103 gpio_104 gpio_142 */
78724ba675SRob Herring		motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>,
79724ba675SRob Herring				     <&gpio4 8 GPIO_ACTIVE_HIGH>,
80724ba675SRob Herring				     <&gpio5 14 GPIO_ACTIVE_HIGH>;
81724ba675SRob Herring		/* status: gpio_52 gpio_53 gpio_55 */
82724ba675SRob Herring		motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>,
83724ba675SRob Herring					<&gpio2 21 GPIO_ACTIVE_HIGH>,
84724ba675SRob Herring					<&gpio2 23 GPIO_ACTIVE_HIGH>;
85724ba675SRob Herring		#phy-cells = <0>;
86724ba675SRob Herring	};
87724ba675SRob Herring
88724ba675SRob Herring	/* HS USB host TLL nop-phy on port 2 for w3glte */
89724ba675SRob Herring	hsusb2_phy: usb-phy@2 {
90724ba675SRob Herring		compatible = "usb-nop-xceiv";
91724ba675SRob Herring		#phy-cells = <0>;
92724ba675SRob Herring	};
93724ba675SRob Herring
94724ba675SRob Herring	/* LCD regulator from sw5 source */
95724ba675SRob Herring	lcd_regulator: regulator-lcd {
96724ba675SRob Herring		compatible = "regulator-fixed";
97724ba675SRob Herring		regulator-name = "lcd";
98724ba675SRob Herring		regulator-min-microvolt = <5050000>;
99724ba675SRob Herring		regulator-max-microvolt = <5050000>;
100724ba675SRob Herring		gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;	/* gpio96 */
101724ba675SRob Herring		enable-active-high;
102724ba675SRob Herring		vin-supply = <&sw5>;
103724ba675SRob Herring	};
104724ba675SRob Herring
105724ba675SRob Herring	/* This is probably coming straight from the battery.. */
106724ba675SRob Herring	wl12xx_vmmc: regulator-wl12xx {
107724ba675SRob Herring		compatible = "regulator-fixed";
108724ba675SRob Herring		regulator-name = "vwl1271";
109724ba675SRob Herring		regulator-min-microvolt = <1650000>;
110724ba675SRob Herring		regulator-max-microvolt = <1650000>;
111724ba675SRob Herring		gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;	/* gpio94 */
112724ba675SRob Herring		startup-delay-us = <70000>;
113724ba675SRob Herring		enable-active-high;
114724ba675SRob Herring	};
115724ba675SRob Herring
116724ba675SRob Herring	soundcard {
117724ba675SRob Herring		compatible = "audio-graph-card";
118724ba675SRob Herring		label = "Mapphone Audio";
119724ba675SRob Herring
120724ba675SRob Herring		widgets =
121724ba675SRob Herring			"Speaker", "Earpiece",
122724ba675SRob Herring			"Speaker", "Loudspeaker",
123724ba675SRob Herring			"Headphone", "Headphone Jack",
124724ba675SRob Herring			"Microphone", "Internal Mic";
125724ba675SRob Herring
126724ba675SRob Herring		routing =
127724ba675SRob Herring			"Earpiece", "EP",
128724ba675SRob Herring			"Loudspeaker", "SPKR",
129724ba675SRob Herring			"Headphone Jack", "HSL",
130724ba675SRob Herring			"Headphone Jack", "HSR",
131724ba675SRob Herring			"MICR", "Internal Mic";
132724ba675SRob Herring
133724ba675SRob Herring		dais = <&mcbsp2_port>, <&mcbsp3_port>;
134724ba675SRob Herring	};
135724ba675SRob Herring
136724ba675SRob Herring	pwm8: pwm-8 {
137724ba675SRob Herring		pinctrl-names = "default";
138724ba675SRob Herring		pinctrl-0 = <&vibrator_direction_pin>;
139724ba675SRob Herring
140724ba675SRob Herring		compatible = "ti,omap-dmtimer-pwm";
141724ba675SRob Herring		#pwm-cells = <3>;
142724ba675SRob Herring		ti,timers = <&timer8>;
143724ba675SRob Herring		ti,clock-source = <0x01>;
144724ba675SRob Herring	};
145724ba675SRob Herring
146724ba675SRob Herring	pwm9: pwm-9 {
147724ba675SRob Herring		pinctrl-names = "default";
148724ba675SRob Herring		pinctrl-0 = <&vibrator_enable_pin>;
149724ba675SRob Herring
150724ba675SRob Herring		compatible = "ti,omap-dmtimer-pwm";
151724ba675SRob Herring		#pwm-cells = <3>;
152724ba675SRob Herring		ti,timers = <&timer9>;
153724ba675SRob Herring		ti,clock-source = <0x01>;
154724ba675SRob Herring	};
155724ba675SRob Herring
156724ba675SRob Herring	vibrator {
157724ba675SRob Herring		compatible = "pwm-vibrator";
158724ba675SRob Herring		pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>;
159724ba675SRob Herring		pwm-names = "enable", "direction";
160724ba675SRob Herring		direction-duty-cycle-ns = <10000000>;
161724ba675SRob Herring	};
162724ba675SRob Herring
163724ba675SRob Herring	backlight: backlight {
164724ba675SRob Herring		compatible = "led-backlight";
165724ba675SRob Herring
166724ba675SRob Herring		leds = <&backlight_led>;
167724ba675SRob Herring		brightness-levels = <31 63 95 127 159 191 223 255>;
168724ba675SRob Herring		default-brightness-level = <6>;
169724ba675SRob Herring	};
170724ba675SRob Herring};
171724ba675SRob Herring
172724ba675SRob Herring&cpu_thermal {
173724ba675SRob Herring	polling-delay = <10000>; /* milliseconds */
174724ba675SRob Herring};
175724ba675SRob Herring
176724ba675SRob Herring&cpu_alert0 {
177724ba675SRob Herring        temperature = <80000>; /* millicelsius */
178724ba675SRob Herring};
179724ba675SRob Herring
180724ba675SRob Herring&cpu0 {
181724ba675SRob Herring        /*
182724ba675SRob Herring	 * Note that the 1.2GiHz mode is enabled for all SoC variants for
183724ba675SRob Herring	 * the Motorola Android Linux v3.0.8 based kernel.
184724ba675SRob Herring	 */
185724ba675SRob Herring        operating-points = <
186724ba675SRob Herring	        /* kHz    uV */
187724ba675SRob Herring	        300000  1025000
188724ba675SRob Herring	        600000  1200000
189724ba675SRob Herring	        800000  1313000
190724ba675SRob Herring	        1008000 1375000
191724ba675SRob Herring		1200000 1375000
192724ba675SRob Herring        >;
193724ba675SRob Herring};
194724ba675SRob Herring
195724ba675SRob Herring&dss {
196724ba675SRob Herring	status = "okay";
197724ba675SRob Herring};
198724ba675SRob Herring
199724ba675SRob Herring&dsi1 {
200724ba675SRob Herring	status = "okay";
201724ba675SRob Herring	vdd-supply = <&vcsi>;
202724ba675SRob Herring
203724ba675SRob Herring	port {
204724ba675SRob Herring		dsi1_out_ep: endpoint {
205724ba675SRob Herring			remote-endpoint = <&lcd0_in>;
206724ba675SRob Herring			lanes = <0 1 2 3 4 5>;
207724ba675SRob Herring		};
208724ba675SRob Herring	};
209724ba675SRob Herring
210724ba675SRob Herring	lcd0: panel@0 {
211724ba675SRob Herring		compatible = "motorola,droid4-panel", "panel-dsi-cm";
212724ba675SRob Herring		reg = <0>;
213724ba675SRob Herring		label = "lcd0";
214724ba675SRob Herring		vddi-supply = <&lcd_regulator>;
215724ba675SRob Herring		reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;	/* gpio101 */
216724ba675SRob Herring
217724ba675SRob Herring		backlight = <&backlight>;
218724ba675SRob Herring
219724ba675SRob Herring		width-mm = <50>;
220724ba675SRob Herring		height-mm = <89>;
221724ba675SRob Herring		rotation = <90>;
222724ba675SRob Herring
223724ba675SRob Herring		panel-timing {
224724ba675SRob Herring			clock-frequency = <0>;		/* Calculated by dsi */
225724ba675SRob Herring
226724ba675SRob Herring			hback-porch = <2>;
227724ba675SRob Herring			hactive = <540>;
228724ba675SRob Herring			hfront-porch = <0>;
229724ba675SRob Herring			hsync-len = <2>;
230724ba675SRob Herring
231724ba675SRob Herring			vback-porch = <1>;
232724ba675SRob Herring			vactive = <960>;
233724ba675SRob Herring			vfront-porch = <0>;
234724ba675SRob Herring			vsync-len = <1>;
235724ba675SRob Herring
236724ba675SRob Herring			hsync-active = <0>;
237724ba675SRob Herring			vsync-active = <0>;
238724ba675SRob Herring			de-active = <1>;
239724ba675SRob Herring			pixelclk-active = <1>;
240724ba675SRob Herring		};
241724ba675SRob Herring
242724ba675SRob Herring		port {
243724ba675SRob Herring			lcd0_in: endpoint {
244724ba675SRob Herring				remote-endpoint = <&dsi1_out_ep>;
245724ba675SRob Herring			};
246724ba675SRob Herring		};
247724ba675SRob Herring	};
248724ba675SRob Herring};
249724ba675SRob Herring
250724ba675SRob Herring&hdmi {
251724ba675SRob Herring	status = "okay";
252724ba675SRob Herring	pinctrl-0 = <&dss_hdmi_pins>;
253724ba675SRob Herring	pinctrl-names = "default";
254724ba675SRob Herring	vdda-supply = <&vdac>;
255724ba675SRob Herring
256724ba675SRob Herring	port {
257724ba675SRob Herring		hdmi_out: endpoint {
258724ba675SRob Herring			remote-endpoint = <&hdmi_connector_in>;
259724ba675SRob Herring			lanes = <1 0 3 2 5 4 7 6>;
260724ba675SRob Herring		};
261724ba675SRob Herring	};
262724ba675SRob Herring};
263724ba675SRob Herring
264724ba675SRob Herring/* Battery NVRAM on 1-wire handled by w1_ds250x driver */
265724ba675SRob Herring&hdqw1w {
266724ba675SRob Herring	pinctrl-0 = <&hdq_pins>;
267724ba675SRob Herring	pinctrl-names = "default";
268724ba675SRob Herring	ti,mode = "1w";
269724ba675SRob Herring};
270724ba675SRob Herring
271724ba675SRob Herring&i2c1 {
272724ba675SRob Herring	tmp105@48 {
273724ba675SRob Herring		compatible = "ti,tmp105";
274724ba675SRob Herring		reg = <0x48>;
275724ba675SRob Herring		pinctrl-0 = <&tmp105_irq>;
276724ba675SRob Herring		pinctrl-names = "default";
277724ba675SRob Herring		/* kpd_row0.gpio_178 */
278724ba675SRob Herring		interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING
279724ba675SRob Herring				       &omap4_pmx_core 0x14e>;
280724ba675SRob Herring		interrupt-names = "irq", "wakeup";
281724ba675SRob Herring		wakeup-source;
282724ba675SRob Herring	};
283724ba675SRob Herring};
284724ba675SRob Herring
285724ba675SRob Herring&mmc1 {
286724ba675SRob Herring	vmmc-supply = <&vwlan2>;
287724ba675SRob Herring	bus-width = <4>;
288724ba675SRob Herring	cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* gpio176 */
289724ba675SRob Herring};
290724ba675SRob Herring
291724ba675SRob Herring&mmc2 {
292724ba675SRob Herring	vmmc-supply = <&vsdio>;
293724ba675SRob Herring	bus-width = <8>;
294724ba675SRob Herring	ti,non-removable;
295724ba675SRob Herring};
296724ba675SRob Herring
297724ba675SRob Herring&mmc3 {
298724ba675SRob Herring	pinctrl-names = "default";
299724ba675SRob Herring	pinctrl-0 = <&mmc3_pins>;
300724ba675SRob Herring	vmmc-supply = <&wl12xx_vmmc>;
301724ba675SRob Herring	/* uart2_tx.sdmmc3_dat1 pad as wakeirq */
302724ba675SRob Herring	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
303724ba675SRob Herring			       &omap4_pmx_core 0xde>;
304724ba675SRob Herring	interrupt-names = "irq", "wakeup";
305724ba675SRob Herring	non-removable;
306724ba675SRob Herring	bus-width = <4>;
307724ba675SRob Herring	cap-power-off-card;
308724ba675SRob Herring	keep-power-in-suspend;
309724ba675SRob Herring
310724ba675SRob Herring	#address-cells = <1>;
311724ba675SRob Herring	#size-cells = <0>;
312724ba675SRob Herring	wlcore: wlcore@2 {
313724ba675SRob Herring		compatible = "ti,wl1285";
314724ba675SRob Herring		reg = <2>;
315724ba675SRob Herring		/* gpio_100 with gpmc_wait2 pad as wakeirq */
316724ba675SRob Herring		interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>,
317724ba675SRob Herring				      <&omap4_pmx_core 0x4e>;
318724ba675SRob Herring		interrupt-names = "irq", "wakeup";
319724ba675SRob Herring		ref-clock-frequency = <26000000>;
320724ba675SRob Herring		tcxo-clock-frequency = <26000000>;
321724ba675SRob Herring	};
322724ba675SRob Herring};
323724ba675SRob Herring
324724ba675SRob Herring&i2c2 {
325724ba675SRob Herring	touchscreen@4a {
326724ba675SRob Herring		compatible = "atmel,maxtouch";
327724ba675SRob Herring		reg = <0x4a>;
328724ba675SRob Herring		pinctrl-names = "default";
329724ba675SRob Herring		pinctrl-0 = <&touchscreen_pins>;
330724ba675SRob Herring
331724ba675SRob Herring		reset-gpios = <&gpio6 13 GPIO_ACTIVE_LOW>; /* gpio173 */
332724ba675SRob Herring
333724ba675SRob Herring		/* gpio_183 with sys_nirq2 pad as wakeup */
334724ba675SRob Herring		interrupts-extended = <&gpio6 23 IRQ_TYPE_LEVEL_LOW>,
335724ba675SRob Herring				      <&omap4_pmx_core 0x160>;
336724ba675SRob Herring		interrupt-names = "irq", "wakeup";
337724ba675SRob Herring		wakeup-source;
338724ba675SRob Herring	};
339724ba675SRob Herring
340724ba675SRob Herring	isl29030@44 {
341724ba675SRob Herring		compatible = "isil,isl29030";
342724ba675SRob Herring		reg = <0x44>;
343724ba675SRob Herring
344724ba675SRob Herring		pinctrl-names = "default";
345724ba675SRob Herring		pinctrl-0 = <&als_proximity_pins>;
346724ba675SRob Herring
347724ba675SRob Herring		interrupt-parent = <&gpio6>;
348724ba675SRob Herring		interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */
349724ba675SRob Herring	};
350724ba675SRob Herring};
351724ba675SRob Herring
352724ba675SRob Herring&omap4_pmx_core {
353724ba675SRob Herring
354724ba675SRob Herring	/* hdmi_hpd.gpio_63 */
355724ba675SRob Herring	hdmi_hpd_gpio: hdmi-hpd-pins {
356724ba675SRob Herring		pinctrl-single,pins = <
357724ba675SRob Herring		OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3)
358724ba675SRob Herring		>;
359724ba675SRob Herring	};
360724ba675SRob Herring
361724ba675SRob Herring	hdq_pins: hdq-pins {
362724ba675SRob Herring		pinctrl-single,pins = <
363724ba675SRob Herring		/* 0x4a100120 hdq_sio.hdq_sio aa27 */
364724ba675SRob Herring		OMAP4_IOPAD(0x120, PIN_INPUT | MUX_MODE0)
365724ba675SRob Herring		>;
366724ba675SRob Herring	};
367724ba675SRob Herring
368724ba675SRob Herring	/* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */
369724ba675SRob Herring	dss_hdmi_pins: dss-hdmi-pins {
370724ba675SRob Herring		pinctrl-single,pins = <
371724ba675SRob Herring		OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)
372724ba675SRob Herring		OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0)
373724ba675SRob Herring		OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0)
374724ba675SRob Herring		>;
375724ba675SRob Herring	};
376724ba675SRob Herring
377724ba675SRob Herring	/*
378724ba675SRob Herring	 * Android uses PIN_OFF_INPUT_PULLDOWN | PIN_INPUT_PULLUP | MUX_MODE3
379724ba675SRob Herring	 * for gpio_100, but the internal pull makes wlan flakey on some
380724ba675SRob Herring	 * devices. Off mode value should be tested if we have off mode working
381724ba675SRob Herring	 * later on.
382724ba675SRob Herring	 */
383724ba675SRob Herring	mmc3_pins: mmc3-pins {
384724ba675SRob Herring		pinctrl-single,pins = <
385724ba675SRob Herring		/* 0x4a10008e gpmc_wait2.gpio_100 d23 */
386724ba675SRob Herring		OMAP4_IOPAD(0x08e, PIN_INPUT | MUX_MODE3)
387724ba675SRob Herring
388724ba675SRob Herring		/* 0x4a100102 abe_mcbsp1_dx.sdmmc3_dat2 ab25 */
389724ba675SRob Herring		OMAP4_IOPAD(0x102, PIN_INPUT_PULLUP | MUX_MODE1)
390724ba675SRob Herring
391724ba675SRob Herring		/* 0x4a100104 abe_mcbsp1_fsx.sdmmc3_dat3 ac27 */
392724ba675SRob Herring		OMAP4_IOPAD(0x104, PIN_INPUT_PULLUP | MUX_MODE1)
393724ba675SRob Herring
394724ba675SRob Herring		/* 0x4a100118 uart2_cts.sdmmc3_clk ab26 */
395724ba675SRob Herring		OMAP4_IOPAD(0x118, PIN_INPUT | MUX_MODE1)
396724ba675SRob Herring
397724ba675SRob Herring		/* 0x4a10011a uart2_rts.sdmmc3_cmd ab27 */
398724ba675SRob Herring		OMAP4_IOPAD(0x11a, PIN_INPUT_PULLUP | MUX_MODE1)
399724ba675SRob Herring
400724ba675SRob Herring		/* 0x4a10011c uart2_rx.sdmmc3_dat0 aa25 */
401724ba675SRob Herring		OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE1)
402724ba675SRob Herring
403724ba675SRob Herring		/* 0x4a10011e uart2_tx.sdmmc3_dat1 aa26 */
404724ba675SRob Herring		OMAP4_IOPAD(0x11e, PIN_INPUT_PULLUP | MUX_MODE1)
405724ba675SRob Herring		>;
406724ba675SRob Herring	};
407724ba675SRob Herring
408724ba675SRob Herring	/* gpmc_ncs0.gpio_50 */
409724ba675SRob Herring	poweroff_gpio: poweroff-pins {
410724ba675SRob Herring		pinctrl-single,pins = <
411724ba675SRob Herring		OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3)
412724ba675SRob Herring		>;
413724ba675SRob Herring	};
414724ba675SRob Herring
415724ba675SRob Herring	/* kpd_row0.gpio_178 */
416724ba675SRob Herring	tmp105_irq: tmp105-irq-pins {
417724ba675SRob Herring		pinctrl-single,pins = <
418724ba675SRob Herring		OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
419724ba675SRob Herring		>;
420724ba675SRob Herring	};
421724ba675SRob Herring
422724ba675SRob Herring	usb_gpio_mux_sel1: usb-gpio-mux-sel1-pins {
423724ba675SRob Herring		/* gpio_60 */
424724ba675SRob Herring		pinctrl-single,pins = <
425724ba675SRob Herring		OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)
426724ba675SRob Herring		>;
427724ba675SRob Herring	};
428724ba675SRob Herring
429724ba675SRob Herring	touchscreen_pins: touchscreen-pins {
430724ba675SRob Herring		pinctrl-single,pins = <
431724ba675SRob Herring		OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
432724ba675SRob Herring		OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
433724ba675SRob Herring		>;
434724ba675SRob Herring	};
435724ba675SRob Herring
436724ba675SRob Herring	als_proximity_pins: als-proximity-pins {
437724ba675SRob Herring		pinctrl-single,pins = <
438724ba675SRob Herring		OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
439724ba675SRob Herring		>;
440724ba675SRob Herring	};
441724ba675SRob Herring
442724ba675SRob Herring	usb_mdm6600_pins: usb-mdm6600-pins {
443724ba675SRob Herring		pinctrl-single,pins = <
444724ba675SRob Herring		/* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */
445724ba675SRob Herring		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
446724ba675SRob Herring
447724ba675SRob Herring		/* power 0x4a10007c gpmc_nwp.gpio_54 c25 */
448724ba675SRob Herring		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
449724ba675SRob Herring
450724ba675SRob Herring		/* reset 0x4a100072 gpmc_a25.gpio_49 d20 */
451724ba675SRob Herring		OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3)
452724ba675SRob Herring
453724ba675SRob Herring		/* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */
454724ba675SRob Herring		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
455724ba675SRob Herring
456724ba675SRob Herring		/* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */
457724ba675SRob Herring		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
458724ba675SRob Herring
459724ba675SRob Herring		/* status0 0x4a10007e gpmc_clk.gpio_55 b22 */
460724ba675SRob Herring		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
461724ba675SRob Herring
462724ba675SRob Herring		/* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */
463724ba675SRob Herring		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
464724ba675SRob Herring
465724ba675SRob Herring		/* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */
466724ba675SRob Herring		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
467724ba675SRob Herring
468724ba675SRob Herring		/* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */
469724ba675SRob Herring		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
470724ba675SRob Herring
471724ba675SRob Herring		/* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */
472724ba675SRob Herring		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
473724ba675SRob Herring
474724ba675SRob Herring		/* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */
475724ba675SRob Herring		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
476724ba675SRob Herring		>;
477724ba675SRob Herring	};
478724ba675SRob Herring
479724ba675SRob Herring	usb_ulpi_pins: usb-ulpi-pins {
480724ba675SRob Herring		pinctrl-single,pins = <
481724ba675SRob Herring		OMAP4_IOPAD(0x196, MUX_MODE7)
482724ba675SRob Herring		OMAP4_IOPAD(0x198, MUX_MODE7)
483724ba675SRob Herring		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0)
484724ba675SRob Herring		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0)
485724ba675SRob Herring		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0)
486724ba675SRob Herring		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0)
487724ba675SRob Herring		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0)
488724ba675SRob Herring		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0)
489724ba675SRob Herring		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0)
490724ba675SRob Herring		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0)
491724ba675SRob Herring		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0)
492724ba675SRob Herring		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0)
493724ba675SRob Herring		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0)
494724ba675SRob Herring		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0)
495724ba675SRob Herring		>;
496724ba675SRob Herring	};
497724ba675SRob Herring
498724ba675SRob Herring	/* usb0_otg_dp and usb0_otg_dm */
499724ba675SRob Herring	usb_utmi_pins: usb-utmi-pins {
500724ba675SRob Herring		pinctrl-single,pins = <
501724ba675SRob Herring		OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0)
502724ba675SRob Herring		OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0)
503724ba675SRob Herring		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
504724ba675SRob Herring		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
505724ba675SRob Herring		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
506724ba675SRob Herring		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
507724ba675SRob Herring		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7)
508724ba675SRob Herring		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7)
509724ba675SRob Herring		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
510724ba675SRob Herring		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
511724ba675SRob Herring		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
512724ba675SRob Herring		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
513724ba675SRob Herring		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
514724ba675SRob Herring		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
515724ba675SRob Herring		>;
516724ba675SRob Herring	};
517724ba675SRob Herring
518724ba675SRob Herring	/*
519724ba675SRob Herring	 * Note that the v3.0.8 stock userspace dynamically remuxes uart1
520724ba675SRob Herring	 * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7
521724ba675SRob Herring	 * when not used. If needed, we can add rts pin remux later based
522724ba675SRob Herring	 * on power measurements.
523724ba675SRob Herring	 */
524724ba675SRob Herring	uart1_pins: uart1-pins {
525724ba675SRob Herring		pinctrl-single,pins = <
526724ba675SRob Herring		/* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */
527724ba675SRob Herring		OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1)
528724ba675SRob Herring
529724ba675SRob Herring		/* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */
530724ba675SRob Herring		OMAP4_IOPAD(0x13e, MUX_MODE1)
531724ba675SRob Herring
532724ba675SRob Herring		/* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */
533724ba675SRob Herring		OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1)
534724ba675SRob Herring
535724ba675SRob Herring		/* 0x4a1001ca dpm_emu14.uart1_rx aa3 */
536724ba675SRob Herring		OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2)
537724ba675SRob Herring		>;
538724ba675SRob Herring	};
539724ba675SRob Herring
540724ba675SRob Herring	/* uart3_tx_irtx and uart3_rx_irrx */
541724ba675SRob Herring	uart3_pins: uart3-pins {
542724ba675SRob Herring		pinctrl-single,pins = <
543724ba675SRob Herring		OMAP4_IOPAD(0x196, MUX_MODE7)
544724ba675SRob Herring		OMAP4_IOPAD(0x198, MUX_MODE7)
545724ba675SRob Herring		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7)
546724ba675SRob Herring		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7)
547724ba675SRob Herring		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7)
548724ba675SRob Herring		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7)
549724ba675SRob Herring		OMAP4_IOPAD(0x1ba, MUX_MODE2)
550724ba675SRob Herring		OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2)
551724ba675SRob Herring		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7)
552724ba675SRob Herring		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7)
553724ba675SRob Herring		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7)
554724ba675SRob Herring		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7)
555724ba675SRob Herring		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7)
556724ba675SRob Herring		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7)
557724ba675SRob Herring		>;
558724ba675SRob Herring	};
559724ba675SRob Herring
560724ba675SRob Herring	uart4_pins: uart4-pins {
561724ba675SRob Herring		pinctrl-single,pins = <
562724ba675SRob Herring		OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)		/* uart4_rx */
563724ba675SRob Herring		OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)		/* uart4_tx */
564724ba675SRob Herring		OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)	/* uart4_cts */
565724ba675SRob Herring		OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)	/* uart4_rts */
566724ba675SRob Herring		>;
567724ba675SRob Herring	};
568724ba675SRob Herring
569724ba675SRob Herring	mcbsp2_pins: mcbsp2-pins {
570724ba675SRob Herring		pinctrl-single,pins = <
571724ba675SRob Herring		OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_clkx */
572724ba675SRob Herring		OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_dr */
573724ba675SRob Herring		OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)	/* abe_mcbsp2_dx */
574724ba675SRob Herring		OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_fsx */
575724ba675SRob Herring		>;
576724ba675SRob Herring	};
577724ba675SRob Herring
578724ba675SRob Herring	mcbsp3_pins: mcbsp3-pins {
579724ba675SRob Herring		pinctrl-single,pins = <
580724ba675SRob Herring		OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_dr */
581724ba675SRob Herring		OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)	/* abe_mcbsp3_dx */
582724ba675SRob Herring		OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_clkx */
583724ba675SRob Herring		OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_fsx */
584724ba675SRob Herring		>;
585724ba675SRob Herring	};
586724ba675SRob Herring
587724ba675SRob Herring	vibrator_direction_pin: vibrator-direction-pins {
588724ba675SRob Herring		pinctrl-single,pins = <
589724ba675SRob Herring		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)	/* dmtimer8_pwm_evt (gpio_27) */
590724ba675SRob Herring		>;
591724ba675SRob Herring	};
592724ba675SRob Herring
593724ba675SRob Herring	vibrator_enable_pin: vibrator-enable-pins {
594724ba675SRob Herring		pinctrl-single,pins = <
595724ba675SRob Herring		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)	/* dmtimer9_pwm_evt (gpio_28) */
596724ba675SRob Herring		>;
597724ba675SRob Herring	};
598724ba675SRob Herring};
599724ba675SRob Herring
600724ba675SRob Herring&omap4_pmx_wkup {
601724ba675SRob Herring	usb_gpio_mux_sel2: usb-gpio-mux-sel2-pins {
602724ba675SRob Herring		/* gpio_wk0 */
603724ba675SRob Herring		pinctrl-single,pins = <
604724ba675SRob Herring		OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
605724ba675SRob Herring		>;
606724ba675SRob Herring	};
607724ba675SRob Herring};
608724ba675SRob Herring
609724ba675SRob Herring/* RNG is used by secure mode and not accessible */
610724ba675SRob Herring&rng_target {
611724ba675SRob Herring	status = "disabled";
612724ba675SRob Herring};
613724ba675SRob Herring
614724ba675SRob Herring/* Configure pwm clock source for timers 8 & 9 */
615724ba675SRob Herring&timer8 {
616724ba675SRob Herring	assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
617ac08bda1STony Lindgren	assigned-clock-parents = <&sys_32k_ck>;
618724ba675SRob Herring};
619724ba675SRob Herring
620724ba675SRob Herring&timer9 {
621724ba675SRob Herring	assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
622ac08bda1STony Lindgren	assigned-clock-parents = <&sys_32k_ck>;
623724ba675SRob Herring};
624724ba675SRob Herring
625724ba675SRob Herring/*
626724ba675SRob Herring * The uart1 port is wired to mdm6600 with rts and cts. The modem uses gpio_149
627724ba675SRob Herring * for wake-up events for both the USB PHY and the UART. We can use gpio_149
628724ba675SRob Herring * pad as the shared wakeirq for the UART rather than the RX or CTS pad as we
629724ba675SRob Herring * have gpio_149 trigger before the UART transfer starts.
630724ba675SRob Herring */
631724ba675SRob Herring&uart1 {
632724ba675SRob Herring	pinctrl-names = "default";
633724ba675SRob Herring	pinctrl-0 = <&uart1_pins>;
634724ba675SRob Herring	interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH
635724ba675SRob Herring			       &omap4_pmx_core 0x110>;
636724ba675SRob Herring	uart-has-rtscts;
637724ba675SRob Herring	current-speed = <115200>;
638724ba675SRob Herring};
639724ba675SRob Herring
640724ba675SRob Herring&uart3 {
641724ba675SRob Herring	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
642724ba675SRob Herring			       &omap4_pmx_core 0x17c>;
643*5ad37b5eSTony Lindgren	overrun-throttle-ms = <500>;
644724ba675SRob Herring};
645724ba675SRob Herring
646724ba675SRob Herring&uart4 {
647724ba675SRob Herring	pinctrl-names = "default";
648724ba675SRob Herring	pinctrl-0 = <&uart4_pins>;
649724ba675SRob Herring
650724ba675SRob Herring	bluetooth {
651724ba675SRob Herring		compatible = "ti,wl1285-st";
652724ba675SRob Herring		enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */
653724ba675SRob Herring		max-speed = <3686400>;
654724ba675SRob Herring	};
655724ba675SRob Herring};
656724ba675SRob Herring
657724ba675SRob Herring&usbhsohci {
658724ba675SRob Herring	phys = <&fsusb1_phy>;
659724ba675SRob Herring	phy-names = "usb";
660724ba675SRob Herring};
661724ba675SRob Herring
662724ba675SRob Herring&usbhsehci {
663724ba675SRob Herring	phys = <&hsusb2_phy>;
664724ba675SRob Herring};
665724ba675SRob Herring
666724ba675SRob Herring&usbhshost {
667724ba675SRob Herring	port1-mode = "ohci-phy-4pin-dpdm";
668724ba675SRob Herring	port2-mode = "ehci-tll";
669724ba675SRob Herring};
670724ba675SRob Herring
671724ba675SRob Herring/* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */
672724ba675SRob Herring&usb_otg_hs {
673724ba675SRob Herring	interface-type = <1>;
674724ba675SRob Herring	mode = <3>;
675724ba675SRob Herring
676724ba675SRob Herring	/*
677724ba675SRob Herring	 * Max 300 mA steps based on similar PMIC MC13783UG.pdf "Table 10-4.
678724ba675SRob Herring	 * VBUS Regulator Main Characteristics". Binding uses 2 mA units.
679724ba675SRob Herring	 */
680724ba675SRob Herring	power = <150>;
681724ba675SRob Herring};
682724ba675SRob Herring
683724ba675SRob Herring&i2c4 {
684724ba675SRob Herring	ak8975: magnetometer@c {
685724ba675SRob Herring		compatible = "asahi-kasei,ak8975";
686724ba675SRob Herring		reg = <0x0c>;
687724ba675SRob Herring
688724ba675SRob Herring		vdd-supply = <&vhvio>;
689724ba675SRob Herring
690724ba675SRob Herring		interrupt-parent = <&gpio6>;
691724ba675SRob Herring		interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */
692724ba675SRob Herring
693724ba675SRob Herring		rotation-matrix = "-1", "0", "0",
694724ba675SRob Herring				  "0", "1", "0",
695724ba675SRob Herring				  "0", "0", "-1";
696724ba675SRob Herring
697724ba675SRob Herring	};
698724ba675SRob Herring};
699724ba675SRob Herring
700724ba675SRob Herring&mcbsp2 {
701724ba675SRob Herring	#sound-dai-cells = <0>;
702724ba675SRob Herring	pinctrl-names = "default";
703724ba675SRob Herring	pinctrl-0 = <&mcbsp2_pins>;
704724ba675SRob Herring	status = "okay";
705724ba675SRob Herring
706724ba675SRob Herring	mcbsp2_port: port {
707724ba675SRob Herring		cpu_dai2: endpoint {
708724ba675SRob Herring			dai-format = "i2s";
709724ba675SRob Herring			remote-endpoint = <&cpcap_audio_codec0>;
710724ba675SRob Herring			frame-master = <&cpcap_audio_codec0>;
711724ba675SRob Herring			bitclock-master = <&cpcap_audio_codec0>;
712724ba675SRob Herring		};
713724ba675SRob Herring	};
714724ba675SRob Herring};
715724ba675SRob Herring
716724ba675SRob Herring&mcbsp3 {
717724ba675SRob Herring	#sound-dai-cells = <0>;
718724ba675SRob Herring	pinctrl-names = "default";
719724ba675SRob Herring	pinctrl-0 = <&mcbsp3_pins>;
720724ba675SRob Herring	status = "okay";
721724ba675SRob Herring
722724ba675SRob Herring	mcbsp3_port: port {
723724ba675SRob Herring		cpu_dai3: endpoint {
724724ba675SRob Herring			dai-format = "dsp_a";
725724ba675SRob Herring			frame-master = <&cpcap_audio_codec1>;
726724ba675SRob Herring			bitclock-master = <&cpcap_audio_codec1>;
727724ba675SRob Herring			remote-endpoint = <&cpcap_audio_codec1>;
728724ba675SRob Herring		};
729724ba675SRob Herring	};
730724ba675SRob Herring};
731724ba675SRob Herring
732724ba675SRob Herring&cpcap_audio_codec0 {
733724ba675SRob Herring	remote-endpoint = <&cpu_dai2>;
734724ba675SRob Herring};
735724ba675SRob Herring
736724ba675SRob Herring&cpcap_audio_codec1 {
737724ba675SRob Herring	remote-endpoint = <&cpu_dai3>;
738724ba675SRob Herring};
739