// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright (c) 2016 Protonic Holland
 */

/dts-v1/;
#include "imx6dl.dtsi"
#include "imx6qdl-prti6q.dtsi"
#include <dt-bindings/display/sdtv-standards.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/sound/fsl-imx-audmux.h>

/ {
	model = "Protonic VT7";
	compatible = "prt,prtvt7", "fsl,imx6dl";

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

	backlight_lcd: backlight-lcd {
		compatible = "pwm-backlight";
		pwms = <&pwm1 0 500000 0>;
		brightness-levels = <0 20 81 248 1000>;
		default-brightness-level = <65>;
		num-interpolated-steps = <21>;
		power-supply = <&reg_bl_12v0>;
	};

	display {
		compatible = "fsl,imx-parallel-display";
		pinctrl-0 = <&pinctrl_ipu1_disp>;
		pinctrl-names = "default";
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;

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

		port@1 {
			reg = <1>;

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

	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&vdiv_vaccu>;
	};

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

		key-esc {
			label = "GPIO Key ESC";
			linux,code = <KEY_ESC>;
			gpios = <&gpio_pca 0 GPIO_ACTIVE_LOW>;
		};

		key-up {
			label = "GPIO Key UP";
			linux,code = <KEY_UP>;
			gpios = <&gpio_pca 1 GPIO_ACTIVE_LOW>;
		};

		key-down {
			label = "GPIO Key DOWN";
			linux,code = <KEY_DOWN>;
			gpios = <&gpio_pca 4 GPIO_ACTIVE_LOW>;
		};

		key-enter {
			label = "GPIO Key Enter";
			linux,code = <KEY_ENTER>;
			gpios = <&gpio_pca 3 GPIO_ACTIVE_LOW>;
		};

		key-cycle {
			label = "GPIO Key CYCLE";
			linux,code = <KEY_CYCLEWINDOWS>;
			gpios = <&gpio_pca 2 GPIO_ACTIVE_LOW>;
		};

		key-f1 {
			label = "GPIO Key F1";
			linux,code = <KEY_F1>;
			gpios = <&gpio_pca 14 GPIO_ACTIVE_LOW>;
		};

		key-f2 {
			label = "GPIO Key F2";
			linux,code = <KEY_F2>;
			gpios = <&gpio_pca 13 GPIO_ACTIVE_LOW>;
		};

		key-f3 {
			label = "GPIO Key F3";
			linux,code = <KEY_F3>;
			gpios = <&gpio_pca 12 GPIO_ACTIVE_LOW>;
		};

		key-f4 {
			label = "GPIO Key F4";
			linux,code = <KEY_F4>;
			gpios = <&gpio_pca 11 GPIO_ACTIVE_LOW>;
		};

		key-f5 {
			label = "GPIO Key F5";
			linux,code = <KEY_F5>;
			gpios = <&gpio_pca 10 GPIO_ACTIVE_LOW>;
		};

		key-f6 {
			label = "GPIO Key F6";
			linux,code = <KEY_F6>;
			gpios = <&gpio_pca 5 GPIO_ACTIVE_LOW>;
		};

		key-f7 {
			label = "GPIO Key F7";
			linux,code = <KEY_F7>;
			gpios = <&gpio_pca 6 GPIO_ACTIVE_LOW>;
		};

		key-f8 {
			label = "GPIO Key F8";
			linux,code = <KEY_F8>;
			gpios = <&gpio_pca 7 GPIO_ACTIVE_LOW>;
		};

		key-f9 {
			label = "GPIO Key F9";
			linux,code = <KEY_F9>;
			gpios = <&gpio_pca 8 GPIO_ACTIVE_LOW>;
		};

		key-f10 {
			label = "GPIO Key F10";
			linux,code = <KEY_F10>;
			gpios = <&gpio_pca 9 GPIO_ACTIVE_LOW>;
		};
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_leds>;

		led-debug0 {
			function = LED_FUNCTION_STATUS;
			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	panel {
		compatible = "innolux,g070y2-t02";
		backlight = <&backlight_lcd>;
		power-supply = <&reg_3v3>;

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

	connector {
		compatible = "composite-video-connector";
		label = "Composite0";
		sdtv-standards = <SDTV_STD_PAL_B>;

		port {
			comp0_out: endpoint {
				remote-endpoint = <&tvp5150_comp0_in>;
			};
		};
	};

	reg_bl_12v0: regulator-bl-12v0 {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_reg_bl_12v0>;
		regulator-name = "bl-12v0";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		enable-active-high;
	};

	reg_3v3: regulator-3v3 {
		compatible = "regulator-fixed";
		regulator-name = "3v3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	reg_1v8: regulator-1v8 {
		compatible = "regulator-fixed";
		regulator-name = "1v8";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "prti6q-sgtl5000";
		simple-audio-card,format = "i2s";
		simple-audio-card,widgets =
			"Microphone", "Microphone Jack",
			"Line", "Line In Jack",
			"Headphone", "Headphone Jack",
			"Speaker", "External Speaker";
		simple-audio-card,routing =
			"MIC_IN", "Microphone Jack",
			"LINE_IN", "Line In Jack",
			"Headphone Jack", "HP_OUT",
			"External Speaker", "LINE_OUT";

		simple-audio-card,cpu {
			sound-dai = <&ssi1>;
			system-clock-frequency = <0>;
		};

		simple-audio-card,codec {
			sound-dai = <&sgtl5000>;
			bitclock-master;
			frame-master;
		};
	};

	thermal-zones {
		chassis-thermal {
			polling-delay = <20000>;
			polling-delay-passive = <0>;
			thermal-sensors = <&tsens0>;

			trips {
				alert {
					temperature = <105000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "passive";
				};
			};
		};

		touch-thermal0 {
			polling-delay = <20000>;
			polling-delay-passive = <0>;
			thermal-sensors = <&touch_temp0>;

			trips {
				alert {
					temperature = <105000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "passive";
				};
			};
		};

		touch-thermal1 {
			polling-delay = <20000>;
			polling-delay-passive = <0>;
			thermal-sensors = <&touch_temp1>;

			trips {
				alert {
					temperature = <105000>; /* millicelsius */
					hysteresis = <2000>; /* millicelsius */
					type = "passive";
				};
			};
		};
	};

	touchscreen {
		compatible = "resistive-adc-touch";
		io-channels = <&adc_ts 1>, <&adc_ts 3>, <&adc_ts 4>,
                              <&adc_ts 5>;
		io-channel-names = "y", "z1", "z2", "x";
		touchscreen-min-pressure = <64687>;
		touchscreen-x-plate-ohms = <300>;
		touchscreen-y-plate-ohms = <800>;
	};

	touch_temp0: touch-temperature-sensor0 {
		compatible = "generic-adc-thermal";
		#thermal-sensor-cells = <0>;
		io-channels = <&adc_ts 0>;
		io-channel-names = "sensor-channel";
		temperature-lookup-table = <    (-40000) 736
						85000 474>;
	};

	touch_temp1: touch-temperature-sensor1 {
		compatible = "generic-adc-thermal";
		#thermal-sensor-cells = <0>;
		io-channels = <&adc_ts 7>;
		io-channel-names = "sensor-channel";
		temperature-lookup-table = <    (-40000) 826
						85000 609>;
	};

	vdiv_vaccu: voltage-divider-vaccu {
		compatible = "voltage-divider";
		io-channels = <&adc_ts 2>;
		output-ohms = <2500>;
		full-ohms = <64000>;
		#io-channel-cells = <0>;
	};
};

&audmux {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_audmux>;
	status = "okay";

	mux-ssi1 {
		fsl,audmux-port = <0>;
		fsl,port-config = <
			IMX_AUDMUX_V2_PTCR_SYN		0
			IMX_AUDMUX_V2_PTCR_TFSEL(2)	0
			IMX_AUDMUX_V2_PTCR_TCSEL(2)	0
			IMX_AUDMUX_V2_PTCR_TFSDIR	0
			IMX_AUDMUX_V2_PTCR_TCLKDIR IMX_AUDMUX_V2_PDCR_RXDSEL(2)
		>;
	};

	mux-pins3 {
		fsl,audmux-port = <2>;
		fsl,port-config = <
			IMX_AUDMUX_V2_PTCR_SYN IMX_AUDMUX_V2_PDCR_RXDSEL(0)
			0		       IMX_AUDMUX_V2_PDCR_TXRXEN
		>;
	};
};

&can1 {
	pinctrl-0 = <&pinctrl_can1 &pinctrl_can1phy>;
};

&clks {
	assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>;
	assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>;
};

&ecspi2 {
	cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ecspi2>;
	status = "okay";

	adc_ts: adc@0 {
		compatible = "ti,tsc2046e-adc";
		reg = <0>;
		pinctrl-0 = <&pinctrl_tsc>;
		pinctrl-names = "default";
		spi-max-frequency = <1000000>;
		interrupts-extended = <&gpio3 20 IRQ_TYPE_LEVEL_LOW>;
		#io-channel-cells = <1>;

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

		channel@1 {
			reg = <1>;
			settling-time-us = <700>;
			oversampling-ratio = <5>;
		};

		channel@3 {
			reg = <3>;
			settling-time-us = <700>;
			oversampling-ratio = <5>;
		};

		channel@4 {
			reg = <4>;
			settling-time-us = <700>;
			oversampling-ratio = <5>;
		};

		channel@5 {
			reg = <5>;
			settling-time-us = <700>;
			oversampling-ratio = <5>;
		};
	};
};

&i2c1 {
	sgtl5000: audio-codec@a {
		compatible = "fsl,sgtl5000";
		reg = <0xa>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_codec>;
		#sound-dai-cells = <0>;
		clocks = <&clks 201>;
		VDDA-supply = <&reg_3v3>;
		VDDIO-supply = <&reg_3v3>;
		VDDD-supply = <&reg_1v8>;
	};

	video@5c {
		compatible = "ti,tvp5150";
		reg = <0x5c>;

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

		port@0 {
			reg = <0>;

			tvp5150_comp0_in: endpoint {
				remote-endpoint = <&comp0_out>;
			};
		};

		/* Output port 2 is video output pad */
		port@2 {
			reg = <2>;

			tvp5151_to_ipu1_csi0_mux: endpoint {
				remote-endpoint = <&ipu1_csi0_mux_from_parallel_sensor>;
			};
		};
	};
};

&i2c3 {
	rtc@51 {
		compatible = "nxp,pcf8563";
		reg = <0x51>;
	};

	tsens0: temperature-sensor@70 {
		compatible = "ti,tmp103";
		reg = <0x70>;
		#thermal-sensor-cells = <0>;
	};

	gpio_pca: gpio@74 {
		compatible = "nxp,pca9539";
		reg = <0x74>;
		interrupts-extended = <&gpio4 5 IRQ_TYPE_LEVEL_LOW>;
		#gpio-cells = <2>;
		gpio-controller;
	};
};

&ipu1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_ipu1_csi0>;
	status = "okay";
};

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

&ipu1_csi0_mux_from_parallel_sensor {
	remote-endpoint = <&tvp5151_to_ipu1_csi0_mux>;
};

&pwm1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm1>;
	status = "okay";
};

&snvs_poweroff {
	status = "okay";
};

&snvs_pwrkey {
	status = "okay";
};

&ssi1 {
	status = "okay";
};

&usbh1 {
	status = "disabled";
};

&iomuxc {
	pinctrl_audmux: audmuxgrp {
		fsl,pins = <
			MX6QDL_PAD_CSI0_MCLK__CCM_CLKO1		0x030b0
			MX6QDL_PAD_CSI0_DAT7__AUD3_RXD		0x130b0
			MX6QDL_PAD_CSI0_DAT4__AUD3_TXC		0x130b0
			MX6QDL_PAD_CSI0_DAT5__AUD3_TXD		0x110b0
			MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS		0x130b0
		>;
	};

	pinctrl_can1phy: can1phy {
		fsl,pins = <
			/* CAN1_SR */
			MX6QDL_PAD_KEY_COL3__GPIO4_IO12		0x13070
			/* CAN1_TERM */
			MX6QDL_PAD_GPIO_0__GPIO1_IO00		0x1b0b0
		>;
	};

	pinctrl_codec: codecgrp {
		fsl,pins = <
			/* AUDIO_nRESET */
			MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21	0x1f0b0
		>;
	};

	pinctrl_ecspi2: ecspi2grp {
		fsl,pins = <
			MX6QDL_PAD_EIM_OE__ECSPI2_MISO		0x100b1
			MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK		0x100b1
			MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI		0x100b1
			MX6QDL_PAD_EIM_RW__GPIO2_IO26		0x000b1
		>;
	};

	pinctrl_ipu1_csi0: ipu1csi0grp {
		fsl,pins = <
			MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12	0x1b0b0
			MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13	0x1b0b0
			MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14	0x1b0b0
			MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15	0x1b0b0
			MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16	0x1b0b0
			MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17	0x1b0b0
			MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18	0x1b0b0
			MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19	0x1b0b0
			MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 0x1b0b0
			/* ITU656_nRESET */
			MX6QDL_PAD_GPIO_2__GPIO1_IO02		0x1b0b0
			/* ITU656_nPDN */
			MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20	0x1b0b0
		>;
	};

	pinctrl_ipu1_disp: ipudisp1grp {
		fsl,pins = <
			MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0xb0
			MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15	   0xb0

			MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0xb0
			MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0xb0
			MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0xb0
			MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0xb0
			MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0xb0
			MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0xb0
			MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0xb0
			MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0xb0

			MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0xb0
			MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0xb0
			MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0xb0
			MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0xb0
			MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0xb0
			MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0xb0
			MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0xb0
			MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0xb0

			MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0xb0
			MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0xb0
			MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0xb0
			MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0xb0
			MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0xb0
			MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0xb0
			MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0xb0
			MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0xb0
		>;
	};

	pinctrl_leds: ledsgrp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_8__GPIO1_IO08		0x1b0b0
		>;
	};

	pinctrl_pwm1: pwm1grp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_9__PWM1_OUT		0x1b0b0
		>;
	};

	pinctrl_reg_bl_12v0: 12blgrp {
		fsl,pins = <
			MX6QDL_PAD_GPIO_7__GPIO1_IO07		0x1b0b0
		>;
	};

	pinctrl_tsc: tscgrp {

		fsl,pins = <
			MX6QDL_PAD_EIM_D20__GPIO3_IO20		0x1b0b0
			MX6QDL_PAD_EIM_EB2__GPIO2_IO30		0x1b0b0
		>;
	};
};
