// 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 = <20>;
		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>;
		};

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

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

	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-inverted-x;
		touchscreen-inverted-y;
		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
		>;
	};
};
