/*
 * Copyright 2018 NXP
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#include "fsl-imx8mq-evk.dts"

/delete-node/ &ov5640_mipi;
/delete-node/ &ov5640_mipi2;
/delete-node/ &synaptics_dsx_ts;
/delete-node/ &adv_bridge;

&i2c1 {
	ov5640_mipi: ov5640_mipi@1c {
		compatible = "ovti,ov5640_mipi";
		reg = <0x1c>;
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_csi1_pwn>, <&pinctrl_csi_rst>;
		clocks = <&clk IMX8MQ_CLK_CLKO2>;
		clock-names = "csi_mclk";
		assigned-clocks = <&clk IMX8MQ_CLK_CLKO2>;
		assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_200M>;
		assigned-clock-rates = <20000000>;
		csi_id = <0>;
		pwn-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
		mclk = <20000000>;
		mclk_source = <0>;
		port {
			ov5640_mipi1_ep: endpoint {
				remote-endpoint = <&mipi1_sensor_ep>;
			};
		};
	};

	ov5640_mipi2: ov5640_mipi2@2c {
		compatible = "ovti,ov5640_mipi";
		reg = <0x2c>;
		status = "okay";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_csi2_pwn>;
		clocks = <&clk IMX8MQ_CLK_CLKO2>;
		clock-names = "csi_mclk";
		assigned-clocks = <&clk IMX8MQ_CLK_CLKO2>;
		assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_200M>;
		assigned-clock-rates = <20000000>;
		csi_id = <1>;
		pwn-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
		mclk = <20000000>;
		mclk_source = <0>;
		port {
			ov5640_mipi2_ep: endpoint {
				remote-endpoint = <&mipi2_sensor_ep>;
			};
		};
	};

	synaptics_dsx_ts: synaptics_dsx_ts@20 {
		compatible = "synaptics_dsx";
		reg = <0x20>;
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_i2c1_dsi_ts_int>;
		interrupt-parent = <&gpio5>;
		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
		synaptics,diagonal-rotation;
		status = "disabled";
	};

	adv_bridge: adv7535@3d {
		compatible = "adi,adv7533";
		reg = <0x3d>;
		adi,addr-cec = <0x3b>;
		adi,dsi-lanes = <4>;
		pinctrl-0 = <&pinctrl_i2c1_dsi_ts_int>;
		interrupt-parent = <&gpio5>;
		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;

		status = "disabled";

		port {
			adv7535_in: endpoint {
				remote-endpoint = <&mipi_dsi_bridge_adv>;
			};
		};
	};
};

&i2c2 {
	status = "disabled";
};
