/*
 * 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.
 */

/ {
	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&gpio_key_pins &gpio_key_pins_wkup>;

		sysboot2 {
			label = "sysboot2";
			gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;	/* gpio2 */
			linux,code = <BTN_0>;
			wakeup-source;
		};

		sysboot5 {
			label = "sysboot5";
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;	/* gpio7 */
			linux,code = <BTN_1>;
			wakeup-source;
		};

		gpio1 {
			label = "gpio1";
			gpios = <&gpio6 21 GPIO_ACTIVE_LOW>;	/* gpio181 */
			linux,code = <BTN_2>;
			wakeup-source;
		};

		gpio2 {
			label = "gpio2";
			gpios = <&gpio6 18 GPIO_ACTIVE_LOW>;	/* gpio178 */
			linux,code = <BTN_3>;
			wakeup-source;
		};
	};

	sound {
		compatible = "ti,omap-twl4030";
		ti,model = "omap3logic";
		ti,mcbsp = <&mcbsp2>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins>;

		led1 {
			label = "led1";
			gpios = <&gpio6 20 GPIO_ACTIVE_HIGH>;	/* gpio180 */
			linux,default-trigger = "cpu0";
		};

		led2 {
			label = "led2";
			gpios = <&gpio6 19 GPIO_ACTIVE_HIGH>;	/* gpio179 */
			linux,default-trigger = "none";
		};
	};

	pwm10: dmtimer-pwm {
		compatible = "ti,omap-dmtimer-pwm";
		pinctrl-names = "default";
		pinctrl-0 = <&pwm_pins>;
		ti,timers = <&timer10>;
		#pwm-cells = <3>;
	};

};

&vaux1 {
	regulator-min-microvolt = <3000000>;
	regulator-max-microvolt = <3000000>;
};

&vaux4 {
	regulator-min-microvolt = <1800000>;
	regulator-max-microvolt = <1800000>;
};

&mcbsp2 {
	status = "okay";
};

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

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

	ethernet@gpmc {
		pinctrl-names = "default";
		pinctrl-0 = <&lan9221_pins>;
		interrupt-parent = <&gpio5>;
		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;		/* gpio129 */
		reg = <1 0 0xff>;
	};
};

&vpll2 {
	regulator-always-on;
};

&dss {
	status = "ok";
	vdds_dsi-supply = <&vpll2>;
	vdda_video-supply = <&video_reg>;
	pinctrl-names = "default";
	pinctrl-0 = <&dss_dpi_pins1>;
	port {
		dpi_out: endpoint {
			remote-endpoint = <&lcd_in>;
			data-lines = <16>;
		};
	};
};

/ {
	aliases {
		display0 = &lcd0;
	};

	video_reg: video_reg {
		pinctrl-names = "default";
		pinctrl-0 = <&panel_pwr_pins>;
		compatible = "regulator-fixed";
		regulator-name = "fixed-supply";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>;	/* gpio155, lcd INI */
	};

	lcd0: display {
		compatible = "panel-dpi";
		label = "15";
		status = "okay";
		/* default-on; */
		pinctrl-names = "default";

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

		panel-timing {
			clock-frequency = <9000000>;
			hactive = <480>;
			vactive = <272>;
			hfront-porch = <3>;
			hback-porch = <2>;
			hsync-len = <42>;
			vback-porch = <3>;
			vfront-porch = <4>;
			vsync-len = <11>;
			hsync-active = <0>;
			vsync-active = <0>;
			de-active = <1>;
			pixelclk-active = <1>;
		};
	};

	bl: backlight {
		compatible = "pwm-backlight";
		pinctrl-names = "default";
		pinctrl-0 = <&backlight_pins>;
		pwms = <&pwm10 0 5000000 0>;
		brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
		default-brightness-level = <7>;
		enable-gpios = <&gpio5 26 GPIO_ACTIVE_HIGH>; /* gpio_154 */
	};
};

