// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
 */
/dts-v1/;

#include "omap443x.dtsi"
#include "elpida_ecb240abacn.dtsi"
#include "omap4-mcpdm.dtsi"

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

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

	aliases {
		display0 = &lcd0;
		display1 = &lcd1;
		display2 = &hdmi0;
	};

	vdd_eth: fixedregulator-vdd-eth {
		pinctrl-names = "default";
		pinctrl-0 = <&enet_enable_gpio>;

		compatible = "regulator-fixed";
		regulator-name = "VDD_ETH";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		gpio = <&gpio2 16 GPIO_ACTIVE_HIGH>;  /* gpio line 48 */
		enable-active-high;
		regulator-boot-on;
		startup-delay-us = <25000>;
	};

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

	led-controller-1 {
		compatible = "gpio-leds";

		led-1 {
			label = "omap4:green:debug0";
			gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>; /* 61 */
		};

		led-2 {
			label = "omap4:green:debug1";
			gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>; /* 30 */
		};

		led-3 {
			label = "omap4:green:debug2";
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>; /* 7 */
		};

		led-4 {
			label = "omap4:green:debug3";
			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>; /* 8 */
		};

		led-5 {
			label = "omap4:green:debug4";
			gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>; /* 50 */
		};

		led-6 {
			label = "omap4:blue:user";
			gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>; /* 169 */
		};

		led-7 {
			label = "omap4:red:user";
			gpios = <&gpio6 10 GPIO_ACTIVE_HIGH>; /* 170 */
		};

		led-8 {
			label = "omap4:green:user";
			gpios = <&gpio5 11 GPIO_ACTIVE_HIGH>; /* 139 */
		};
	};

	led-controller-2 {
		compatible = "pwm-leds";

		led-9 {
			label = "omap4::keypad";
			pwms = <&twl_pwm 0 7812500>;
			max-brightness = <127>;
		};

		led-10 {
			label = "omap4:green:chrg";
			pwms = <&twl_pwmled 0 7812500>;
			max-brightness = <255>;
		};
	};

	backlight {
		compatible = "pwm-backlight";
		pwms = <&twl_pwm 1 7812500>;
		brightness-levels = <
				0 10 20 30 40
				50 60 70 80 90
				100 110 120 127
				>;
		default-brightness-level = <13>;
	};

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

	/* regulator for wl12xx on sdio5 */
	wl12xx_vmmc: wl12xx_vmmc {
		pinctrl-names = "default";
		pinctrl-0 = <&wl12xx_gpio>;
		compatible = "regulator-fixed";
		regulator-name = "vwl1271";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		gpio = <&gpio2 22 GPIO_ACTIVE_HIGH>;
		startup-delay-us = <70000>;
		enable-active-high;
	};

	tpd12s015: encoder {
		compatible = "ti,tpd12s015";

		gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,	/* 60, CT CP HPD */
			<&gpio2 9 GPIO_ACTIVE_HIGH>,	/* 41, LS OE */
			<&gpio2 31 GPIO_ACTIVE_HIGH>;	/* 63, HPD */

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

			port@0 {
				reg = <0>;

				tpd12s015_in: endpoint {
					remote-endpoint = <&hdmi_out>;
				};
			};

			port@1 {
				reg = <1>;

				tpd12s015_out: endpoint {
					remote-endpoint = <&hdmi_connector_in>;
				};
			};
		};
	};

	hdmi0: connector {
		compatible = "hdmi-connector";
		label = "hdmi";

		type = "c";

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&tpd12s015_out>;
			};
		};
	};
};

