// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2013 Marek Belisko <marek@goldelico.com>
 *
 * Based on omap3-beagle-xm.dts
 */
/dts-v1/;

#include "omap36xx.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "OMAP3 GTA04";
	compatible = "ti,omap3-gta04", "ti,omap36xx", "ti,omap3";

	cpus {
		cpu@0 {
			cpu0-supply = <&vcc>;
		};
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x80000000 0x20000000>; /* 512 MB */
	};

	chosen {
		stdout-path = &uart3;
	};

	aliases {
		display0 = &lcd;
		display1 = &tv0;
	};

	ldo_3v3: fixedregulator {
		compatible = "regulator-fixed";
		regulator-name = "ldo_3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
	};

	/* fixed 26MHz oscillator */
	hfclk_26m: oscillator {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <26000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		aux-button {
			label = "aux";
			linux,code = <KEY_PHONE>;
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
			wakeup-source;
		};
	};

	antenna-detect {
		compatible = "gpio-keys";

		gps_antenna_button: gps-antenna-button {
			label = "GPS_EXT_ANT";
			linux,input-type = <EV_SW>;
			linux,code = <SW_LINEIN_INSERT>;
			gpios = <&gpio5 16 GPIO_ACTIVE_HIGH>; /* GPIO144 */
			interrupt-parent = <&gpio5>;
			interrupts = <16 IRQ_TYPE_EDGE_BOTH>;
			debounce-interval = <10>;
			wakeup-source;
		};
	};

	sound {
		compatible = "ti,omap-twl4030";
		ti,model = "gta04";

		ti,mcbsp = <&mcbsp2>;
	};

	/* GSM audio */
	sound_telephony {
		compatible = "simple-audio-card";
		simple-audio-card,name = "GTA04 voice";
		simple-audio-card,bitclock-master = <&telephony_link_master>;
		simple-audio-card,frame-master = <&telephony_link_master>;
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-inversion;
		simple-audio-card,frame-inversion;
		simple-audio-card,cpu {
			sound-dai = <&mcbsp4>;
		};

		telephony_link_master: simple-audio-card,codec {
			sound-dai = <&gtm601_codec>;
		};
	};

	gtm601_codec: gsm_codec {
		compatible = "option,gtm601";
		#sound-dai-cells = <0>;
	};

	spi_lcd: spi_lcd {
		compatible = "spi-gpio";
		#address-cells = <0x1>;
		#size-cells = <0x0>;
		pinctrl-names = "default";
		pinctrl-0 = <&spi_gpio_pins>;

		gpio-sck = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		gpio-miso = <&gpio1 18 GPIO_ACTIVE_HIGH>;
		gpio-mosi = <&gpio1 20 GPIO_ACTIVE_HIGH>;
		cs-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
		num-chipselects = <1>;

		/* lcd panel */
		lcd: td028ttec1@0 {
			compatible = "tpo,td028ttec1";
			reg = <0>;
			spi-max-frequency = <100000>;
			spi-cpol;
			spi-cpha;

			backlight= <&backlight>;
			label = "lcd";
			port {
				lcd_in: endpoint {
					remote-endpoint = <&dpi_out>;
				};
			};
		};
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm11 0 12000000 0>;
		pwm-names = "backlight";
		brightness-levels = <0 11 20 30 40 50 60 70 80 90 100>;
		default-brightness-level = <9>;	/* => 90 */
		pinctrl-names = "default";
		pinctrl-0 = <&backlight_pins>;
	};

	pwm11: dmtimer-pwm {
		compatible = "ti,omap-dmtimer-pwm";
		ti,timers = <&timer11>;
		#pwm-cells = <3>;
	};

	hsusb2_phy: hsusb2_phy {
		compatible = "usb-nop-xceiv";
		reset-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
		#phy-cells = <0>;
	};

	tv0: connector {
		compatible = "composite-video-connector";
		label = "tv";

		port {
			tv_connector_in: endpoint {
				remote-endpoint = <&opa_out>;
			};
		};
	};

	tv_amp: opa362 {
		compatible = "ti,opa362";
		enable-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;	/* GPIO_23 to enable video out amplifier */

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				opa_in: endpoint {
					remote-endpoint = <&venc_out>;
				};
			};

			port@1 {
				reg = <1>;
				opa_out: endpoint {
					remote-endpoint = <&tv_connector_in>;
				};
			};
		};
	};

	wifi_pwrseq: wifi_pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&tca6507 0 GPIO_ACTIVE_LOW>;	/* W2CBW003 reset through tca6507 */
	};

	/* devconf0 setup for mcbsp1 clock pins */
	pinmux_mcbsp1@48002274 {
		compatible = "pinctrl-single";
		reg = <0x48002274 4>;   /* CONTROL_DEVCONF0 */
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-single,bit-per-mux;
		pinctrl-single,register-width = <32>;
		pinctrl-single,function-mask = <0x7>;	/* MCBSP1 CLK pinmux */
		#pinctrl-cells = <2>;
		pinctrl-names = "default";
		pinctrl-0 = <&mcbsp1_devconf0_pins>;
		mcbsp1_devconf0_pins: pinmux_mcbsp1_devconf0_pins {
			/*                   offset bits mask */
			pinctrl-single,bits = <0x00 0x08 0x1c>;	/* set MCBSP1_CLKR */
		};
	};

	/* devconf1 setup for tvout pins */
	pinmux_tv_out@480022d8 {
		compatible = "pinctrl-single";
		reg = <0x480022d8 4>;	/* CONTROL_DEVCONF1 */
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-single,bit-per-mux;
		pinctrl-single,register-width = <32>;
		pinctrl-single,function-mask = <0x81>;	/* TV out pin control */
		#pinctrl-cells = <2>;
		pinctrl-names = "default";
		pinctrl-0 = <&tv_acbias_devconf1_pins>;
		tv_acbias_devconf1_pins: pinmux_tv_acbias_devconf1_pins {
			/*			offset	bits	mask */
			pinctrl-single,bits = <0x00 0x40800 0x40800>;	/* set TVOUTBYPASS and TVOUTACEN */
		};
	};
};