&mmc1 {
	interrupts-extended = <&intc 83 &omap3_pmx_core 0x11a>;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc1_pins &mmc1_cd>;
	cd-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>;		/* gpio127 */
	vmmc-supply = <&vmmc1>;
	bus-width = <4>;
	cap-power-off-card;
};

&omap3_pmx_core {
	gpio_key_pins: pinmux_gpio_key_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x21d6, PIN_INPUT_PULLUP | MUX_MODE4)	/* mcspi2_clk.gpio_178 */
			OMAP3_CORE1_IOPAD(0x21dc, PIN_INPUT_PULLUP | MUX_MODE4)	/* mcspi2_cs0.gpio_181 */
		>;
	};

	pwm_pins: pinmux_pwm_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20B8, PIN_OUTPUT | PIN_OFF_OUTPUT_LOW | MUX_MODE3)       /* gpmc_ncs5.gpt_10_pwm_evt */
		>;
	};

	led_pins: pinmux_led_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x21d8, PIN_OUTPUT | MUX_MODE4)	/* gpio_179 */
			OMAP3_CORE1_IOPAD(0x21da, PIN_OUTPUT | MUX_MODE4)	/* gpio_180 */
		>;
	};

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

	tsc2004_pins: pinmux_tsc2004_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE4)	/* mcbsp4_dr.gpio_153 */
		>;
	};

	backlight_pins: pinmux_backlight_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x2188, PIN_OUTPUT | PIN_OFF_OUTPUT_LOW | MUX_MODE4)       /* mcbsp4_dx.gpio_154 */
		>;
	};

	isp_pins: pinmux_isp_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x210c, PIN_INPUT | MUX_MODE0)   /* cam_hs.cam_hs */
			OMAP3_CORE1_IOPAD(0x210e, PIN_INPUT | MUX_MODE0)   /* cam_vs.cam_vs */
			OMAP3_CORE1_IOPAD(0x2110, PIN_INPUT | MUX_MODE0)   /* cam_xclka.cam_xclka */
			OMAP3_CORE1_IOPAD(0x2112, PIN_INPUT | MUX_MODE0)   /* cam_pclk.cam_pclk */

			OMAP3_CORE1_IOPAD(0x2116, PIN_INPUT | MUX_MODE0)   /* cam_d0.cam_d0 */
			OMAP3_CORE1_IOPAD(0x2118, PIN_INPUT | MUX_MODE0)   /* cam_d1.cam_d1 */
			OMAP3_CORE1_IOPAD(0x211a, PIN_INPUT | MUX_MODE0)   /* cam_d2.cam_d2 */
			OMAP3_CORE1_IOPAD(0x211c, PIN_INPUT | MUX_MODE0)   /* cam_d3.cam_d3 */
			OMAP3_CORE1_IOPAD(0x211e, PIN_INPUT | MUX_MODE0)   /* cam_d4.cam_d4 */
			OMAP3_CORE1_IOPAD(0x2120, PIN_INPUT | MUX_MODE0)   /* cam_d5.cam_d5 */
			OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE0)   /* cam_d6.cam_d6 */
			OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE0)   /* cam_d7.cam_d7 */
		>;
	};

	panel_pwr_pins: pinmux_panel_pwr_pins {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x218a, PIN_OUTPUT | PIN_OFF_OUTPUT_LOW | MUX_MODE4)       /* mcbsp4_fs.gpio_155 */
		>;
	};

	dss_dpi_pins1: pinmux_dss_dpi_pins1 {
		pinctrl-single,pins = <
			OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_pclk.dss_pclk */
			OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_hsync.dss_hsync */
			OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_vsync.dss_vsync */
			OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_acbias.dss_acbias */

			OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data6.dss_data6 */
			OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data7.dss_data7 */
			OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data8.dss_data8 */
			OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data9.dss_data9 */
			OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data10.dss_data10 */
			OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data11.dss_data11 */
			OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data12.dss_data12 */
			OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data13.dss_data13 */
			OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data14.dss_data14 */
			OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data15.dss_data15 */
			OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data16.dss_data16 */
			OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE0)   /* dss_data17.dss_data17 */

			OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data18.dss_data0 */
			OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data19.dss_data1 */
			OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data20.dss_data2 */
			OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data21.dss_data3 */
			OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data22.dss_data4 */
			OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT_PULLDOWN | PIN_OFF_OUTPUT_LOW | MUX_MODE3)   /* dss_data23.dss_data5 */
		>;
	};
};

