| // SPDX-License-Identifier: GPL-2.0-only | 
 | /dts-v1/; | 
 |  | 
 | #include <dt-bindings/input/input.h> | 
 | #include "omap443x.dtsi" | 
 | #include "motorola-cpcap-mapphone.dtsi" | 
 |  | 
 | / { | 
 | 	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; | 
 | 	}; | 
 |  | 
 | 	soundcard { | 
 | 		compatible = "audio-graph-card"; | 
 | 		label = "Mapphone Audio"; | 
 |  | 
 | 		widgets = | 
 | 			"Speaker", "Earpiece", | 
 | 			"Speaker", "Loudspeaker", | 
 | 			"Headphone", "Headphone Jack", | 
 | 			"Microphone", "Internal Mic"; | 
 |  | 
 | 		routing = | 
 | 			"Earpiece", "EP", | 
 | 			"Loudspeaker", "SPKR", | 
 | 			"Headphone Jack", "HSL", | 
 | 			"Headphone Jack", "HSR", | 
 | 			"MICR", "Internal Mic"; | 
 |  | 
 | 		dais = <&mcbsp2_port>, <&mcbsp3_port>; | 
 | 	}; | 
 |  | 
 | 	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>; | 
 | 	}; | 
 |  | 
 | 	backlight: backlight { | 
 | 		compatible = "led-backlight"; | 
 |  | 
 | 		leds = <&backlight_led>; | 
 | 		brightness-levels = <31 63 95 127 159 191 223 255>; | 
 | 		default-brightness-level = <6>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &cpu_thermal { | 
 | 	polling-delay = <10000>; /* milliseconds */ | 
 | }; | 
 |  | 
 | &cpu_alert0 { | 
 |         temperature = <80000>; /* millicelsius */ | 
 | }; | 
 |  | 
 | &cpu0 { | 
 |         /* | 
 | 	 * Note that the 1.2GiHz mode is enabled for all SoC variants for | 
 | 	 * the Motorola Android Linux v3.0.8 based kernel. | 
 | 	 */ | 
 |         operating-points = < | 
 | 	        /* kHz    uV */ | 
 | 	        300000  1025000 | 
 | 	        600000  1200000 | 
 | 	        800000  1313000 | 
 | 	        1008000 1375000 | 
 | 		1200000 1375000 | 
 |         >; | 
 | }; | 
 |  | 
 | &dss { | 
 | 	status = "okay"; | 
 | }; | 
 |  | 
 | &dsi1 { | 
 | 	status = "okay"; | 
 | 	vdd-supply = <&vcsi>; | 
 |  | 
 | 	port { | 
 | 		dsi1_out_ep: endpoint { | 
 | 			remote-endpoint = <&lcd0_in>; | 
 | 			lanes = <0 1 2 3 4 5>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	lcd0: panel@0 { | 
 | 		compatible = "motorola,droid4-panel", "panel-dsi-cm"; | 
 | 		reg = <0>; | 
 | 		label = "lcd0"; | 
 | 		vddi-supply = <&lcd_regulator>; | 
 | 		reset-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;	/* gpio101 */ | 
 |  | 
 | 		backlight = <&backlight>; | 
 |  | 
 | 		width-mm = <50>; | 
 | 		height-mm = <89>; | 
 | 		rotation = <90>; | 
 |  | 
 | 		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>; | 
 | 		}; | 
 | 	}; | 
 | }; | 
 |  | 
 | /* Battery NVRAM on 1-wire handled by w1_ds250x driver */ | 
 | &hdqw1w { | 
 | 	pinctrl-0 = <&hdq_pins>; | 
 | 	pinctrl-names = "default"; | 
 | 	ti,mode = "1w"; | 
 | }; | 
 |  | 
 | &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; | 
 | 	}; | 
 | }; | 
 |  | 
 | &mmc1 { | 
 | 	vmmc-supply = <&vwlan2>; | 
 | 	bus-width = <4>; | 
 | 	cd-gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;	/* gpio176 */ | 
 | }; | 
 |  | 
 | &mmc2 { | 
 | 	vmmc-supply = <&vsdio>; | 
 | 	bus-width = <8>; | 
 | 	ti,non-removable; | 
 | }; | 
 |  | 
 | &mmc3 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&mmc3_pins>; | 
 | 	vmmc-supply = <&wl12xx_vmmc>; | 
 | 	/* uart2_tx.sdmmc3_dat1 pad as wakeirq */ | 
 | 	interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH | 
 | 			       &omap4_pmx_core 0xde>; | 
 | 	interrupt-names = "irq", "wakeup"; | 
 | 	non-removable; | 
 | 	bus-width = <4>; | 
 | 	cap-power-off-card; | 
 | 	keep-power-in-suspend; | 
 |  | 
 | 	#address-cells = <1>; | 
 | 	#size-cells = <0>; | 
 | 	wlcore: wlcore@2 { | 
 | 		compatible = "ti,wl1285"; | 
 | 		reg = <2>; | 
 | 		/* gpio_100 with gpmc_wait2 pad as wakeirq */ | 
 | 		interrupts-extended = <&gpio4 4 IRQ_TYPE_LEVEL_HIGH>, | 
 | 				      <&omap4_pmx_core 0x4e>; | 
 | 		interrupt-names = "irq", "wakeup"; | 
 | 		ref-clock-frequency = <26000000>; | 
 | 		tcxo-clock-frequency = <26000000>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &i2c2 { | 
 | 	touchscreen@4a { | 
 | 		compatible = "atmel,maxtouch"; | 
 | 		reg = <0x4a>; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&touchscreen_pins>; | 
 |  | 
 | 		reset-gpios = <&gpio6 13 GPIO_ACTIVE_LOW>; /* gpio173 */ | 
 |  | 
 | 		/* gpio_183 with sys_nirq2 pad as wakeup */ | 
 | 		interrupts-extended = <&gpio6 23 IRQ_TYPE_LEVEL_LOW>, | 
 | 				      <&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) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	hdq_pins: pinmux_hdq_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		/* 0x4a100120 hdq_sio.hdq_sio aa27 */ | 
 | 		OMAP4_IOPAD(0x120, PIN_INPUT | MUX_MODE0) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* 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) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* | 
 | 	 * Android uses PIN_OFF_INPUT_PULLDOWN | PIN_INPUT_PULLUP | MUX_MODE3 | 
 | 	 * for gpio_100, but the internal pull makes wlan flakey on some | 
 | 	 * devices. Off mode value should be tested if we have off mode working | 
 | 	 * later on. | 
 | 	 */ | 
 | 	mmc3_pins: pinmux_mmc3_pins { | 
 | 		pinctrl-single,pins = < | 
 | 		/* 0x4a10008e gpmc_wait2.gpio_100 d23 */ | 
 | 		OMAP4_IOPAD(0x08e, PIN_INPUT | MUX_MODE3) | 
 |  | 
 | 		/* 0x4a100102 abe_mcbsp1_dx.sdmmc3_dat2 ab25 */ | 
 | 		OMAP4_IOPAD(0x102, PIN_INPUT_PULLUP | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a100104 abe_mcbsp1_fsx.sdmmc3_dat3 ac27 */ | 
 | 		OMAP4_IOPAD(0x104, PIN_INPUT_PULLUP | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a100118 uart2_cts.sdmmc3_clk ab26 */ | 
 | 		OMAP4_IOPAD(0x118, PIN_INPUT | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a10011a uart2_rts.sdmmc3_cmd ab27 */ | 
 | 		OMAP4_IOPAD(0x11a, PIN_INPUT_PULLUP | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a10011c uart2_rx.sdmmc3_dat0 aa25 */ | 
 | 		OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE1) | 
 |  | 
 | 		/* 0x4a10011e uart2_tx.sdmmc3_dat1 aa26 */ | 
 | 		OMAP4_IOPAD(0x11e, PIN_INPUT_PULLUP | MUX_MODE1) | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	/* 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 */ | 
 | 		>; | 
 | 	}; | 
 |  | 
 | 	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) */ | 
 | 		>; | 
 | 	}; | 
 | }; | 
 |  | 
 | &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) | 
 | 		>; | 
 | 	}; | 
 | }; | 
 |  | 
 | /* RNG is used by secure mode and not accessible */ | 
 | &rng_target { | 
 | 	status = "disabled"; | 
 | }; | 
 |  | 
 | /* Configure pwm clock source for timers 8 & 9 */ | 
 | &timer8 { | 
 | 	assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>; | 
 | 	assigned-clock-parents = <&sys_clkin_ck>; | 
 | }; | 
 |  | 
 | &timer9 { | 
 | 	assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>; | 
 | 	assigned-clock-parents = <&sys_clkin_ck>; | 
 | }; | 
 |  | 
 | /* | 
 |  * The uart1 port is wired to mdm6600 with rts and cts. The modem uses gpio_149 | 
 |  * for wake-up events for both the USB PHY and the UART. We can use gpio_149 | 
 |  * pad as the shared wakeirq for the UART rather than the RX or CTS pad as we | 
 |  * have gpio_149 trigger before the UART transfer starts. | 
 |  */ | 
 | &uart1 { | 
 | 	pinctrl-names = "default"; | 
 | 	pinctrl-0 = <&uart1_pins>; | 
 | 	interrupts-extended = <&wakeupgen GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH | 
 | 			       &omap4_pmx_core 0x110>; | 
 | 	uart-has-rtscts; | 
 | 	current-speed = <115200>; | 
 | }; | 
 |  | 
 | &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>; | 
 |  | 
 | 	/* | 
 | 	 * Max 300 mA steps based on similar PMIC MC13783UG.pdf "Table 10-4. | 
 | 	 * VBUS Regulator Main Characteristics". Binding uses 2 mA units. | 
 | 	 */ | 
 | 	power = <150>; | 
 | }; | 
 |  | 
 | &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"; | 
 |  | 
 | 	}; | 
 | }; | 
 |  | 
 | &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>; | 
 | }; |