&omap3_pmx_wkup {
	gpio1_pins: pinmux_gpio1_pins {
		pinctrl-single,pins = <
			OMAP3_WKUP_IOPAD(0x2a14, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE4) /* sys_boot5.gpio_7 */
			OMAP3_WKUP_IOPAD(0x2a1a, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE4) /* sys_clkout.gpio_10 */
		>;
	};
};

&omap3_pmx_core {
	pinctrl-names = "default";
	pinctrl-0 = <
			&hsusb2_pins
	>;

	hsusb2_pins: pinmux_hsusb2_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x21d4, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi1_cs3.hsusb2_data2 */
			OMAP3_CORE1_IOPAD(0x21d6, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi2_clk.hsusb2_data7 */
			OMAP3_CORE1_IOPAD(0x21d8, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi2_simo.hsusb2_data4 */
			OMAP3_CORE1_IOPAD(0x21da, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi2_somi.hsusb2_data5 */
			OMAP3_CORE1_IOPAD(0x21dc, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi2_cs0.hsusb2_data6 */
			OMAP3_CORE1_IOPAD(0x21de, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* mcspi2_cs1.hsusb2_data3 */
		>;
	};

	uart1_pins: pinmux_uart1_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE0)		/* uart1_rx.uart1_rx */
			OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE0)		/* uart1_tx.uart1_tx */
		>;
	};

	uart2_pins: pinmux_uart2_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x217a, PIN_INPUT | MUX_MODE0)		/* uart2_rx.uart2_rx */
			OMAP3_CORE1_IOPAD(0x2178, PIN_OUTPUT | MUX_MODE0)		/* uart2_tx.uart2_tx */
		>;
	};

	uart3_pins: pinmux_uart3_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | MUX_MODE0)		/* uart3_rx.uart3_rx */
			OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0)		/* uart3_tx.uart3_tx */
		>;
	};

	mmc1_pins: pinmux_mmc1_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_clk.sdmmc1_clk */
			OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_cmd.sdmmc1_cmd */
			OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat0.sdmmc1_dat0 */
			OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat1.sdmmc1_dat1 */
			OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat2.sdmmc1_dat2 */
			OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0)		/* sdmmc1_dat3.sdmmc1_dat3 */
		>;
	};

	backlight_pins: backlight_pins_pinmux {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20ba, MUX_MODE3)		/* gpt11/gpio57 */
		>;
	};

	dss_dpi_pins: pinmux_dss_dpi_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0)   /* dss_pclk.dss_pclk */
			OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0)   /* dss_hsync.dss_hsync */
			OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0)   /* dss_vsync.dss_vsync */
			OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0)   /* dss_acbias.dss_acbias */
			OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0)   /* dss_data0.dss_data0 */
			OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0)   /* dss_data1.dss_data1 */
			OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0)   /* dss_data2.dss_data2 */
			OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0)   /* dss_data3.dss_data3 */
			OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0)   /* dss_data4.dss_data4 */
			OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0)   /* dss_data5.dss_data5 */
			OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0)   /* dss_data6.dss_data6 */
			OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0)   /* dss_data7.dss_data7 */
			OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0)   /* dss_data8.dss_data8 */
			OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0)   /* dss_data9.dss_data9 */
			OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0)   /* dss_data10.dss_data10 */
			OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0)   /* dss_data11.dss_data11 */
			OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0)   /* dss_data12.dss_data12 */
			OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0)   /* dss_data13.dss_data13 */
			OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0)   /* dss_data14.dss_data14 */
			OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0)   /* dss_data15.dss_data15 */
			OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0)   /* dss_data16.dss_data16 */
			OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0)   /* dss_data17.dss_data17 */
			OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE0)   /* dss_data18.dss_data18 */
			OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE0)   /* dss_data19.dss_data19 */
			OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE0)   /* dss_data20.dss_data20 */
			OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE0)   /* dss_data21.dss_data21 */
			OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE0)   /* dss_data22.dss_data22 */
			OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE0)   /* dss_data23.dss_data23 */
		>;
       };

	gps_pins: pinmux_gps_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* gpio145 */
		>;
	};

	hdq_pins: hdq_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda.hdq */
		>;
	};

	bmp085_pins: pinmux_bmp085_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2136, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio113 */
		>;
	};

	bma180_pins: pinmux_bma180_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x213a, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio115 */
		>;
	};

	itg3200_pins: pinmux_itg3200_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20b8, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio56 */
		>;
	};

	hmc5843_pins: pinmux_hmc5843_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2134, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio112 */
		>;
	};

	penirq_pins: pinmux_penirq_pins {
		pinctrl-single,pins = <
			/* here we could enable to wakeup the cpu from suspend by a pen touch */
			OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT_PULLUP | MUX_MODE4) /* gpio160 */
		>;
	};

	camera_pins: pinmux_camera_pins {
		pinctrl-single,pins = <
			/* set up parallel camera interface */
			OMAP3_CORE1_IOPAD(0x210c, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_hs */
			OMAP3_CORE1_IOPAD(0x210e, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_vs */
			OMAP3_CORE1_IOPAD(0x2110, PIN_OUTPUT | MUX_MODE0) /* cam_xclka */
			OMAP3_CORE1_IOPAD(0x2112, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_pclk */
			OMAP3_CORE1_IOPAD(0x2114, PIN_OUTPUT | MUX_MODE4) /* cam_fld = gpio_98 */
			OMAP3_CORE1_IOPAD(0x2116, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d0 */
			OMAP3_CORE1_IOPAD(0x2118, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d1 */
			OMAP3_CORE1_IOPAD(0x211a, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d2 */
			OMAP3_CORE1_IOPAD(0x211c, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d3 */
			OMAP3_CORE1_IOPAD(0x211e, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d4 */
			OMAP3_CORE1_IOPAD(0x2120, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d5 */
			OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d6 */
			OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d7 */
			OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d8 */
			OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d9 */
			OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d10 */
			OMAP3_CORE1_IOPAD(0x212c, PIN_INPUT_PULLDOWN | MUX_MODE0) /* cam_d10 */
			OMAP3_CORE1_IOPAD(0x212e, PIN_OUTPUT | MUX_MODE0) /* cam_xclkb */
			OMAP3_CORE1_IOPAD(0x2130, PIN_OUTPUT | MUX_MODE4) /* cam_wen = gpio_167 */
			OMAP3_CORE1_IOPAD(0x2132, PIN_INPUT_PULLDOWN | MUX_MODE4) /* cam_strobe */
		>;
	};

	mcbsp1_pins: pinmux_mcbsp1_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x218c, PIN_INPUT | MUX_MODE4)	/* mcbsp1_clkr.mcbsp1_clkr - gpio_156 FM interrupt */
			OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE0)	/* mcbsp1_clkr.mcbsp1_fsr */
			OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE0)	/* mcbsp1_dx.mcbsp1_dx */
			OMAP3_CORE1_IOPAD(0x2192, PIN_INPUT | MUX_MODE0)	/* mcbsp1_dx.mcbsp1_dr */
			/* mcbsp_clks is used as PENIRQ */
			/* OMAP3_CORE1_IOPAD(0x2194, PIN_INPUT | MUX_MODE0)	   mcbsp_clks.mcbsp_clks */
			OMAP3_CORE1_IOPAD(0x2196, PIN_INPUT | MUX_MODE0)	/* mcbsp_clks.mcbsp1_fsx */
			OMAP3_CORE1_IOPAD(0x2198, PIN_INPUT | MUX_MODE0)	/* mcbsp1_clkx.mcbsp1_clkx */
		>;
	};

	mcbsp2_pins: pinmux_mcbsp2_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x213c, PIN_INPUT | MUX_MODE0)	/* mcbsp2_fsx.mcbsp2_fsx */
			OMAP3_CORE1_IOPAD(0x213e, PIN_INPUT | MUX_MODE0)	/* mcbsp2_fsx.mcbsp2_clkx */
			OMAP3_CORE1_IOPAD(0x2140, PIN_INPUT | MUX_MODE0)	/* mcbsp2_dr.mcbsp2_dr */
			OMAP3_CORE1_IOPAD(0x2142, PIN_OUTPUT | MUX_MODE0)	/* mcbsp2_dr.mcbsp2_dx */
		>;
	};

	mcbsp3_pins: pinmux_mcbsp3_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x216c, PIN_OUTPUT | MUX_MODE0)	/* mcbsp3_dx.mcbsp3_dx */
			OMAP3_CORE1_IOPAD(0x216e, PIN_INPUT | MUX_MODE0)	/* mcbsp3_dx.mcbsp3_dr */
			OMAP3_CORE1_IOPAD(0x2170, PIN_INPUT | MUX_MODE0)	/* mcbsp3_clkx.mcbsp3_clkx */
			OMAP3_CORE1_IOPAD(0x2172, PIN_INPUT | MUX_MODE0)	/* mcbsp3_clkx.mcbsp3_fsx */
		>;
	};

	mcbsp4_pins: pinmux_mcbsp4_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* mcbsp4_clkx.mcbsp4_clkx */
			OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* mcbsp4_clkx.mcbsp4_dr */
			OMAP3_CORE1_IOPAD(0x218a, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* mcbsp4_dx.mcbsp4_fsx */
		>;
	};
};

