162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2013 Gateworks Corporation
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/dts-v1/;
762306a36Sopenharmony_ci#include "imx6q.dtsi"
862306a36Sopenharmony_ci#include "imx6qdl-gw54xx.dtsi"
962306a36Sopenharmony_ci#include <dt-bindings/media/tda1997x.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	model = "Gateworks Ventana i.MX6 Dual/Quad GW54XX";
1362306a36Sopenharmony_ci	compatible = "gw,imx6q-gw54xx", "gw,ventana", "fsl,imx6q";
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	sound-digital {
1662306a36Sopenharmony_ci		compatible = "simple-audio-card";
1762306a36Sopenharmony_ci		simple-audio-card,name = "tda1997x-audio";
1862306a36Sopenharmony_ci		simple-audio-card,format = "i2s";
1962306a36Sopenharmony_ci		simple-audio-card,bitclock-master = <&sound_codec>;
2062306a36Sopenharmony_ci		simple-audio-card,frame-master = <&sound_codec>;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci		sound_cpu: simple-audio-card,cpu {
2362306a36Sopenharmony_ci			sound-dai = <&ssi2>;
2462306a36Sopenharmony_ci		};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci		sound_codec: simple-audio-card,codec {
2762306a36Sopenharmony_ci			sound-dai = <&hdmi_receiver>;
2862306a36Sopenharmony_ci		};
2962306a36Sopenharmony_ci	};
3062306a36Sopenharmony_ci};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci&i2c3 {
3362306a36Sopenharmony_ci	adv7180: camera@20 {
3462306a36Sopenharmony_ci		compatible = "adi,adv7180";
3562306a36Sopenharmony_ci		pinctrl-names = "default";
3662306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_adv7180>;
3762306a36Sopenharmony_ci		reg = <0x20>;
3862306a36Sopenharmony_ci		powerdown-gpios = <&gpio3 31 GPIO_ACTIVE_LOW>;
3962306a36Sopenharmony_ci		interrupt-parent = <&gpio3>;
4062306a36Sopenharmony_ci		interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci		port {
4362306a36Sopenharmony_ci			adv7180_to_ipu2_csi1_mux: endpoint {
4462306a36Sopenharmony_ci				remote-endpoint = <&ipu2_csi1_mux_from_parallel_sensor>;
4562306a36Sopenharmony_ci				bus-width = <8>;
4662306a36Sopenharmony_ci			};
4762306a36Sopenharmony_ci		};
4862306a36Sopenharmony_ci	};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	hdmi_receiver: hdmi-receiver@48 {
5162306a36Sopenharmony_ci		compatible = "nxp,tda19971";
5262306a36Sopenharmony_ci		pinctrl-names = "default";
5362306a36Sopenharmony_ci		pinctrl-0 = <&pinctrl_tda1997x>;
5462306a36Sopenharmony_ci		reg = <0x48>;
5562306a36Sopenharmony_ci		interrupt-parent = <&gpio1>;
5662306a36Sopenharmony_ci		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
5762306a36Sopenharmony_ci		DOVDD-supply = <&reg_3p3v>;
5862306a36Sopenharmony_ci		AVDD-supply = <&sw4_reg>;
5962306a36Sopenharmony_ci		DVDD-supply = <&sw4_reg>;
6062306a36Sopenharmony_ci		#sound-dai-cells = <0>;
6162306a36Sopenharmony_ci		nxp,audout-format = "i2s";
6262306a36Sopenharmony_ci		nxp,audout-layout = <0>;
6362306a36Sopenharmony_ci		nxp,audout-width = <16>;
6462306a36Sopenharmony_ci		nxp,audout-mclk-fs = <128>;
6562306a36Sopenharmony_ci		/*
6662306a36Sopenharmony_ci		 * The 8bpp YUV422 semi-planar mode outputs CbCr[11:4]
6762306a36Sopenharmony_ci		 * and Y[11:4] across 16bits in the same cycle
6862306a36Sopenharmony_ci		 * which we map to VP[15:08]<->CSI_DATA[19:12]
6962306a36Sopenharmony_ci		 */
7062306a36Sopenharmony_ci		nxp,vidout-portcfg =
7162306a36Sopenharmony_ci			/*G_Y_11_8<->VP[15:12]<->CSI_DATA[19:16]*/
7262306a36Sopenharmony_ci			< TDA1997X_VP24_V15_12 TDA1997X_G_Y_11_8 >,
7362306a36Sopenharmony_ci			/*G_Y_7_4<->VP[11:08]<->CSI_DATA[15:12]*/
7462306a36Sopenharmony_ci			< TDA1997X_VP24_V11_08 TDA1997X_G_Y_7_4 >,
7562306a36Sopenharmony_ci			/*R_CR_CBCR_11_8<->VP[07:04]<->CSI_DATA[11:08]*/
7662306a36Sopenharmony_ci			< TDA1997X_VP24_V07_04 TDA1997X_R_CR_CBCR_11_8 >,
7762306a36Sopenharmony_ci			/*R_CR_CBCR_7_4<->VP[03:00]<->CSI_DATA[07:04]*/
7862306a36Sopenharmony_ci			< TDA1997X_VP24_V03_00 TDA1997X_R_CR_CBCR_7_4 >;
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci		port {
8162306a36Sopenharmony_ci			tda1997x_to_ipu1_csi0_mux: endpoint {
8262306a36Sopenharmony_ci				remote-endpoint = <&ipu1_csi0_mux_from_parallel_sensor>;
8362306a36Sopenharmony_ci				bus-width = <16>;
8462306a36Sopenharmony_ci				hsync-active = <1>;
8562306a36Sopenharmony_ci				vsync-active = <1>;
8662306a36Sopenharmony_ci				data-active = <1>;
8762306a36Sopenharmony_ci			};
8862306a36Sopenharmony_ci		};
8962306a36Sopenharmony_ci	};
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci&ipu1_csi0_from_ipu1_csi0_mux {
9362306a36Sopenharmony_ci	bus-width = <16>;
9462306a36Sopenharmony_ci};
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci&ipu1_csi0_mux_from_parallel_sensor {
9762306a36Sopenharmony_ci	remote-endpoint = <&tda1997x_to_ipu1_csi0_mux>;
9862306a36Sopenharmony_ci	bus-width = <16>;
9962306a36Sopenharmony_ci};
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci&ipu1_csi0 {
10262306a36Sopenharmony_ci	pinctrl-names = "default";
10362306a36Sopenharmony_ci	pinctrl-0 = <&pinctrl_ipu1_csi0>;
10462306a36Sopenharmony_ci};
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci&ipu2_csi1_from_ipu2_csi1_mux {
10762306a36Sopenharmony_ci	bus-width = <8>;
10862306a36Sopenharmony_ci};
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci&ipu2_csi1_mux_from_parallel_sensor {
11162306a36Sopenharmony_ci	remote-endpoint = <&adv7180_to_ipu2_csi1_mux>;
11262306a36Sopenharmony_ci	bus-width = <8>;
11362306a36Sopenharmony_ci};
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci&ipu2_csi1 {
11662306a36Sopenharmony_ci	pinctrl-names = "default";
11762306a36Sopenharmony_ci	pinctrl-0 = <&pinctrl_ipu2_csi1>;
11862306a36Sopenharmony_ci};
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci&sata {
12162306a36Sopenharmony_ci	status = "okay";
12262306a36Sopenharmony_ci};
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci&iomuxc {
12562306a36Sopenharmony_ci	pinctrl_adv7180: adv7180grp {
12662306a36Sopenharmony_ci		fsl,pins = <
12762306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D30__GPIO3_IO30          0x0001b0b0
12862306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D31__GPIO3_IO31          0x4001b0b0
12962306a36Sopenharmony_ci		>;
13062306a36Sopenharmony_ci	};
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	pinctrl_ipu1_csi0: ipu1_csi0grp {
13362306a36Sopenharmony_ci		fsl,pins = <
13462306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04		0x1b0b0
13562306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05		0x1b0b0
13662306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06		0x1b0b0
13762306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07		0x1b0b0
13862306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08		0x1b0b0
13962306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09		0x1b0b0
14062306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10		0x1b0b0
14162306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11		0x1b0b0
14262306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12		0x1b0b0
14362306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13		0x1b0b0
14462306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14		0x1b0b0
14562306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15		0x1b0b0
14662306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16		0x1b0b0
14762306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17		0x1b0b0
14862306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18		0x1b0b0
14962306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19		0x1b0b0
15062306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC		0x1b0b0
15162306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK	0x1b0b0
15262306a36Sopenharmony_ci			MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC		0x1b0b0
15362306a36Sopenharmony_ci		>;
15462306a36Sopenharmony_ci	};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci	pinctrl_ipu2_csi1: ipu2_csi1grp {
15762306a36Sopenharmony_ci		fsl,pins = <
15862306a36Sopenharmony_ci			MX6QDL_PAD_EIM_EB2__IPU2_CSI1_DATA19    0x1b0b0
15962306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D16__IPU2_CSI1_DATA18    0x1b0b0
16062306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D18__IPU2_CSI1_DATA17    0x1b0b0
16162306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D19__IPU2_CSI1_DATA16    0x1b0b0
16262306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D20__IPU2_CSI1_DATA15    0x1b0b0
16362306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D26__IPU2_CSI1_DATA14    0x1b0b0
16462306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D27__IPU2_CSI1_DATA13    0x1b0b0
16562306a36Sopenharmony_ci			MX6QDL_PAD_EIM_A17__IPU2_CSI1_DATA12    0x1b0b0
16662306a36Sopenharmony_ci			MX6QDL_PAD_EIM_D29__IPU2_CSI1_VSYNC     0x1b0b0
16762306a36Sopenharmony_ci			MX6QDL_PAD_EIM_EB3__IPU2_CSI1_HSYNC     0x1b0b0
16862306a36Sopenharmony_ci			MX6QDL_PAD_EIM_A16__IPU2_CSI1_PIXCLK    0x1b0b0
16962306a36Sopenharmony_ci		>;
17062306a36Sopenharmony_ci	};
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci	pinctrl_tda1997x: tda1997xgrp {
17362306a36Sopenharmony_ci		fsl,pins = <
17462306a36Sopenharmony_ci			MX6QDL_PAD_GPIO_7__GPIO1_IO07	0x1b0b0
17562306a36Sopenharmony_ci		>;
17662306a36Sopenharmony_ci	};
17762306a36Sopenharmony_ci};
178