| /* | 
 |  * This program is free software; you can redistribute it and/or modify | 
 |  * it under the terms of the GNU General Public License version 2 as | 
 |  * published by the Free Software Foundation. | 
 |  */ | 
 | /dts-v1/; | 
 |  | 
 | #include <dt-bindings/input/input.h> | 
 | #include "omap443x.dtsi" | 
 | #include "motorola-cpcap-mapphone.dtsi" | 
 |  | 
 | / { | 
 | 	model = "Motorola Droid 4 XT894"; | 
 | 	compatible = "motorola,droid4", "ti,omap4430", "ti,omap4"; | 
 |  | 
 | 	chosen { | 
 | 		stdout-path = &uart3; | 
 | 	}; | 
 |  | 
 | 	aliases { | 
 | 		display0 = &lcd0; | 
 | 		display1 = &hdmi0; | 
 | 	}; | 
 |  | 
 | 	/* | 
 | 	 * We seem to have only 1021 MB accessible, 1021 - 1022 is locked, | 
 | 	 * then 1023 - 1024 seems to contain mbm. | 
 | 	 */ | 
 | 	memory { | 
 | 		device_type = "memory"; | 
 | 		reg = <0x80000000 0x3fd00000>;	/* 1021 MB */ | 
 | 	}; | 
 |  | 
 | 	/* Poweroff GPIO probably connected to CPCAP */ | 
 | 	gpio-poweroff { | 
 | 		compatible = "gpio-poweroff"; | 
 | 		pinctrl-0 = <&poweroff_gpio>; | 
 | 		pinctrl-names = "default"; | 
 | 		gpios = <&gpio2 18 GPIO_ACTIVE_LOW>;	/* gpio50 */ | 
 | 	}; | 
 |  | 
 | 	hdmi0: connector { | 
 | 		compatible = "hdmi-connector"; | 
 | 		pinctrl-0 = <&hdmi_hpd_gpio>; | 
 | 		pinctrl-names = "default"; | 
 | 		label = "hdmi"; | 
 | 		type = "d"; | 
 |  | 
 | 		hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;	/* gpio63 */ | 
 |  | 
 | 		port { | 
 | 			hdmi_connector_in: endpoint { | 
 | 				remote-endpoint = <&hdmi_out>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	/* | 
 | 	 * HDMI 5V regulator probably sourced from battery. Let's keep | 
 | 	 * keep this as always enabled for HDMI to work until we've | 
 | 	 * figured what the encoder chip is. | 
 | 	 */ | 
 | 	hdmi_regulator: regulator-hdmi { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "hdmi"; | 
 | 		regulator-min-microvolt = <5000000>; | 
 | 		regulator-max-microvolt = <5000000>; | 
 | 		gpio = <&gpio2 27 GPIO_ACTIVE_HIGH>;	/* gpio59 */ | 
 | 		enable-active-high; | 
 | 		regulator-always-on; | 
 | 	}; | 
 |  | 
 | 	/* FS USB Host PHY on port 1 for mdm6600 */ | 
 | 	fsusb1_phy: usb-phy@1 { | 
 | 		compatible = "motorola,mapphone-mdm6600"; | 
 | 		pinctrl-0 = <&usb_mdm6600_pins>; | 
 | 		pinctrl-names = "default"; | 
 | 		enable-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;     /* gpio_95 */ | 
 | 		power-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;	/* gpio_54 */ | 
 | 		reset-gpios = <&gpio2 17 GPIO_ACTIVE_HIGH>;	/* gpio_49 */ | 
 | 		/* mode: gpio_148 gpio_149 */ | 
 | 		motorola,mode-gpios = <&gpio5 20 GPIO_ACTIVE_HIGH>, | 
 | 				      <&gpio5 21 GPIO_ACTIVE_HIGH>; | 
 | 		/* cmd: gpio_103 gpio_104 gpio_142 */ | 
 | 		motorola,cmd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>, | 
 | 				     <&gpio4 8 GPIO_ACTIVE_HIGH>, | 
 | 				     <&gpio5 14 GPIO_ACTIVE_HIGH>; | 
 | 		/* status: gpio_52 gpio_53 gpio_55 */ | 
 | 		motorola,status-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>, | 
 | 					<&gpio2 21 GPIO_ACTIVE_HIGH>, | 
 | 					<&gpio2 23 GPIO_ACTIVE_HIGH>; | 
 | 		#phy-cells = <0>; | 
 | 	}; | 
 |  | 
 | 	/* HS USB host TLL nop-phy on port 2 for w3glte */ | 
 | 	hsusb2_phy: usb-phy@2 { | 
 | 		compatible = "usb-nop-xceiv"; | 
 | 		#phy-cells = <0>; | 
 | 	}; | 
 |  | 
 | 	/* LCD regulator from sw5 source */ | 
 | 	lcd_regulator: regulator-lcd { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "lcd"; | 
 | 		regulator-min-microvolt = <5050000>; | 
 | 		regulator-max-microvolt = <5050000>; | 
 | 		gpio = <&gpio4 0 GPIO_ACTIVE_HIGH>;	/* gpio96 */ | 
 | 		enable-active-high; | 
 | 		vin-supply = <&sw5>; | 
 | 	}; | 
 |  | 
 | 	/* This is probably coming straight from the battery.. */ | 
 | 	wl12xx_vmmc: regulator-wl12xx { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "vwl1271"; | 
 | 		regulator-min-microvolt = <1650000>; | 
 | 		regulator-max-microvolt = <1650000>; | 
 | 		gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;	/* gpio94 */ | 
 | 		startup-delay-us = <70000>; | 
 | 		enable-active-high; | 
 | 	}; | 
 |  | 
 | 	gpio_keys { | 
 | 		compatible = "gpio-keys"; | 
 |  | 
 | 		volume_down { | 
 | 			label = "Volume Down"; | 
 | 			gpios = <&gpio5 26 GPIO_ACTIVE_LOW>; /* gpio154 */ | 
 | 			linux,code = <KEY_VOLUMEDOWN>; | 
 | 			linux,can-disable; | 
 | 		}; | 
 |  | 
 | 		slider { | 
 | 			label = "Keypad Slide"; | 
 | 			gpios = <&gpio4 26 GPIO_ACTIVE_HIGH>; /* gpio122 */ | 
 | 			linux,input-type = <EV_SW>; | 
 | 			linux,code = <SW_KEYPAD_SLIDE>; | 
 | 			linux,can-disable; | 
 |  | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	soundcard { | 
 | 		compatible = "audio-graph-card"; | 
 | 		label = "Droid 4 Audio"; | 
 |  | 
 | 		simple-graph-card,widgets = | 
 | 			"Speaker", "Earpiece", | 
 | 			"Speaker", "Loudspeaker", | 
 | 			"Headphone", "Headphone Jack", | 
 | 			"Microphone", "Internal Mic"; | 
 |  | 
 | 		simple-graph-card,routing = | 
 | 			"Earpiece", "EP", | 
 | 			"Loudspeaker", "SPKR", | 
 | 			"Headphone Jack", "HSL", | 
 | 			"Headphone Jack", "HSR", | 
 | 			"MICR", "Internal Mic"; | 
 |  | 
 | 		dais = <&mcbsp2_port>, <&mcbsp3_port>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &dss { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &gpio6 { | 
 | 	pwm8: dmtimer-pwm-8 { | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&vibrator_direction_pin>; | 
 |  | 
 | 		compatible = "ti,omap-dmtimer-pwm"; | 
 | 		#pwm-cells = <3>; | 
 | 		ti,timers = <&timer8>; | 
 | 		ti,clock-source = <0x01>; | 
 | 	}; | 
 |  | 
 | 	pwm9: dmtimer-pwm-9 { | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&vibrator_enable_pin>; | 
 |  | 
 | 		compatible = "ti,omap-dmtimer-pwm"; | 
 | 		#pwm-cells = <3>; | 
 | 		ti,timers = <&timer9>; | 
 | 		ti,clock-source = <0x01>; | 
 | 	}; | 
 |  | 
 | 	vibrator { | 
 | 		compatible = "pwm-vibrator"; | 
 | 		pwms = <&pwm9 0 10000000 0>, <&pwm8 0 10000000 0>; | 
 | 		pwm-names = "enable", "direction"; | 
 | 		direction-duty-cycle-ns = <10000000>; | 
 | 	}; | 
 |  | 
 | }; | 
 |  | 
 | &dsi1 { | 
 | 	status = "okay"; | 
 | 	vdd-supply = <&vcsi>; | 
 |  | 
 | 	port { | 
 | 		dsi1_out_ep: endpoint { | 
 | 			remote-endpoint = <&lcd0_in>; | 
 | 			lanes = <0 1 2 3 4 5>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	lcd0: display { | 
 | 		compatible = "panel-dsi-cm"; | 
 | 		label = "lcd0"; | 
 | 		vddi-supply = <&lcd_regulator>; | 
 | 		reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;	/* gpio101 */ | 
 |  | 
 | 		width-mm = <50>; | 
 | 		height-mm = <89>; | 
 | 		backlight = <&lcd_backlight>; | 
 |  | 
 | 		panel-timing { | 
 | 			clock-frequency = <0>;		/* Calculated by dsi */ | 
 |  | 
 | 			hback-porch = <2>; | 
 | 			hactive = <540>; | 
 | 			hfront-porch = <0>; | 
 | 			hsync-len = <2>; | 
 |  | 
 | 			vback-porch = <1>; | 
 | 			vactive = <960>; | 
 | 			vfront-porch = <0>; | 
 | 			vsync-len = <1>; | 
 |  | 
 | 			hsync-active = <0>; | 
 | 			vsync-active = <0>; | 
 | 			de-active = <1>; | 
 | 			pixelclk-active = <1>; | 
 | 		}; | 
 |  | 
 | 		port { | 
 | 			lcd0_in: endpoint { | 
 | 				remote-endpoint = <&dsi1_out_ep>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &hdmi { | 
 | 	status = "okay"; | 
 | 	pinctrl-0 = <&dss_hdmi_pins>; | 
 | 	pinctrl-names = "default"; | 
 | 	vdda-supply = <&vdac>; | 
 |  | 
 | 	port { | 
 | 		hdmi_out: endpoint { | 
 | 			remote-endpoint = <&hdmi_connector_in>; | 
 | 			lanes = <1 0 3 2 5 4 7 6>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &i2c1 { | 
 | 	tmp105@48 { | 
 | 		compatible = "ti,tmp105"; | 
 | 		reg = <0x48>; | 
 | 		pinctrl-0 = <&tmp105_irq>; | 
 | 		pinctrl-names = "default"; | 
 | 		/* kpd_row0.gpio_178 */ | 
 | 		interrupts-extended = <&gpio6 18 IRQ_TYPE_EDGE_FALLING | 
 | 				       &omap4_pmx_core 0x14e>; | 
 | 		interrupt-names = "irq", "wakeup"; | 
 | 		wakeup-source; | 
 | 	}; | 
 | }; | 
 |  | 
 | &keypad { | 
 | 	keypad,num-rows = <8>; | 
 | 	keypad,num-columns = <8>; | 
 | 	linux,keymap = < | 
 |  | 
 | 	/* Row 1 */ | 
 | 	MATRIX_KEY(0, 2, KEY_1) | 
 | 	MATRIX_KEY(0, 6, KEY_2) | 
 | 	MATRIX_KEY(2, 3, KEY_3) | 
 | 	MATRIX_KEY(0, 7, KEY_4) | 
 | 	MATRIX_KEY(0, 4, KEY_5) | 
 | 	MATRIX_KEY(5, 5, KEY_6) | 
 | 	MATRIX_KEY(0, 1, KEY_7) | 
 | 	MATRIX_KEY(0, 5, KEY_8) | 
 | 	MATRIX_KEY(0, 0, KEY_9) | 
 | 	MATRIX_KEY(1, 6, KEY_0) | 
 |  | 
 | 	/* Row 2 */ | 
 | 	MATRIX_KEY(3, 4, KEY_APOSTROPHE) | 
 | 	MATRIX_KEY(7, 6, KEY_Q) | 
 | 	MATRIX_KEY(7, 7, KEY_W) | 
 | 	MATRIX_KEY(7, 2, KEY_E) | 
 | 	MATRIX_KEY(1, 0, KEY_R) | 
 | 	MATRIX_KEY(4, 4, KEY_T) | 
 | 	MATRIX_KEY(1, 2, KEY_Y) | 
 | 	MATRIX_KEY(6, 7, KEY_U) | 
 | 	MATRIX_KEY(2, 2, KEY_I) | 
 | 	MATRIX_KEY(5, 6, KEY_O) | 
 | 	MATRIX_KEY(3, 7, KEY_P) | 
 | 	MATRIX_KEY(6, 5, KEY_BACKSPACE) | 
 |  | 
 | 	/* Row 3 */ | 
 | 	MATRIX_KEY(5, 4, KEY_TAB) | 
 | 	MATRIX_KEY(5, 7, KEY_A) | 
 | 	MATRIX_KEY(2, 7, KEY_S) | 
 | 	MATRIX_KEY(7, 0, KEY_D) | 
 | 	MATRIX_KEY(2, 6, KEY_F) | 
 | 	MATRIX_KEY(6, 2, KEY_G) | 
 | 	MATRIX_KEY(6, 6, KEY_H) | 
 | 	MATRIX_KEY(1, 4, KEY_J) | 
 | 	MATRIX_KEY(3, 1, KEY_K) | 
 | 	MATRIX_KEY(2, 1, KEY_L) | 
 | 	MATRIX_KEY(4, 6, KEY_ENTER) | 
 |  | 
 | 	/* Row 4 */ | 
 | 	MATRIX_KEY(3, 6, KEY_LEFTSHIFT)		/* KEY_CAPSLOCK */ | 
 | 	MATRIX_KEY(6, 1, KEY_Z) | 
 | 	MATRIX_KEY(7, 4, KEY_X) | 
 | 	MATRIX_KEY(5, 1, KEY_C) | 
 | 	MATRIX_KEY(1, 7, KEY_V) | 
 | 	MATRIX_KEY(2, 4, KEY_B) | 
 | 	MATRIX_KEY(4, 1, KEY_N) | 
 | 	MATRIX_KEY(1, 1, KEY_M) | 
 | 	MATRIX_KEY(3, 5, KEY_COMMA) | 
 | 	MATRIX_KEY(5, 2, KEY_DOT) | 
 | 	MATRIX_KEY(6, 3, KEY_UP) | 
 | 	MATRIX_KEY(7, 3, KEY_OK) | 
 |  | 
 | 	/* Row 5 */ | 
 | 	MATRIX_KEY(2, 5, KEY_LEFTCTRL)		/* KEY_LEFTSHIFT */ | 
 | 	MATRIX_KEY(4, 5, KEY_LEFTALT)		/* SYM */ | 
 | 	MATRIX_KEY(6, 0, KEY_MINUS) | 
 | 	MATRIX_KEY(4, 7, KEY_EQUAL) | 
 | 	MATRIX_KEY(1, 5, KEY_SPACE) | 
 | 	MATRIX_KEY(3, 2, KEY_SLASH) | 
 | 	MATRIX_KEY(4, 3, KEY_LEFT) | 
 | 	MATRIX_KEY(5, 3, KEY_DOWN) | 
 | 	MATRIX_KEY(3, 3, KEY_RIGHT) | 
 |  | 
 | 	/* Side buttons, KEY_VOLUMEDOWN and KEY_PWER are on CPCAP? */ | 
 | 	MATRIX_KEY(5, 0, KEY_VOLUMEUP) | 
 | 	>; | 
 | }; | 
 |  | 
 | &mmc1 { | 
 | 	vmmc-supply = <&vwlan2>; | 
 | 	bus-width = <4>; | 
 | 	cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* gpio176 */ | 
 | }; | 
 |  | 
 | &mmc2 { | 
 | 	vmmc-supply = <&vsdio>; | 
 | 	bus-width = <8>; | 
 | 	non-removable; | 
 | }; | 
 |  | 
 | &mmc3 { | 
 | 	vmmc-supply = <&wl12xx_vmmc>; | 
 | 	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH | 
 | 			       &omap4_pmx_core 0xde>; | 
 |  | 
 | 	non-removable; | 
 | 	bus-width = <4>; | 
 | 	cap-power-off-card; | 
 |  | 
 | 	#address-cells = <1>; | 
 | 	#size-cells = <0>; | 
 | 	wlcore: wlcore@2 { | 
 | 		compatible = "ti,wl1285", "ti,wl1283"; | 
 | 		reg = <2>; | 
 | 		interrupt-parent = <&gpio4>; | 
 | 		interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; /* gpio100 */ | 
 | 		ref-clock-frequency = <26000000>; | 
 | 		tcxo-clock-frequency = <26000000>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &i2c1 { | 
 | 	lm3532@38 { | 
 | 		compatible = "ti,lm3532"; | 
 | 		reg = <0x38>; | 
 |  | 
 | 		enable-gpios = <&gpio6 12 GPIO_ACTIVE_HIGH>; | 
 |  | 
 | 		lcd_backlight: backlight { | 
 | 			compatible = "ti,lm3532-backlight"; | 
 |  | 
 | 			lcd { | 
 | 				led-sources = <0 1 2>; | 
 | 				ramp-up-msec = <1>; | 
 | 				ramp-down-msec = <0>; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &i2c2 { | 
 | 	touchscreen@4a { | 
 | 		compatible = "atmel,maxtouch"; | 
 | 		reg = <0x4a>; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&touchscreen_pins>; | 
 |  | 
 | 		reset-gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>; /* gpio173 */ | 
 |  | 
 | 		/* gpio_183 with sys_nirq2 pad as wakeup */ | 
 | 		interrupts-extended = <&gpio6 23 IRQ_TYPE_EDGE_FALLING>, | 
 | 				      <&omap4_pmx_core 0x160>; | 
 | 		interrupt-names = "irq", "wakeup"; | 
 | 		wakeup-source; | 
 | 	}; | 
 |  | 
 | 	isl29030@44 { | 
 | 		compatible = "isil,isl29030"; | 
 | 		reg = <0x44>; | 
 |  | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&als_proximity_pins>; | 
 |  | 
 | 		interrupt-parent = <&gpio6>; | 
 | 		interrupts = <17 IRQ_TYPE_LEVEL_LOW>; /* gpio177 */ | 
 | 	}; | 
 | }; | 
 |  | 
 | &omap4_pmx_core { | 
 |  | 
 | 	/* hdmi_hpd.gpio_63 */ | 
 | 	hdmi_hpd_gpio: pinmux_hdmi_hpd_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* hdmi_cec.hdmi_cec, hdmi_scl.hdmi_scl, hdmi_sda.hdmi_sda */ | 
 | 	dss_hdmi_pins: pinmux_dss_hdmi_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x09c, PIN_INPUT | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x09e, PIN_INPUT | MUX_MODE0) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* gpmc_ncs0.gpio_50 */ | 
 | 	poweroff_gpio: pinmux_poweroff_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x074, PIN_OUTPUT_PULLUP | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* kpd_row0.gpio_178 */ | 
 | 	tmp105_irq: pinmux_tmp105_irq { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	usb_gpio_mux_sel1: pinmux_usb_gpio_mux_sel1_pins { | 
 | 		/* gpio_60 */ | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	touchscreen_pins: pinmux_touchscreen_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3) | 
 | 		OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	als_proximity_pins: pinmux_als_proximity_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	usb_mdm6600_pins: pinmux_usb_mdm6600_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		/* enable 0x4a1000d8 usbb1_ulpitll_dat7.gpio_95 ag16 */ | 
 | 		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* power 0x4a10007c gpmc_nwp.gpio_54 c25 */ | 
 | 		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3) | 
 |  | 
 | 		/* reset 0x4a100072 gpmc_a25.gpio_49 d20 */ | 
 | 		OMAP4_IOPAD(0x072, PIN_OUTPUT | MUX_MODE3) | 
 |  | 
 | 		/* mode0/bpwake 0x4a10014e sdmmc5_dat1.gpio_148 af4 */ | 
 | 		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3) | 
 |  | 
 | 		/* mode1/apwake 0x4a100150 sdmmc5_dat2.gpio_149 ag3 */ | 
 | 		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* status0 0x4a10007e gpmc_clk.gpio_55 b22 */ | 
 | 		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* status1 0x4a10007a gpmc_ncs3.gpio_53 c22 */ | 
 | 		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* status2 0x4a100078 gpmc_ncs2.gpio_52 d21 */ | 
 | 		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* cmd0 0x4a100094 gpmc_ncs6.gpio_103 c24 */ | 
 | 		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3) | 
 |  | 
 | 		/* cmd1 0x4a100096 gpmc_ncs7.gpio_104 d24 */ | 
 | 		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3) | 
 |  | 
 | 		/* cmd2 0x4a100142 uart3_rts_sd.gpio_142 f28 */ | 
 | 		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	usb_ulpi_pins: pinmux_usb_ulpi_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x196, MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x198, MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE0) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* usb0_otg_dp and usb0_otg_dm */ | 
 | 	usb_utmi_pins: pinmux_usb_utmi_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x196, PIN_INPUT | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x198, PIN_INPUT | MUX_MODE0) | 
 | 		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1ba, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1bc, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* | 
 | 	 * Note that the v3.0.8 stock userspace dynamically remuxes uart1 | 
 | 	 * rts pin probably for PM purposes to PIN_INPUT_PULLUP | MUX_MODE7 | 
 | 	 * when not used. If needed, we can add rts pin remux later based | 
 | 	 * on power measurements. | 
 | 	 */ | 
 | 	uart1_pins: pinmux_uart1_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		/* 0x4a10013c mcspi1_cs2.uart1_cts ag23 */ | 
 | 		OMAP4_IOPAD(0x13c, PIN_INPUT_PULLUP | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a10013e mcspi1_cs3.uart1_rts ah23 */ | 
 | 		OMAP4_IOPAD(0x13e, MUX_MODE1) | 
 |  | 
 | 		/* 0x4a100140 uart3_cts_rctx.uart1_tx f27 */ | 
 | 		OMAP4_IOPAD(0x140, PIN_OUTPUT | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a1001ca dpm_emu14.uart1_rx aa3 */ | 
 | 		OMAP4_IOPAD(0x1ca, PIN_INPUT_PULLUP | MUX_MODE2) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* uart3_tx_irtx and uart3_rx_irrx */ | 
 | 	uart3_pins: pinmux_uart3_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x196, MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x198, MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b2, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b4, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b6, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1b8, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1ba, MUX_MODE2) | 
 | 		OMAP4_IOPAD(0x1bc, PIN_INPUT | MUX_MODE2) | 
 | 		OMAP4_IOPAD(0x1be, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c0, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c2, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c4, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c6, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		OMAP4_IOPAD(0x1c8, PIN_INPUT_PULLUP | MUX_MODE7) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	uart4_pins: pinmux_uart4_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)		/* uart4_rx */ | 
 | 		OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)		/* uart4_tx */ | 
 | 		OMAP4_IOPAD(0x110, PIN_INPUT_PULLUP | MUX_MODE5)	/* uart4_cts */ | 
 | 		OMAP4_IOPAD(0x112, PIN_OUTPUT_PULLUP | MUX_MODE5)	/* uart4_rts */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	mcbsp2_pins: pinmux_mcbsp2_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_clkx */ | 
 | 		OMAP4_IOPAD(0x0f8, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_dr */ | 
 | 		OMAP4_IOPAD(0x0fa, PIN_OUTPUT | MUX_MODE0)	/* abe_mcbsp2_dx */ | 
 | 		OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)	/* abe_mcbsp2_fsx */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	mcbsp3_pins: pinmux_mcbsp3_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x106, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_dr */ | 
 | 		OMAP4_IOPAD(0x108, PIN_OUTPUT | MUX_MODE1)	/* abe_mcbsp3_dx */ | 
 | 		OMAP4_IOPAD(0x10a, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_clkx */ | 
 | 		OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1)	/* abe_mcbsp3_fsx */ | 
 | 		>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &omap4_pmx_wkup { | 
 | 	usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins { | 
 | 		/* gpio_wk0 */ | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	vibrator_direction_pin: pinmux_vibrator_direction_pin { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)	/* dmtimer8_pwm_evt (gpio_27) */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	vibrator_enable_pin: pinmux_vibrator_enable_pin { | 
 | 		pinctrl-single,pins = < | 
 | 		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)	/* dmtimer9_pwm_evt (gpio_28) */ | 
 | 		>; | 
 | 	}; | 
 | }; | 
 |  | 
 | /* | 
 |  * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for | 
 |  * uart1 wakeirq. | 
 |  */ | 
 | &uart1 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart1_pins>; | 
 | 	interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH | 
 | 			       &omap4_pmx_core 0xfc>; | 
 | }; | 
 |  | 
 | &uart3 { | 
 | 	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH | 
 | 			       &omap4_pmx_core 0x17c>; | 
 | }; | 
 |  | 
 | &uart4 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart4_pins>; | 
 |  | 
 | 	bluetooth { | 
 | 		compatible = "ti,wl1285-st"; | 
 | 		enable-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>; /* gpio 174 */ | 
 | 		max-speed = <3686400>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &usbhsohci { | 
 | 	phys = <&fsusb1_phy>; | 
 | 	phy-names = "usb"; | 
 | }; | 
 |  | 
 | &usbhsehci { | 
 | 	phys = <&hsusb2_phy>; | 
 | }; | 
 |  | 
 | &usbhshost { | 
 | 	port1-mode = "ohci-phy-4pin-dpdm"; | 
 | 	port2-mode = "ehci-tll"; | 
 | }; | 
 |  | 
 | /* Internal UTMI+ PHY used for OTG, CPCAP ULPI PHY for detection and charger */ | 
 | &usb_otg_hs { | 
 | 	interface-type = <1>; | 
 | 	mode = <3>; | 
 | 	power = <50>; | 
 | }; | 
 |  | 
 | &i2c4 { | 
 | 	ak8975: magnetometer@c { | 
 | 		compatible = "asahi-kasei,ak8975"; | 
 | 		reg = <0x0c>; | 
 |  | 
 | 		vdd-supply = <&vhvio>; | 
 |  | 
 | 		interrupt-parent = <&gpio6>; | 
 | 		interrupts = <15 IRQ_TYPE_EDGE_RISING>; /* gpio175 */ | 
 |  | 
 | 		rotation-matrix = "-1", "0", "0", | 
 | 				  "0", "1", "0", | 
 | 				  "0", "0", "-1"; | 
 |  | 
 | 	}; | 
 |  | 
 | 	lis3dh: accelerometer@18 { | 
 | 		compatible = "st,lis3dh-accel"; | 
 | 		reg = <0x18>; | 
 |  | 
 | 		vdd-supply = <&vhvio>; | 
 |  | 
 | 		interrupt-parent = <&gpio2>; | 
 | 		interrupts = <2 IRQ_TYPE_EDGE_BOTH>; /* gpio34 */ | 
 |  | 
 | 		rotation-matrix = "0", "-1", "0", | 
 | 				  "1", "0", "0", | 
 | 				  "0", "0", "1"; | 
 | 	}; | 
 | }; | 
 |  | 
 | &mcbsp2 { | 
 | 	#sound-dai-cells = <0>; | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&mcbsp2_pins>; | 
 | 	status = "okay"; | 
 |  | 
 | 	mcbsp2_port: port { | 
 | 		cpu_dai2: endpoint { | 
 | 			dai-format = "i2s"; | 
 | 			remote-endpoint = <&cpcap_audio_codec0>; | 
 | 			frame-master = <&cpcap_audio_codec0>; | 
 | 			bitclock-master = <&cpcap_audio_codec0>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &mcbsp3 { | 
 | 	#sound-dai-cells = <0>; | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&mcbsp3_pins>; | 
 | 	status = "okay"; | 
 |  | 
 | 	mcbsp3_port: port { | 
 | 		cpu_dai3: endpoint { | 
 | 			dai-format = "dsp_a"; | 
 | 			frame-master = <&cpcap_audio_codec1>; | 
 | 			bitclock-master = <&cpcap_audio_codec1>; | 
 | 			remote-endpoint = <&cpcap_audio_codec1>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | &cpcap_audio_codec0 { | 
 | 	remote-endpoint = <&cpu_dai2>; | 
 | }; | 
 |  | 
 | &cpcap_audio_codec1 { | 
 | 	remote-endpoint = <&cpu_dai3>; | 
 | }; |