&omap3_pmx_wkup {
	gpio_key_pins_wkup: pinmux_gpio_key_pins_wkup {
		pinctrl-single,pins = <
			OMAP3_WKUP_IOPAD(0x2a0a, PIN_INPUT_PULLUP | MUX_MODE4)	/* sys_boot0.gpio_2 */
			OMAP3_WKUP_IOPAD(0x2a14, PIN_INPUT_PULLUP | MUX_MODE4)	/* sys_boot5.gpio_7 */
		>;
	};

	lan9221_pins: pinmux_lan9221_pins {
		pinctrl-single,pins = <
			OMAP3_WKUP_IOPAD(0x2a5a, PIN_INPUT | MUX_MODE4)		/* reserved.gpio_129 */
		>;
	};

	mmc1_cd: pinmux_mmc1_cd {
		pinctrl-single,pins = <
			OMAP3_WKUP_IOPAD(0x2a54, PIN_INPUT_PULLUP | MUX_MODE4)	/* reserved.gpio_127 */
		>;
	};
};

&i2c2 {
	mt9p031@48 {
		compatible = "aptina,mt9p031";
		reg = <0x48>;
		clocks = <&isp 0>;
		vaa-supply = <&vaux4>;
		vdd-supply = <&vaux4>;
		vdd_io-supply = <&vaux4>;
		port {
			mt9p031_out: endpoint {
				input-clock-frequency = <24000000>;
				pixel-clock-frequency = <72000000>;
				remote-endpoint = <&ccdc_ep>;
			};
		};
	};
};

&i2c3 {
	touchscreen: tsc2004@48 {
		compatible = "ti,tsc2004";
		reg = <0x48>;
		vio-supply = <&vaux1>;
		pinctrl-names = "default";
		pinctrl-0 = <&tsc2004_pins>;
		interrupts-extended = <&gpio5 25 IRQ_TYPE_EDGE_RISING>; /* gpio 153 */

		touchscreen-fuzz-x = <4>;
		touchscreen-fuzz-y = <7>;
		touchscreen-fuzz-pressure = <2>;
		touchscreen-size-x = <4096>;
		touchscreen-size-y = <4096>;
		touchscreen-max-pressure = <2048>;

		ti,x-plate-ohms = <280>;
		ti,esd-recovery-timeout-ms = <8000>;
	};
};

&mcspi1 {
	at25@0 {
		compatible = "atmel,at25";
		reg = <0>;
		spi-max-frequency = <5000000>;
		spi-cpha;
		spi-cpol;

		pagesize = <64>;
		size = <32768>;
		address-width = <16>;
	};
};

&isp {
	pinctrl-names = "default";
	pinctrl-0 = <&isp_pins>;
	ports {
		port@0 {
			reg = <0>;
			ccdc_ep: endpoint {
				remote-endpoint = <&mt9p031_out>;
				bus-width = <8>;
				hsync-active = <1>;
				vsync-active = <1>;
				pclk-sample = <0>;
			};
		};
	};
};

&uart1 {
	interrupts-extended = <&intc 72 &omap3_pmx_core OMAP3_UART1_RX>;
};

/* Wired to the tps65950 on the SOM, only the USB connector is on the devkit */
&usb_otg_hs {
	pinctrl-names = "default";
	pinctrl-0 = <&hsusb_otg_pins>;
	interface-type = <0>;
	usb-phy = <&usb2_phy>;
	phys = <&usb2_phy>;
	phy-names = "usb2-phy";
	mode = <3>;
	power = <50>;
};