&omap4_pmx_core {
	pinctrl-names = "default";
	pinctrl-0 = <
			&dss_hdmi_pins
			&tpd12s015_pins
	>;

	uart2_pins: uart2-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0)	/* uart2_cts.uart2_cts */
			OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0)		/* uart2_rts.uart2_rts */
			OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0)	/* uart2_rx.uart2_rx */
			OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0)		/* uart2_tx.uart2_tx */
		>;
	};

	uart3_pins: uart3-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x140, PIN_INPUT_PULLUP | MUX_MODE0)	/* uart3_cts_rctx.uart3_cts_rctx */
			OMAP4_IOPAD(0x142, PIN_OUTPUT | MUX_MODE0)		/* uart3_rts_sd.uart3_rts_sd */
			OMAP4_IOPAD(0x144, PIN_INPUT | MUX_MODE0)		/* uart3_rx_irrx.uart3_rx_irrx */
			OMAP4_IOPAD(0x146, PIN_OUTPUT | MUX_MODE0)		/* uart3_tx_irtx.uart3_tx_irtx */
		>;
	};

	uart4_pins: uart4-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x15c, PIN_INPUT | MUX_MODE0)		/* uart4_rx.uart4_rx */
			OMAP4_IOPAD(0x15e, PIN_OUTPUT | MUX_MODE0)		/* uart4_tx.uart4_tx */
		>;
	};

	twl6040_pins: twl6040-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x120, PIN_OUTPUT | MUX_MODE3)		/* hdq_sio.gpio_127 */
			OMAP4_IOPAD(0x1a0, PIN_INPUT | MUX_MODE0)		/* sys_nirq2.sys_nirq2 */
		>;
	};

	dmic_pins: dmic-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x110, PIN_OUTPUT | MUX_MODE0)		/* abe_dmic_clk1.abe_dmic_clk1 */
			OMAP4_IOPAD(0x112, PIN_INPUT | MUX_MODE0)		/* abe_dmic_din1.abe_dmic_din1 */
			OMAP4_IOPAD(0x114, PIN_INPUT | MUX_MODE0)		/* abe_dmic_din2.abe_dmic_din2 */
			OMAP4_IOPAD(0x116, PIN_INPUT | MUX_MODE0)		/* abe_dmic_din3.abe_dmic_din3 */
		>;
	};

	mcbsp1_pins: mcbsp1-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x0fe, PIN_INPUT | MUX_MODE0)		/* abe_mcbsp1_clkx.abe_mcbsp1_clkx */
			OMAP4_IOPAD(0x100, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp1_dr.abe_mcbsp1_dr */
			OMAP4_IOPAD(0x102, PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp1_dx.abe_mcbsp1_dx */
			OMAP4_IOPAD(0x104, PIN_INPUT | MUX_MODE0)		/* abe_mcbsp1_fsx.abe_mcbsp1_fsx */
		>;
	};

	mcbsp2_pins: mcbsp2-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x0f6, PIN_INPUT | MUX_MODE0)		/* abe_mcbsp2_clkx.abe_mcbsp2_clkx */
			OMAP4_IOPAD(0x0f8, PIN_INPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp2_dr.abe_mcbsp2_dr */
			OMAP4_IOPAD(0x0fa, PIN_OUTPUT_PULLDOWN | MUX_MODE0)	/* abe_mcbsp2_dx.abe_mcbsp2_dx */
			OMAP4_IOPAD(0x0fc, PIN_INPUT | MUX_MODE0)		/* abe_mcbsp2_fsx.abe_mcbsp2_fsx */
		>;
	};

	mcspi1_pins: mcspi1-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x132, PIN_INPUT | MUX_MODE0)		/*  mcspi1_clk.mcspi1_clk */
			OMAP4_IOPAD(0x134, PIN_INPUT | MUX_MODE0)		/*  mcspi1_somi.mcspi1_somi */
			OMAP4_IOPAD(0x136, PIN_INPUT | MUX_MODE0)		/*  mcspi1_simo.mcspi1_simo */
			OMAP4_IOPAD(0x138, PIN_INPUT | MUX_MODE0)		/*  mcspi1_cs0.mcspi1_cs0 */
		>;
	};

	dss_hdmi_pins: dss-hdmi-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x09a, PIN_INPUT | MUX_MODE0)		/* hdmi_cec.hdmi_cec */
			OMAP4_IOPAD(0x09c, PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_scl.hdmi_scl */
			OMAP4_IOPAD(0x09e, PIN_INPUT_PULLUP | MUX_MODE0)	/* hdmi_sda.hdmi_sda */
		>;
	};

	tpd12s015_pins: tpd12s015-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x062, PIN_OUTPUT | MUX_MODE3)		/* gpmc_a17.gpio_41 */
			OMAP4_IOPAD(0x088, PIN_OUTPUT | MUX_MODE3)		/* gpmc_nbe1.gpio_60 */
			OMAP4_IOPAD(0x098, PIN_INPUT_PULLDOWN | MUX_MODE3)	/* hdmi_hpd.gpio_63 */
		>;
	};

	i2c1_pins: i2c1-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x122, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_scl */
			OMAP4_IOPAD(0x124, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c1_sda */
		>;
	};

	i2c2_pins: i2c2-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x126, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_scl */
			OMAP4_IOPAD(0x128, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda */
		>;
	};

	i2c3_pins: i2c3-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x12a, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_scl */
			OMAP4_IOPAD(0x12c, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c3_sda */
		>;
	};

	i2c4_pins: i2c4-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x12e, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c4_scl */
			OMAP4_IOPAD(0x130, PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c4_sda */
		>;
	};

	/* wl12xx GPIO output for WLAN_EN */
	wl12xx_gpio: wl12xx-gpio-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x07c, PIN_OUTPUT | MUX_MODE3)		/* gpmc_nwp.gpio_54 */
		>;
	};

	/* wl12xx GPIO inputs and SDIO pins */
	wl12xx_pins: wl12xx-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x07a, PIN_INPUT | MUX_MODE3)		/* gpmc_ncs3.gpio_53 */
			OMAP4_IOPAD(0x148, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_clk.sdmmc5_clk */
			OMAP4_IOPAD(0x14a, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_cmd.sdmmc5_cmd */
			OMAP4_IOPAD(0x14c, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat0.sdmmc5_dat0 */
			OMAP4_IOPAD(0x14e, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat1.sdmmc5_dat1 */
			OMAP4_IOPAD(0x150, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat2.sdmmc5_dat2 */
			OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc5_dat3.sdmmc5_dat3 */
		>;
	};

	/* gpio_48 for ENET_ENABLE */
	enet_enable_gpio: enet-enable-gpio-pins {
		pinctrl-single,pins = <
			OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLDOWN | MUX_MODE3)	/* gpmc_a24.gpio_48 */
		>;
	};

	ks8851_pins: ks8851-pins {
		pinctrl-single,pins = <
			/* ENET_INT */
			OMAP4_IOPAD(0x054, PIN_INPUT_PULLUP | MUX_MODE3)	/* gpmc_ad10.gpio_34 */
			/*
			 * Misterious pin which makes the ethernet working
			 * The legacy board file requested this pin on boot
			 * (ETH_KS8851_QUART) and set it to high, similarly to
			 * the ENET_ENABLE pin.
			 * We could use gpio-hog to keep it high, but let's use
			 * it as a reset GPIO for ks8851.
			 */
			OMAP4_IOPAD(0x13a, PIN_OUTPUT_PULLUP | MUX_MODE3)	/* mcspi1_cs1.gpio_138 */
		>;
	};
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;

	clock-frequency = <400000>;

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

	twl6040: twl@4b {
		compatible = "ti,twl6040";
		#clock-cells = <0>;
		reg = <0x4b>;

		pinctrl-names = "default";
		pinctrl-0 = <&twl6040_pins>;

		/* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
		interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_2N cascaded to gic */
		ti,audpwron-gpio = <&gpio4 31 GPIO_ACTIVE_HIGH>;  /* 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"
#include "twl6030_omap4.dtsi"

&i2c2 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;

	clock-frequency = <400000>;
};

&i2c3 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c3_pins>;

	clock-frequency = <400000>;

	/*
	 * Temperature Sensor
	 * https://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 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c4_pins>;

	clock-frequency = <400000>;

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

&mcspi1 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcspi1_pins>;

	eth@0 {
		pinctrl-names = "default";
		pinctrl-0 = <&ks8851_pins>;

		compatible = "ks8851";
		spi-max-frequency = <24000000>;
		reg = <0>;
		interrupt-parent = <&gpio2>;
		interrupts = <2 IRQ_TYPE_LEVEL_LOW>; /* gpio line 34 */
		vdd-supply = <&vdd_eth>;
		reset-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>;
	};
};

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

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

&mmc3 {
	status = "disabled";
};

&mmc4 {
	status = "disabled";
};

&mmc5 {
	pinctrl-names = "default";
	pinctrl-0 = <&wl12xx_pins>;
	vmmc-supply = <&wl12xx_vmmc>;
	non-removable;
	bus-width = <4>;
	cap-power-off-card;

	#address-cells = <1>;
	#size-cells = <0>;
	wlcore: wlcore@2 {
		compatible = "ti,wl1281";
		reg = <2>;
		interrupt-parent = <&gpio1>;
		interrupts = <21 IRQ_TYPE_LEVEL_HIGH>; /* gpio 53 */
		ref-clock-frequency = <26000000>;
		tcxo-clock-frequency = <26000000>;
	};
};

&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 {
	interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH
			       &omap4_pmx_core OMAP4_UART2_RX>;
	pinctrl-names = "default";
	pinctrl-0 = <&uart2_pins>;
};

&uart3 {
	interrupts-extended = <&wakeupgen GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH
			       &omap4_pmx_core OMAP4_UART3_RX>;
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
};

&uart4 {
	interrupts-extended = <&wakeupgen GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH
			       &omap4_pmx_core OMAP4_UART4_RX>;
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_pins>;
};

&mcbsp1 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp1_pins>;
	status = "okay";
};

&mcbsp2 {
	pinctrl-names = "default";
	pinctrl-0 = <&mcbsp2_pins>;
	status = "okay";
};

&dmic {
	pinctrl-names = "default";
	pinctrl-0 = <&dmic_pins>;
	status = "okay";
};

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

&usb_otg_hs {
	interface-type = <1>;
	mode = <3>;
	power = <50>;
};

&dss {
	status = "okay";
};

&dsi1 {
	status = "okay";
	vdd-supply = <&vcxio>;

	port {
		dsi1_out_ep: endpoint {
			remote-endpoint = <&lcd0_in>;
			lanes = <0 1 2 3 4 5>;
		};
	};

	lcd0: panel@0 {
		compatible = "tpo,taal", "panel-dsi-cm";
		reg = <0>;
		label = "lcd0";

		reset-gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;	/* 102 */

		port {
			lcd0_in: endpoint {
				remote-endpoint = <&dsi1_out_ep>;
			};
		};
	};
};

&dsi2 {
	status = "okay";
	vdd-supply = <&vcxio>;

	port {
		dsi2_out_ep: endpoint {
			remote-endpoint = <&lcd1_in>;
			lanes = <0 1 2 3 4 5>;
		};
	};

	lcd1: panel@0 {
		compatible = "tpo,taal", "panel-dsi-cm";
		reg = <0>;
		label = "lcd1";

		reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;	/* 104 */

		port {
			lcd1_in: endpoint {
				remote-endpoint = <&dsi2_out_ep>;
			};
		};
	};
};

&hdmi {
	status = "okay";
	vdda-supply = <&vdac>;

	port {
		hdmi_out: endpoint {
			remote-endpoint = <&tpd12s015_in>;
		};
	};
};
