// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright 2013 Freescale Semiconductor, Inc.
 *
 * Author: Fabio Estevam <fabio.estevam@freescale.com>
 */

#include <dt-bindings/gpio/gpio.h>

/ {
	aliases {
		backlight = &backlight;
		panelchan = &panelchan;
		panel7 = &panel7;
		touchscreenp7 = &touchscreenp7;
	};

	chosen {
		stdout-path = &uart2;
	};

	backlight: backlight {
		compatible = "gpio-backlight";
		gpios = <&gpio1 4 0>;
		default-on;
		status = "disabled";
	};

	gpio-poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio2 4 0>;
		pinctrl-0 = <&pinctrl_power_off>;
		pinctrl-names = "default";
	};

	memory@10000000 {
		device_type = "memory";
		reg = <0x10000000 0x40000000>;
	};

	panel7: panel7 {
		/*
		 * in reality it is a -20t (parallel) model,
		 * but with LVDS bridge chip attached,
		 * so it is equivalent to -19t model in drive
		 * characteristics
		 */
		compatible = "urt,umsh-8596md-19t";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_panel>;
		power-supply = <&reg_panel>;
		backlight = <&backlight>;
		status = "disabled";

		port {
			panel_in: endpoint {
				remote-endpoint = <&lvds0_out>;
			};
		};
	};

	reg_usb_h1_vbus: regulator-usb-h1-vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_h1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		startup-delay-us = <2>; /* USB2415 requires a POR of 1 us minimum */
		gpio = <&gpio7 12 0>;
	};

	reg_panel: regulator-panel {
		compatible = "regulator-fixed";
		regulator-name = "lcd_panel";
		enable-active-high;
		gpio = <&gpio1 2 0>;
	};

	sound {
		compatible = "fsl,imx6q-udoo-ac97",
			     "fsl,imx-audio-ac97";
		model = "fsl,imx6q-udoo-ac97";
		audio-cpu = <&ssi1>;
		audio-routing =
			"RX", "Mic Jack",
			"Headphone Jack", "TX";
		mux-int-port = <1>;
		mux-ext-port = <6>;
	};
};

&fec {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_enet>;
	phy-mode = "rgmii-id";
	status = "okay";
};

&hdmi {
	ddc-i2c-bus = <&i2c2>;
	status = "okay";
};

&i2c2 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c2>;
	status = "okay";
};

&i2c3 {
	clock-frequency = <100000>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2c3>;
	status = "okay";

	touchscreenp7: touchscreenp7@55 {
		compatible = "sitronix,st1232";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_touchscreenp7>;
		reg = <0x55>;
		interrupt-parent = <&gpio1>;
		interrupts = <13 8>;
		gpios = <&gpio1 15 0>;
		status = "disabled";
	};
};

