We are trying to connect the MCIMX8QXP-CPU to a video decoder board based on the ISL79987 video decoder, over the MIPI CSI interface.
The hardware of the ISL79987 is verified by the Renesas. So far, we are only able to do I2C communication with the ISL79987.
We have sought Renesas help on this and beyond a certain point they have asked us to seek help from NXP as well, as the BSP is from NXP
kernel version we tried - 6.1.36, 5.10.52, 5.4.70
We are able to detect whether the camera connected or not through,
root@imx8qxpc0mek:~# v4l2-ctl -d /dev/v4l-subdev1 --get-detected-standard
Video Standard = 0x000000ff
PAL-B/B1/G/H/I/D/D1/K
But there is no communication through MIPI port, we tried different method to bring-up,
Method 1:
Tried the v6.1.36 driver - https://elixir.bootlin.com/linux/v6.1.36/source/drivers/media/i2c/isl7998x.c
Method 2:
followed,
ISL79987 and adv7180 de-interlace driver for iMX8QXP boards - NXP Community
Method 3:
Followed Renesas suggestions, they provided their driver but that seems to be dead end too
We request nxp to look into this and give us the reasoning behind why there is no sink pad available in mxc-mipi-csi2.0. Moreover, there's no link between source isl79987 to sink mxc-mipi-csi2.0

DTS - v5.4.70
&cameradev {
/delete-property/parallel_csi;
status = "okay";
};
¶llel_csi {
status = "disabled";
};
&isi_0 {
interface = <2 0 2>;
deinterlace_blending;
ntsc_top = <0>; /* 0 for ISL79987. */
status = "okay";
};
&isi_1 {
interface = <2 1 2>;
deinterlace_mode = <2>; /* 0 ~ 1: No de-interlacing,
2: Odd even weave, 3: Even odd weave
4: Odd even blending, 5: Even odd blending
6 ~ 7: Line doubling */
ntsc_top = <0>; /* 0 for ISL79987. */
status = "okay";
};
&isi_2 {
interface = <2 2 2>;
deinterlace_mode = <2>; /* 0 ~ 1: No de-interlacing,
2: Odd even weave, 3: Even odd weave
4: Odd even blending, 5: Even odd blending
6 ~ 7: Line doubling */
ntsc_top = <0>; /* 0 for ISL79987. */
status = "okay";
};
&isi_3 {
interface = <2 3 2>;
deinterlace_mode = <2>; /* 0 ~ 1: No de-interlacing,
2: Odd even weave, 3: Even odd weave
4: Odd even blending, 5: Even odd blending
6 ~ 7: Line doubling */
ntsc_top = <0>; /* 0 for ISL79987. */
status = "okay";
};
&isi_4 {
interface = <2 0 2>;
deinterlace_mode = <4>; /* 0 ~ 1: No de-interlacing,
2: Odd even weave, 3: Even odd weave
4: Odd even blending, 5: Even odd blending
6 ~ 7: Line doubling */
ntsc_top = <0>; /* 0 for ISL79987. */
status = "okay";
};
&isi_5 {
status = "disabled";
};
&isi_6 {
status = "disabled";
};
&isi_7 {
status = "disabled";
};
&mipi_csi_0 {
virtual-channel;
status = "okay";
/delete-node/port@0;
port@0 {
reg = <0>;
mipi_csi0_ep: endpoint {
remote-endpoint = <&isl7998x_mipi_ep>;
data-lanes = <1 2>;
};
};
};
&i2c1 {
i2c-switch@71 {
i2c@1{
clock-frequency = <100000>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
isl7998x: isl7998x@44 {
compatible = "intersil,isl7998x";
reg = <0x44>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_isl7998x0>;
clocks = <&clk_dummy>;
clock-names = "capture_mclk";
mclk = <27000000>;
mclk_source = <0>;
pwn-gpios = <&lsio_gpio3 7 GPIO_ACTIVE_LOW>;
rst-gpios = <&lsio_gpio3 8 GPIO_ACTIVE_HIGH>;
virtual-channel;
status = "okay";
port {
isl7998x_mipi_ep: endpoint {
remote-endpoint = <&mipi_csi0_ep>;
};
};
};
};
i2c@3{
/delete-node/ isl29023@44;
};
};
};
&i2c_mipi_csi0 {
/delete-node/max9286_mipi@6a;
};
Note: We didn't use i2c_mipi_csi0 as it seems faulty so we utilised the i2c1 and re-routed the board as per our requirement and managed to establish i2c communication successfully!