&omap3_pmx_core2 {
	pinctrl-names = "default";
	pinctrl-0 = <
			&hsusb2_2_pins
	>;

	hsusb2_2_pins: pinmux_hsusb2_2_pins {
		pinctrl-single,pins = <
			OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3)		/* etk_d10.hsusb2_clk */
			OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3)		/* etk_d11.hsusb2_stp */
			OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* etk_d12.hsusb2_dir */
			OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* etk_d13.hsusb2_nxt */
			OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* etk_d14.hsusb2_data0 */
			OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* etk_d15.hsusb2_data1 */
		>;
	};

	spi_gpio_pins: spi_gpio_pinmux {
		pinctrl-single,pins = <
			OMAP3630_CORE2_IOPAD(0x25d8, PIN_OUTPUT | MUX_MODE4) /* clk */
			OMAP3630_CORE2_IOPAD(0x25e6, PIN_OUTPUT | MUX_MODE4) /* cs */
			OMAP3630_CORE2_IOPAD(0x25e8, PIN_OUTPUT | MUX_MODE4) /* tx */
			OMAP3630_CORE2_IOPAD(0x25e4, PIN_INPUT | MUX_MODE4) /* rx */
		>;
	};
};

&i2c1 {
	clock-frequency = <2600000>;

	twl: twl@48 {
		reg = <0x48>;
		interrupts = <7>; /* SYS_NIRQ cascaded to intc */
		interrupt-parent = <&intc>;

		clocks = <&hfclk_26m>;
		clock-names = "fck";

		twl_audio: audio {
			compatible = "ti,twl4030-audio";
			ti,enable-vibra = <1>;
			codec {
				ti,ramp_delay_value = <3>;
			};
		};

		twl_power: power {
			compatible = "ti,twl4030-power";
			ti,use_poweroff;
		};
	};
};

