// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Support for Variscite DART-MX6 Carrier-board
 *
 * Copyright 2017 BayLibre, SAS
 * Author: Neil Armstrong <narmstrong@baylibre.com>
 */

/dts-v1/;

#include "imx6q.dtsi"
#include "imx6qdl-var-dart.dtsi"
#include <dt-bindings/input/linux-event-codes.h>

/ {
	model = "Variscite DART-MX6 Carrier-board";
	compatible = "variscite,dt6customboard", "fsl,imx6q";

	backlight_lvds: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm2 0 50000>;
		brightness-levels = <0 4 8 16 32 64 128 248>;
		default-brightness-level = <7>;
		status = "okay";
	};

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

		back {
			gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_BACK>;
			label = "Key Back";
			linux,input-type = <1>;
			debounce-interval = <100>;
			wakeup-source;
		};

		home {
			gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_HOME>;
			label = "Key Home";
			linux,input-type = <1>;
			debounce-interval = <100>;
			wakeup-source;
		};

		menu {
			gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;
			linux,code = <KEY_MENU>;
			label = "Key Menu";
			linux,input-type = <1>;
			debounce-interval = <100>;
			wakeup-source;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		led1 {
			gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		led2 {
			gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-on";
		};
	};

	panel1: lvds-panel {
		compatible = "sgd,gktw70sdae4se", "panel-lvds";
		backlight = <&backlight_lvds>;
		width-mm = <153>;
		height-mm = <86>;
		label = "gktw70sdae4se";
		data-mapping = "jeida-18";

		panel-timing {
			clock-frequency = <32000000>;
			hactive = <800>;
			vactive = <480>;
			hback-porch = <39>;
			hfront-porch = <39>;
			vback-porch = <29>;
			vfront-porch = <13>;
			hsync-len = <47>;
			vsync-len = <2>;
		};

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

	reg_usb_h1_vbus: regulator-usbh1vbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_h1_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_usb_otg_vbus: regulator-usbotgvbus {
		compatible = "regulator-fixed";
		regulator-name = "usb_otg_vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "dt6-customboard-audio";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&sound_codec>;
		simple-audio-card,frame-master = <&sound_codec>;
		simple-audio-card,widgets = "Headphone", "Headphone Jack",
					    "Line", "Line In";
		simple-audio-card,routing = "Headphone Jack", "HPLOUT",
					    "Headphone Jack", "HPROUT",
					    "LINE1L", "Line In",
					    "LINE1R", "Line In";

		sound_cpu: simple-audio-card,cpu {
			sound-dai = <&ssi2>;
		};

		sound_codec: simple-audio-card,codec {
			sound-dai = <&tlv320aic3106>;
			clocks = <&clks IMX6QDL_CLK_CKO>;
		};
	};
};

&can1 {
	status = "okay";
};

&ecspi1 {
	cs-gpios = <&gpio4 9 GPIO_ACTIVE_LOW>,
		   <&gpio4 10 GPIO_ACTIVE_LOW>;
	status = "okay";
};

&fec {
	status = "okay";
	phy-mode = "rgmii";
	phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
};

&hdmi {
	status = "okay";
};

&i2c1 {
	clock-frequency = <100000>;
	status = "okay";
};

&i2c3 {
	clock-frequency = <100000>;
	status = "okay";

	touchscreen@38 {
		compatible = "edt,edt-ft5x06";
		reg = <0x38>;
		interrupt-parent = <&gpio1>;
		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-size-x = <800>;
		touchscreen-size-y = <480>;
		touchscreen-inverted-x;
		touchscreen-inverted-y;
		wakeup-source;
	};

	rtc@68 {
		compatible = "isil,isl12057";
		reg = <0x68>;
	};
};

&ldb {
	status = "okay";

	lvds-channel@1 {
		status = "okay";

		port@4 {
			reg = <4>;

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

&pwm2 {
	#pwm-cells = <2>;
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart3 {
	status = "okay";
};

&usbh1 {
	vbus-supply = <&reg_usb_h1_vbus>;
	status = "okay";
};

&usbotg {
	vbus-supply = <&reg_usb_otg_vbus>;
	dr_mode = "otg";
	srp-disable;
	hnp-disable;
	adp-disable;
	status = "okay";
};

&usdhc2 {
	cd-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
	status = "okay";
};
