/*
 * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
 *
 * 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.
 */
/dts-v1/;

/include/ "omap4.dtsi"
/include/ "elpida_ecb240abacn.dtsi"

/ {
	model = "TI OMAP4 SDP board";
	compatible = "ti,omap4-sdp", "ti,omap4430", "ti,omap4";

	memory {
		device_type = "memory";
		reg = <0x80000000 0x40000000>; /* 1 GB */
	};

	vdd_eth: fixedregulator-vdd-eth {
		compatible = "regulator-fixed";
		regulator-name = "VDD_ETH";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio2 16 0>;  /* gpio line 48 */
		enable-active-high;
		regulator-boot-on;
	};

	vbat: fixedregulator-vbat {
		compatible = "regulator-fixed";
		regulator-name = "VBAT";
		regulator-min-microvolt = <3750000>;
		regulator-max-microvolt = <3750000>;
		regulator-boot-on;
	};

	leds {
		compatible = "gpio-leds";
		debug0 {
			label = "omap4:green:debug0";
			gpios = <&gpio2 29 0>; /* 61 */
		};

		debug1 {
			label = "omap4:green:debug1";
			gpios = <&gpio1 30 0>; /* 30 */
		};

		debug2 {
			label = "omap4:green:debug2";
			gpios = <&gpio1 7 0>; /* 7 */
		};

		debug3 {
			label = "omap4:green:debug3";
			gpios = <&gpio1 8 0>; /* 8 */
		};

		debug4 {
			label = "omap4:green:debug4";
			gpios = <&gpio2 18 0>; /* 50 */
		};

		user1 {
			label = "omap4:blue:user";
			gpios = <&gpio6 9 0>; /* 169 */
		};

		user2 {
			label = "omap4:red:user";
			gpios = <&gpio6 10 0>; /* 170 */
		};

		user3 {
			label = "omap4:green:user";
			gpios = <&gpio5 11 0>; /* 139 */
		};
	};

	sound {
		compatible = "ti,abe-twl6040";
		ti,model = "SDP4430";

		ti,jack-detection = <1>;
		ti,mclk-freq = <38400000>;

		ti,mcpdm = <&mcpdm>;
		ti,dmic = <&dmic>;

		ti,twl6040 = <&twl6040>;

		/* Audio routing */
		ti,audio-routing =
			"Headset Stereophone", "HSOL",
			"Headset Stereophone", "HSOR",
			"Earphone Spk", "EP",
			"Ext Spk", "HFL",
			"Ext Spk", "HFR",
			"Line Out", "AUXL",
			"Line Out", "AUXR",
			"Vibrator", "VIBRAL",
			"Vibrator", "VIBRAR",
			"HSMIC", "Headset Mic",
			"Headset Mic", "Headset Mic Bias",
			"MAINMIC", "Main Handset Mic",
			"Main Handset Mic", "Main Mic Bias",
			"SUBMIC", "Sub Handset Mic",
			"Sub Handset Mic", "Main Mic Bias",
			"AFML", "Line In",
			"AFMR", "Line In",
			"DMic", "Digital Mic",
			"Digital Mic", "Digital Mic1 Bias";
	};
};