#include "twl4030.dtsi"
#include "twl4030_omap3.dtsi"

&i2c2 {
	clock-frequency = <400000>;

	/* pressure sensor */
	bmp085@77 {
		compatible = "bosch,bmp085";
		reg = <0x77>;
		pinctrl-names = "default";
		pinctrl-0 = <&bmp085_pins>;
		interrupt-parent = <&gpio4>;
		interrupts = <17 IRQ_TYPE_EDGE_RISING>; /* GPIO_113 */
	};

	/* accelerometer */
	bma180@41 {
		compatible = "bosch,bma180";
		reg = <0x41>;
		pinctrl-names = "default";
		pintcrl-0 = <&bma180_pins>;
		interrupt-parent = <&gpio4>;
		interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */
	};

	/* gyroscope */
	itg3200@68 {
		compatible = "invensense,itg3200";
		reg = <0x68>;
		pinctrl-names = "default";
		pinctrl-0 = <&itg3200_pins>;
		interrupt-parent = <&gpio2>;
		interrupts = <24 IRQ_TYPE_EDGE_FALLING>; /* GPIO_56 */
	};

	/* leds + gpios */
	tca6507: tca6507@45 {
		compatible = "ti,tca6507";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x45>;

		gpio-controller;
		#gpio-cells = <2>;

		gta04_led0: red_aux@0 {
			label = "gta04:red:aux";
			reg = <0x0>;
		};

		gta04_led1: green_aux@1 {
			label = "gta04:green:aux";
			reg = <0x1>;
		};

		gta04_led3: red_power@3 {
			label = "gta04:red:power";
			reg = <0x3>;
			linux,default-trigger = "default-on";
		};

		gta04_led4: green_power@4 {
			label = "gta04:green:power";
			reg = <0x4>;
		};

		wifi_reset: wifi_reset@6 { /* reference as <&tca_gpios 0 0> since it is currently the only GPIO */
			reg = <0x6>;
			compatible = "gpio";
		};
	};

	/* compass aka magnetometer */
	hmc5843@1e {
		compatible = "honeywell,hmc5883l";
		reg = <0x1e>;
		pinctrl-names = "default";
		pinctrl-0 = <&hmc5843_pins>;
		interrupt-parent = <&gpio4>;
		interrupts = <16 IRQ_TYPE_EDGE_FALLING>;	/* gpio112 */
	};

	/* touchscreen */
	tsc2007@48 {
		compatible = "ti,tsc2007";
		reg = <0x48>;
		pinctrl-names = "default";
		pinctrl-0 = <&penirq_pins>;
		interrupt-parent = <&gpio6>;
		interrupts = <0 IRQ_TYPE_EDGE_FALLING>; /* GPIO_160 */
		gpios = <&gpio6 0 GPIO_ACTIVE_LOW>;	/* GPIO_160 */
		ti,x-plate-ohms = <600>;
		touchscreen-size-x = <480>;
		touchscreen-size-y = <640>;
		touchscreen-max-pressure = <1000>;
		touchscreen-fuzz-x = <3>;
		touchscreen-fuzz-y = <8>;
		touchscreen-fuzz-pressure = <10>;
		touchscreen-inverted-y;
	};

	/* RFID EEPROM */
	m24lr64@50 {
		compatible = "atmel,24c64";
		reg = <0x50>;
	};
};

