/*
 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

/dts-v1/;
#include "imx6q.dtsi"
#include "imx6qdl-tx6.dtsi"

/ {
	model = "Ka-Ro electronics TX6Q-1020 Module on CoMpact TFT";
	compatible = "karo,imx6q-tx6q", "fsl,imx6q";

	aliases {
		display = &display;
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm2 0 500000 0>;
		power-supply = <&reg_3v3>;
		/*
		 * a poor man's way to create a 1:1 relationship between
		 * the PWM value and the actual duty cycle
		 */
		brightness-levels = < 0  1  2  3  4  5  6  7  8  9
				     10 11 12 13 14 15 16 17 18 19
				     20 21 22 23 24 25 26 27 28 29
				     30 31 32 33 34 35 36 37 38 39
				     40 41 42 43 44 45 46 47 48 49
				     50 51 52 53 54 55 56 57 58 59
				     60 61 62 63 64 65 66 67 68 69
				     70 71 72 73 74 75 76 77 78 79
				     80 81 82 83 84 85 86 87 88 89
				     90 91 92 93 94 95 96 97 98 99
				    100>;
		default-brightness-level = <50>;
	};

	display: display@di0 {
		compatible = "fsl,imx-parallel-display";
		interface-pix-fmt = "rgb24";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_disp0_1>;
		status = "okay";

		port {
			display0_in: endpoint {
				remote-endpoint = <&ipu1_di0_disp0>;
			};
		};

		display-timings {
			native-mode = <&ET070001DM6>;

			ET070001DM6: CoMTFT { /* same as ET0700 but with inverted pixel clock */
				clock-frequency = <33264000>;
				hactive = <800>;
				vactive = <480>;
				hback-porch = <88>;
				hsync-len = <128>;
				hfront-porch = <40>;
				vback-porch = <33>;
				vsync-len = <2>;
				vfront-porch = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <1>;
			};
		};
        };
};

&can1 {
	status = "disabled";
};

&can2 {
	xceiver-supply = <&reg_3v3>;
};

&ds1339 {
	status = "disabled";
};

&gpmi {
	status = "disabled";
};

&iomuxc {
	imx6qdl-tx6 {
		pinctrl_usdhc4: usdhc4grp {
			fsl,pins = <
				MX6QDL_PAD_SD4_CMD__SD4_CMD		0x070b1
				MX6QDL_PAD_SD4_CLK__SD4_CLK		0x070b1
				MX6QDL_PAD_SD4_DAT0__SD4_DATA0		0x070b1
				MX6QDL_PAD_SD4_DAT1__SD4_DATA1		0x070b1
				MX6QDL_PAD_SD4_DAT2__SD4_DATA2		0x070b1
				MX6QDL_PAD_SD4_DAT3__SD4_DATA3		0x070b1
				MX6QDL_PAD_NANDF_ALE__SD4_RESET		0x0b0b1
			>;
		};
	};
};

&ipu1_di0_disp0 {
	remote-endpoint = <&display0_in>;
};

&kpp {
	status = "disabled";
};

&reg_can_xcvr {
	status = "disabled";
};

&touchscreen {
	status = "disabled";
};

&usdhc4 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usdhc4>;
	bus-width = <4>;
	no-1-8-v;
	fsl,wp-controller;
	status = "okay";
};