&omap4_pmx_core {
	pinctrl-names = "default";
	pinctrl-0 = <
			&twl6040_pins
			&mcpdm_pins
			&dmic_pins
			&mcbsp1_pins
			&mcbsp2_pins
			&dss_hdmi_pins
			&tpd12s015_pins
	>;

	uart2_pins: pinmux_uart2_pins {
		pinctrl-single,pins = <
			0xd8 0x118	/* uart2_cts.uart2_cts INPUT_PULLUP | MODE0 */
			0xda 0		/* uart2_rts.uart2_rts OUTPUT | MODE0 */
			0xdc 0x118	/* uart2_rx.uart2_rx INPUT_PULLUP | MODE0 */
			0xde 0		/* uart2_tx.uart2_tx OUTPUT | MODE0 */
		>;
	};

	uart3_pins: pinmux_uart3_pins {
		pinctrl-single,pins = <
			0x100 0x118	/* uart3_cts_rctx.uart3_cts_rctx INPUT_PULLUP | MODE0 */
			0x102 0		/* uart3_rts_sd.uart3_rts_sd OUTPUT | MODE0 */
			0x104 0x100	/* uart3_rx_irrx.uart3_rx_irrx INPUT | MODE0 */
			0x106 0		/* uart3_tx_irtx.uart3_tx_irtx OUTPUT | MODE0 */
		>;
	};

	uart4_pins: pinmux_uart4_pins {
		pinctrl-single,pins = <
			0x11c 0x100	/* uart4_rx.uart4_rx INPUT | MODE0 */
			0x11e 0		/* uart4_tx.uart4_tx OUTPUT | MODE0 */
		>;
	};

	twl6040_pins: pinmux_twl6040_pins {
		pinctrl-single,pins = <
			0xe0 0x3	/* hdq_sio.gpio_127 OUTPUT | MODE3 */
			0x160 0x100	/* sys_nirq2.sys_nirq2 INPUT | MODE0 */
		>;
	};

	mcpdm_pins: pinmux_mcpdm_pins {
		pinctrl-single,pins = <
			0xc6 0x108	/* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
			0xc8 0x108	/* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
			0xca 0x118	/* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
			0xcc 0x108	/* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
			0xce 0x108	/* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
		>;
	};

	dmic_pins: pinmux_dmic_pins {
		pinctrl-single,pins = <
			0xd0 0		/* abe_dmic_clk1.abe_dmic_clk1 OUTPUT | MODE0 */
			0xd2 0x100	/* abe_dmic_din1.abe_dmic_din1 INPUT | MODE0 */
			0xd4 0x100	/* abe_dmic_din2.abe_dmic_din2 INPUT | MODE0 */
			0xd6 0x100	/* abe_dmic_din3.abe_dmic_din3 INPUT | MODE0 */
		>;
	};

	mcbsp1_pins: pinmux_mcbsp1_pins {
		pinctrl-single,pins = <
			0xbe 0x100	/* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
			0xc0 0x108	/* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
			0xc2 0x8	/* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
			0xc4 0x100	/* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
		>;
	};

	mcbsp2_pins: pinmux_mcbsp2_pins {
		pinctrl-single,pins = <
			0xb6 0x100	/* abe_mcbsp2_clkx.abe_mcbsp2_clkx INPUT | MODE0 */
			0xb8 0x108	/* abe_mcbsp2_dr.abe_mcbsp2_dr INPUT PULLDOWN | MODE0 */
			0xba 0x8	/* abe_mcbsp2_dx.abe_mcbsp2_dx OUTPUT PULLDOWN | MODE0 */
			0xbc 0x100	/* abe_mcbsp2_fsx.abe_mcbsp2_fsx INPUT | MODE0 */
		>;
	};

	dss_hdmi_pins: pinmux_dss_hdmi_pins {
		pinctrl-single,pins = <
			0x5a 0x118	/* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
			0x5c 0x118	/* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
			0x5e 0x118	/* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
		>;
	};

	tpd12s015_pins: pinmux_tpd12s015_pins {
		pinctrl-single,pins = <
			0x22 0x3	/* gpmc_a17.gpio_41 OUTPUT | MODE3 */
			0x48 0x3	/* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
			0x58 0x10b	/* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
		>;
	};
};

&i2c1 {
	clock-frequency = <400000>;

	twl: twl@48 {
		reg = <0x48>;
		/* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
		interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
		interrupt-parent = <&gic>;
	};

	twl6040: twl@4b {
		compatible = "ti,twl6040";
		reg = <0x4b>;
		/* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
		interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
		interrupt-parent = <&gic>;
		ti,audpwron-gpio = <&gpio4 31 0>;  /* gpio line 127 */

		vio-supply = <&v1v8>;
		v2v1-supply = <&v2v1>;
		enable-active-high;

		/* regulators for vibra motor */
		vddvibl-supply = <&vbat>;
		vddvibr-supply = <&vbat>;

		vibra {
			/* Vibra driver, motor resistance parameters */
			ti,vibldrv-res = <8>;
			ti,vibrdrv-res = <3>;
			ti,viblmotor-res = <10>;
			ti,vibrmotor-res = <10>;
		};
	};
};

/include/ "twl6030.dtsi"

&i2c2 {
	clock-frequency = <400000>;
};

&i2c3 {
	clock-frequency = <400000>;

	/*
	 * Temperature Sensor
	 * http://www.ti.com/lit/ds/symlink/tmp105.pdf
	 */
	tmp105@48 {
		compatible = "ti,tmp105";
		reg = <0x48>;
	};

	/*
	 * Ambient Light Sensor
	 * http://www.rohm.com/products/databook/sensor/pdf/bh1780gli-e.pdf
	 */
	bh1780@29 {
		compatible = "rohm,bh1780";
		reg = <0x29>;
	};
};

