MIPI CSI-2 Camera Gstreamer error - Virtual channels with TP2855

Hi @alvaro.tx ,

The GStreamer pipeline I used is as follows:

// 1 channel
gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! fpsdisplaysink video-sink=waylandsink text-overlay=false sync=false -v
// 4 channel
gst-launch-1.0 imxcompositor_g2d name=comp \
  sink_0::xpos=0 sink_0::ypos=0 sink_0::width=960 sink_0::height=540 \
  sink_1::xpos=0 sink_1::ypos=540 sink_1::width=960 sink_1::height=540 \
  sink_2::xpos=960 sink_2::ypos=0 sink_2::width=960 sink_2::height=540 \
  sink_3::xpos=960 sink_3::ypos=540 sink_3::width=960 sink_3::height=540 ! \
  video/x-raw,framerate=30/1 ! fpsdisplaysink video-sink=waylandsink text-overlay=false sync=false -v \
  v4l2src device=/dev/video2 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! comp.sink_0 \
  v4l2src device=/dev/video3 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! comp.sink_1 \
  v4l2src device=/dev/video4 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! comp.sink_2 \
  v4l2src device=/dev/video5 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! comp.sink_3

The device tree I used is as follows:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Copyright 2022 Toradex
 */

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>

/ {
        compatible = "toradex,apalis-imx8";
};

/* Apalis I2C3 (CAM) */
&i2c3 {
        #address-cells = <1>;
        #size-cells = <0>;
        status = "okay";

        tp2855_mipi@44 {
                compatible = "techpoint,tp2855_mipi";
                reg = <0x44>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_gpio1>;
                clocks = <&clk_dummy>;
                clock-names = "capture_mclk";
                mclk = <27000000>;
                mclk_source = <0>;
                rst-gpios = <&lsio_gpio0 8 GPIO_ACTIVE_HIGH>;   /* Apalis GPIO1 */
                virtual-channel;
                status = "okay";

                port {
                        tp2855_1_ep: endpoint {
                                remote-endpoint = <&mipi_csi1_ep>;
                                data-lanes = <1 2 3 4>;
                        };
                };
        };
};

/* <Input MIPI_VCx Output>
Input:  0-DC0, 1-DC1, 2-MIPI CSI0, 3-MIPI CSI1, 4-HDMI, 5-MEM
VCx:    0-VC0, 1-VC1, 2-VC2, 3-VC3, MIPI CSI only
Output: 0-DC0, 1-DC1, 2-MEM */
&isi_4 {
        interface = <3 0 2>;
        status = "okay";

        cap_device {
                status = "okay";
        };
};

&isi_5 {
        interface = <3 1 2>;
        status = "okay";

        cap_device {
                status = "okay";
        };
};

&isi_6 {
        interface = <3 2 2>;
        status = "okay";

        cap_device {
                status = "okay";
        };
};

&isi_7 {
        interface = <3 3 2>;
        status = "okay";

        cap_device {
                status = "okay";
        };
};

&mipi_csi_1 {
        #address-cells = <1>;
        #size-cells = <0>;
        virtual-channel;
        status = "okay";

        /* Camera 1 MIPI CSI-2 (CSIS0) */
        port@1 {
                reg = <1>;

                mipi_csi1_ep: endpoint {
                        remote-endpoint = <&tp2855_1_ep>;
                        data-lanes = <1 2 3 4>;
                };
        };
};

I referred to the NXP Community for the device tree I provided last time:

Best regards,
sjjin

1 Like