&i2c3 {
	clock-frequency = <100000>;
};

&usb_otg_hs {
	interface-type = <0>;
	usb-phy = <&usb2_phy>;
	phys = <&usb2_phy>;
	phy-names = "usb2-phy";
	mode = <3>;
	power = <50>;
};

&usbhshost {
	port2-mode = "ehci-phy";
};

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

&mmc1 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc1_pins>;
	vmmc-supply = <&vmmc1>;
	bus-width = <4>;
	ti,non-removable;
	broken-cd;	/* hardware has no CD */
};

&mmc2 {
	vmmc-supply = <&vaux4>;
	bus-width = <4>;
	ti,non-removable;
	cap-power-off-card;
	mmc-pwrseq = <&wifi_pwrseq>;
};

&mmc3 {
	status = "disabled";
};

#define BIT(x) (1 << (x))
&twl_gpio {
	/* pullups: BIT(2) */
	ti,pullups = <BIT(2)>;
	/*
	 * pulldowns:
	 * BIT(0),  BIT(1), BIT(6), BIT(7), BIT(8), BIT(13)
	 * BIT(15), BIT(16), BIT(17)
	 */
	ti,pulldowns = <(BIT(0) | BIT(1) | BIT(6) | BIT(7) | BIT(8) |
			 BIT(13) | BIT(15) | BIT(16) | BIT(17))>;
};

&twl_keypad {
	status = "disabled";
};

&gpio1 {
	pinctrl-names = "default";
	pinctrl-0 = <&gpio1_pins>;
};

&uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart1_pins>;
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart2_pins>;
	gnss: gnss {
		compatible = "wi2wi,w2sg0004";
		pinctrl-names = "default";
		pinctrl-0 = <&gps_pins>;
		sirf,onoff-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
		lna-supply = <&vsim>;
		vcc-supply = <&ldo_3v3>;
	};
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
	interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>;
};

&charger {
	ti,bb-uvolt = <3200000>;
	ti,bb-uamp = <150>;
};

/* spare */
&vaux1 {
	regulator-min-microvolt = <2500000>;
	regulator-max-microvolt = <3000000>;
};

/* sensors */
&vaux2 {
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <2800000>;
	regulator-always-on;	/* we should never switch off while vio is on! */
};

/* camera */
&vaux3 {
	regulator-min-microvolt = <2500000>;
	regulator-max-microvolt = <2500000>;
};

/* WLAN/BT */
&vaux4 {
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <3150000>;
};

/* GPS LNA */
&vsim {
	regulator-min-microvolt = <2800000>;
	regulator-max-microvolt = <3150000>;
};

/* Needed to power the DPI pins */

&vpll2 {
	regulator-always-on;
};

&dss {
	pinctrl-names = "default";
	pinctrl-0 = < &dss_dpi_pins >;

	status = "okay";
	vdds_dsi-supply = <&vpll2>;

	port {
		dpi_out: endpoint {
			remote-endpoint = <&lcd_in>;
			data-lines = <24>;
		};
	};
};

&venc {
	status = "okay";

	vdda-supply = <&vdac>;

	port {
		venc_out: endpoint {
			remote-endpoint = <&opa_in>;
			ti,channels = <1>;
			ti,invert-polarity;
		};
	};
};

&gpmc {
	ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */

	nand@0,0 {
		compatible = "ti,omap2-nand";
		reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
		interrupt-parent = <&gpmc>;
		interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
			     <1 IRQ_TYPE_NONE>;	/* termcount */
		ti,nand-ecc-opt = "ham1";
		rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
		nand-bus-width = <16>;
		#address-cells = <1>;
		#size-cells = <1>;

		gpmc,device-width = <2>;
		gpmc,cs-on-ns = <0>;
		gpmc,cs-rd-off-ns = <44>;
		gpmc,cs-wr-off-ns = <44>;
		gpmc,adv-on-ns = <6>;
		gpmc,adv-rd-off-ns = <34>;
		gpmc,adv-wr-off-ns = <44>;
		gpmc,oe-off-ns = <54>;
		gpmc,we-off-ns = <40>;
		gpmc,access-ns = <64>;
		gpmc,rd-cycle-ns = <82>;
		gpmc,wr-cycle-ns = <82>;
		gpmc,wr-access-ns = <40>;
		gpmc,wr-data-mux-bus-ns = <0>;
		gpmc,sync-clk-ps = <0>;

		x-loader@0 {
			label = "X-Loader";
			reg = <0 0x80000>;
		};

		bootloaders@80000 {
			label = "U-Boot";
			reg = <0x80000 0x1c0000>;
		};

		bootloaders_env@240000 {
			label = "U-Boot Env";
			reg = <0x240000 0x40000>;
		};

		kernel@280000 {
			label = "Kernel";
			reg = <0x280000 0x600000>;
		};

		filesystem@880000 {
			label = "File System";
			reg = <0x880000 0>;	/* 0 = MTDPART_SIZ_FULL */
		};
	};
};

&mcbsp1 { /* FM Transceiver PCM */
	status = "ok";
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp1_pins>;
};

&mcbsp2 { /* TPS65950 I2S */
	status = "ok";
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp2_pins>;
};

&mcbsp3 { /* Bluetooth PCM */
	status = "ok";
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp3_pins>;
};

&mcbsp4 { /* GSM voice PCM */
	status = "ok";
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp4_pins>;
};

&hdqw1w {
        pinctrl-names = "default";
        pinctrl-0 = <&hdq_pins>;
};

/* image signal processor within OMAP3 SoC */
&isp {
	ports {
		port@0 {
			reg = <0>;
			parallel_ep: endpoint {
				ti,isp-clock-divisor = <1>;
				ti,strobe-mode;
				bus-width = <8>;/* Used data lines */
				data-shift = <2>; /* Lines 9:2 are used */
				hsync-active = <0>; /* Active low */
				vsync-active = <1>; /* Active high */
				data-active = <1>;/* Active high */
				pclk-sample = <1>;/* Falling */
			};
		};
		/* port@1 and port@2 are not used by GTA04 */
	};
};