&i2c4 {
	clock-frequency = <400000>;

	/*
	 * 3-Axis Digital Compass
	 * http://www.sparkfun.com/datasheets/Sensors/Magneto/HMC5843.pdf
	 */
	hmc5843@1e {
		compatible = "honeywell,hmc5843";
		reg = <0x1e>;
	};
};

&mcspi1 {
	eth@0 {
		compatible = "ks8851";
		spi-max-frequency = <24000000>;
		reg = <0>;
		interrupt-parent = <&gpio2>;
		interrupts = <2>; /* gpio line 34 */
		vdd-supply = <&vdd_eth>;
	};
};

&mmc1 {
	vmmc-supply = <&vmmc>;
	bus-width = <8>;
};

&mmc2 {
	vmmc-supply = <&vaux1>;
	bus-width = <8>;
	ti,non-removable;
};

&mmc3 {
	status = "disabled";
};

&mmc4 {
	status = "disabled";
};

&mmc5 {
	bus-width = <4>;
	ti,non-removable;
};

&emif1 {
	cs1-used;
	device-handle = <&elpida_ECB240ABACN>;
};

&emif2 {
	cs1-used;
	device-handle = <&elpida_ECB240ABACN>;
};

&keypad {
	keypad,num-rows = <8>;
	keypad,num-columns = <8>;
	linux,keymap = <0x00000012	/* KEY_E */
			0x00010013	/* KEY_R */
			0x00020014	/* KEY_T */
			0x00030066	/* KEY_HOME */
			0x0004003f	/* KEY_F5 */
			0x000500f0	/* KEY_UNKNOWN */
			0x00060017	/* KEY_I */
			0x0007002a	/* KEY_LEFTSHIFT */
			0x01000020	/* KEY_D*/
			0x01010021	/* KEY_F */
			0x01020022	/* KEY_G */
			0x010300e7	/* KEY_SEND */
			0x01040040	/* KEY_F6 */
			0x010500f0	/* KEY_UNKNOWN */
			0x01060025	/* KEY_K */
			0x0107001c	/* KEY_ENTER */
			0x0200002d	/* KEY_X */
			0x0201002e	/* KEY_C */
			0x0202002f	/* KEY_V */
			0x0203006b	/* KEY_END */
			0x02040041	/* KEY_F7 */
			0x020500f0	/* KEY_UNKNOWN */
			0x02060034	/* KEY_DOT */
			0x0207003a	/* KEY_CAPSLOCK */
			0x0300002c	/* KEY_Z */
			0x0301004e	/* KEY_KPLUS */
			0x03020030	/* KEY_B */
			0x0303003b	/* KEY_F1 */
			0x03040042	/* KEY_F8 */
			0x030500f0	/* KEY_UNKNOWN */
			0x03060018	/* KEY_O */
			0x03070039	/* KEY_SPACE */
			0x04000011	/* KEY_W */
			0x04010015	/* KEY_Y */
			0x04020016	/* KEY_U */
			0x0403003c	/* KEY_F2 */
			0x04040073	/* KEY_VOLUMEUP */
			0x040500f0	/* KEY_UNKNOWN */
			0x04060026	/* KEY_L */
			0x04070069	/* KEY_LEFT */
			0x0500001f	/* KEY_S */
			0x05010023	/* KEY_H */
			0x05020024	/* KEY_J */
			0x0503003d	/* KEY_F3 */
			0x05040043	/* KEY_F9 */
			0x05050072	/* KEY_VOLUMEDOWN */
			0x05060032	/* KEY_M */
			0x0507006a	/* KEY_RIGHT */
			0x06000010	/* KEY_Q */
			0x0601001e	/* KEY_A */
			0x06020031	/* KEY_N */
			0x0603009e	/* KEY_BACK */
			0x0604000e	/* KEY_BACKSPACE */
			0x060500f0	/* KEY_UNKNOWN */
			0x06060019	/* KEY_P */
			0x06070067	/* KEY_UP */
			0x07000094	/* KEY_PROG1 */
			0x07010095	/* KEY_PROG2 */
			0x070200ca	/* KEY_PROG3 */
			0x070300cb	/* KEY_PROG4 */
			0x0704003e	/* KEY_F4 */
			0x070500f0	/* KEY_UNKNOWN */
			0x07060160	/* KEY_OK */
			0x0707006c>;	/* KEY_DOWN */
	linux,input-no-autorepeat;
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart2_pins>;
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_pins>;
};

&mcbsp3 {
	status = "disabled";
};

&twl_usb_comparator {
	usb-supply = <&vusb>;
};