&iomuxc {
	imx6q-udoo {
		pinctrl_enet: enetgrp {
			fsl,pins = <
				MX6QDL_PAD_RGMII_RXC__RGMII_RXC		0x1b030
				MX6QDL_PAD_RGMII_RD0__RGMII_RD0		0x1b030
				MX6QDL_PAD_RGMII_RD1__RGMII_RD1		0x1b030
				MX6QDL_PAD_RGMII_RD2__RGMII_RD2		0x1b030
				MX6QDL_PAD_RGMII_RD3__RGMII_RD3		0x1b030
				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b030
				MX6QDL_PAD_RGMII_TXC__RGMII_TXC		0x1b030
				MX6QDL_PAD_RGMII_TD0__RGMII_TD0		0x1b030
				MX6QDL_PAD_RGMII_TD1__RGMII_TD1		0x1b030
				MX6QDL_PAD_RGMII_TD2__RGMII_TD2		0x1b030
				MX6QDL_PAD_RGMII_TD3__RGMII_TD3		0x1b030
				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b030
				MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
				MX6QDL_PAD_ENET_MDIO__ENET_MDIO		0x1b0b0
				MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
				MX6QDL_PAD_GPIO_16__ENET_REF_CLK	0x4001b0a8
			>;
		};

		pinctrl_i2c2: i2c2grp {
			fsl,pins = <
				MX6QDL_PAD_KEY_COL3__I2C2_SCL		0x4001b8b1
				MX6QDL_PAD_KEY_ROW3__I2C2_SDA		0x4001b8b1
			>;
		};

		pinctrl_i2c3: i2c3grp {
			fsl,pins = <
				MX6QDL_PAD_GPIO_5__I2C3_SCL		0x4001f8b1
				MX6QDL_PAD_GPIO_6__I2C3_SDA		0x4001f8b1
			>;
		};

		pinctrl_panel: panelgrp {
			fsl,pins = <
				MX6QDL_PAD_GPIO_2__GPIO1_IO02		0x70
				MX6QDL_PAD_GPIO_4__GPIO1_IO04		0x70
			>;
		};

		pinctrl_power_off: poweroffgrp {
			fsl,pins = <
				MX6QDL_PAD_NANDF_D4__GPIO2_IO04		0x30
			>;
		};

		pinctrl_touchscreenp7: touchscreenp7grp {
			fsl,pins = <
				MX6QDL_PAD_SD2_DAT0__GPIO1_IO15		0x70
				MX6QDL_PAD_SD2_DAT2__GPIO1_IO13		0x1b0b0
			>;
		};

		pinctrl_uart2: uart2grp {
			fsl,pins = <
				MX6QDL_PAD_EIM_D26__UART2_TX_DATA	0x1b0b1
				MX6QDL_PAD_EIM_D27__UART2_RX_DATA	0x1b0b1
			>;
		};

		pinctrl_uart4: uart4grp {
			fsl,pins = <
				MX6QDL_PAD_KEY_COL0__UART4_TX_DATA	0x1b0b1
				MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA	0x1b0b1
			>;
		};

		pinctrl_usbh: usbhgrp {
			fsl,pins = <
				MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000
				MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0
			>;
		};

		pinctrl_usbotg: usbotg {
			fsl,pins = <
				MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
				MX6QDL_PAD_EIM_D22__USB_OTG_PWR 0x17059
				MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x17059
			>;
		};

		pinctrl_usdhc3: usdhc3grp {
			fsl,pins = <
				MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
				MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10059
				MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
				MX6QDL_PAD_SD3_DAT5__GPIO7_IO00		0x1b0b0
			>;
		};

		pinctrl_ac97_running: ac97running {
			fsl,pins = <
				MX6QDL_PAD_DI0_PIN2__AUD6_TXD		0x1b0b0
				MX6QDL_PAD_DI0_PIN3__AUD6_TXFS		0x1b0b0
				MX6QDL_PAD_DI0_PIN4__AUD6_RXD		0x13080
				MX6QDL_PAD_DI0_PIN15__AUD6_TXC		0x13080
				MX6QDL_PAD_EIM_EB2__GPIO2_IO30		0x1b0b0
			>;
		};

		pinctrl_ac97_warm_reset: ac97warmreset {
			fsl,pins = <
				MX6QDL_PAD_DI0_PIN2__AUD6_TXD		0x1b0b0
				MX6QDL_PAD_DI0_PIN3__GPIO4_IO19		0x1b0b0
				MX6QDL_PAD_DI0_PIN4__AUD6_RXD		0x13080
				MX6QDL_PAD_DI0_PIN15__AUD6_TXC		0x13080
				MX6QDL_PAD_EIM_EB2__GPIO2_IO30		0x1b0b0
			>;
		};

		pinctrl_ac97_reset: ac97reset {
			fsl,pins = <
				MX6QDL_PAD_DI0_PIN2__GPIO4_IO18		0x1b0b0
				MX6QDL_PAD_DI0_PIN3__GPIO4_IO19		0x1b0b0
				MX6QDL_PAD_DI0_PIN4__AUD6_RXD		0x13080
				MX6QDL_PAD_DI0_PIN15__AUD6_TXC		0x13080
				MX6QDL_PAD_EIM_EB2__GPIO2_IO30		0x1b0b0
			>;
		};
	};
};

&ldb {
	status = "okay";

	panelchan: lvds-channel@0 {
		port@4 {
			reg = <4>;

			lvds0_out: endpoint {
				remote-endpoint = <&panel_in>;
			};
		};
	};
};

&uart2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart2>;
	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart4>;
	status = "okay";
};

&usbh1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbh>;
	vbus-supply = <&reg_usb_h1_vbus>;
	clocks = <&clks IMX6QDL_CLK_CKO>;
	status = "disabled";
};

&usbotg {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usbotg>;
	status = "okay";
};

&usdhc3 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc3>;
	cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&audmux {
	status = "okay";
};

&ssi1 {
	cell-index = <0>;
	fsl,mode = "ac97-slave";
	pinctrl-names = "ac97-running", "ac97-reset", "ac97-warm-reset";
	pinctrl-0 = <&pinctrl_ac97_running>;
	pinctrl-1 = <&pinctrl_ac97_reset>;
	pinctrl-2 = <&pinctrl_ac97_warm_reset>;
	ac97-gpios = <&gpio4 19 0 &gpio4 18 0 &gpio2 30 0>;
	status = "okay";
};
