// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
/*
 * Device Tree Source for the R-Car V4H White Hawk CSI/DSI sub-board
 *
 * Copyright (C) 2022 Glider bv
 */

#include <dt-bindings/media/video-interfaces.h>

&csi40 {
	status = "okay";

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

		port@0 {
			reg = <0>;

			csi40_in: endpoint {
				bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
				clock-lanes = <0>;
				data-lanes = <1 2 3>;
				remote-endpoint = <&max96712_out0>;
			};
		};
	};
};

&csi41 {
	status = "okay";

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

		port@0 {
			reg = <0>;

			csi41_in: endpoint {
				bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
				clock-lanes = <0>;
				data-lanes = <1 2 3>;
				remote-endpoint = <&max96712_out1>;
			};
		};
	};
};

&i2c0 {
	pca9654_a: gpio@21 {
		compatible = "onnn,pca9654";
		reg = <0x21>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	pca9654_b: gpio@22 {
		compatible = "onnn,pca9654";
		reg = <0x22>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	eeprom@52 {
		compatible = "rohm,br24g01", "atmel,24c01";
		label = "csi-dsi-sub-board-id";
		reg = <0x52>;
		pagesize = <8>;
	};
};

&i2c1 {
	gmsl0: gmsl-deserializer@49 {
		compatible = "maxim,max96712";
		reg = <0x49>;
		enable-gpios = <&pca9654_a 0 GPIO_ACTIVE_HIGH>;

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

			port@4 {
				reg = <4>;
				max96712_out0: endpoint {
					bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
					clock-lanes = <0>;
					data-lanes = <1 2 3>;
					remote-endpoint = <&csi40_in>;
				};
			};
		};
	};

	gmsl1: gmsl-deserializer@4b {
		compatible = "maxim,max96712";
		reg = <0x4b>;
		enable-gpios = <&pca9654_b 0 GPIO_ACTIVE_HIGH>;

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

			port@4 {
				reg = <4>;
				max96712_out1: endpoint {
					bus-type = <MEDIA_BUS_TYPE_CSI2_CPHY>;
					clock-lanes = <0>;
					data-lanes = <1 2 3>;
					remote-endpoint = <&csi41_in>;
				};
			};
		};
	};
};

&isp0 {
	status = "okay";
};

&isp1 {
	status = "okay";
};

&vin00 {
	status = "okay";
};

&vin01 {
	status = "okay";
};

&vin02 {
	status = "okay";
};

&vin03 {
	status = "okay";
};

&vin04 {
	status = "okay";
};

&vin05 {
	status = "okay";
};

&vin06 {
	status = "okay";
};

&vin07 {
	status = "okay";
};

&vin08 {
	status = "okay";
};

&vin09 {
	status = "okay";
};

&vin10 {
	status = "okay";
};

&vin11 {
	status = "okay";
};

&vin12 {
	status = "okay";
};

&vin13 {
	status = "okay";
};

&vin14 {
	status = "okay";
};

&vin15 {
	status = "okay";
};