738 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			738 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// 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", "ti,wl1283";
 | 
						|
		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>;
 | 
						|
};
 |