// SPDX-License-Identifier: GPL-2.0-only
/dts-v1/;

#include "motorola-mapphone-common.dtsi"

/ {
	/* FS USB Host PHY on port 1 for mdm6600 */
	fsusb1_phy: usb-phy@1 {
		compatible = "motorola,mapphone-mdm6600";
		pinctrl-0 = <&usb_mdm6600_pins>;
		pinctrl-1 = <&usb_mdm6600_sleep_pins>;
		pinctrl-names = "default", "sleep";
		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>;
	};

	pwm8: 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: 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>;
	};
};

/* Battery NVRAM on 1-wire handled by w1_ds250x driver */
&hdqw1w {
	pinctrl-0 = <&hdq_pins>;
	pinctrl-names = "default";
	ti,mode = "1w";
};

&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 {
	hdq_pins: hdq-pins {
		pinctrl-single,pins = <
		/* 0x4a100120 hdq_sio.hdq_sio aa27 */
		OMAP4_IOPAD(0x120, PIN_INPUT | MUX_MODE0)
		>;
	};

	/* kpd_row0.gpio_178 */
	tmp105_irq: tmp105-irq-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0x18e, PIN_INPUT_PULLUP | MUX_MODE3)
		>;
	};

	touchscreen_pins: touchscreen-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0x180, PIN_OUTPUT | MUX_MODE3)
		OMAP4_IOPAD(0x1a0, PIN_INPUT_PULLUP | MUX_MODE3)
		>;
	};

	usb_mdm6600_pins: 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)
		>;
	};

	/* Modem sleep pins to keep gpio_49 high with internal pull */
	usb_mdm6600_sleep_pins: usb-mdm6600-sleep-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0x0d8, PIN_INPUT | MUX_MODE3)
		OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)
		OMAP4_IOPAD(0x072, PIN_INPUT_PULLUP | MUX_MODE7) /* Keep gpio_49 reset high */
		OMAP4_IOPAD(0x14e, PIN_OUTPUT | MUX_MODE3)
		OMAP4_IOPAD(0x150, PIN_OFF_OUTPUT_LOW | PIN_INPUT | MUX_MODE3)
		OMAP4_IOPAD(0x07e, PIN_INPUT | MUX_MODE3)
		OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)
		OMAP4_IOPAD(0x078, PIN_INPUT | MUX_MODE3)
		OMAP4_IOPAD(0x094, PIN_OUTPUT | MUX_MODE3)
		OMAP4_IOPAD(0x096, PIN_OUTPUT | MUX_MODE3)
		OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE3)
		>;
	};

	als_proximity_pins: als-proximity-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0x18c, PIN_INPUT_PULLUP | MUX_MODE3)
		>;
	};

	vibrator_direction_pin: vibrator-direction-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0x1ce, PIN_OUTPUT | MUX_MODE1)	/* dmtimer8_pwm_evt (gpio_27) */
		>;
	};

	vibrator_enable_pin: vibrator-enable-pins {
		pinctrl-single,pins = <
		OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1)	/* dmtimer9_pwm_evt (gpio_28) */
		>;
	};
};

/* Configure pwm clock source for timers 8 & 9 */
&timer8 {
	assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
	assigned-clock-parents = <&sys_32k_ck>;
};

&timer9 {
	assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
	assigned-clock-parents = <&sys_32k_ck>;
};

&usbhsohci {
	phys = <&fsusb1_phy>;
	phy-names = "usb";
};

&usbhsehci {
	phys = <&hsusb2_phy>;
};

&usbhshost {
	port1-mode = "ohci-phy-4pin-dpdm";
	port2-mode = "ehci-tll";
};

&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";

	};
};
