Trace log mistakes mipi

Hello,

I am trying to bring up a mipi sensor, and I am getting this mistakes in the trace log.

Here is the device tree I am using:

/*
 * Copyright (c) 2015-2020, NVIDIA CORPORATION.  All rights reserved.
 *
 * 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.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "dt-bindings/clock/tegra194-clock.h"

/ {
        host1x {
                vi@15c10000  {
                        num-channels = <1>;
                        status="okay";
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                vi_port0: port@0 {
                                        reg = <0>;
                                        rbpcv2_ov5693_vi_in0: endpoint {
                                                port-index = <0>;
                                                bus-width = <2>;
                                                remote-endpoint = <&rbpcv2_ov5693_csi_out0>;
                                        };
                                };
                        };
                };

                nvcsi@15a00000 {
                        num-channels = <1>;
                        status="okay";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        csi_chan0: channel@0 {
                                reg = <0>;
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        csi_chan0_port0: port@0 {
                                                reg = <0>;
                                                rbpcv2_ov5693_csi_in0: endpoint@0 {
                                                        port-index = <0>;
                                                        bus-width = <2>;
                                                        remote-endpoint = <&rbpcv2_ov5693_out0>;
                                                };
                                        };
                                        csi_chan0_port1: port@1 {
                                                reg = <1>;
                                                rbpcv2_ov5693_csi_out0: endpoint@1 {
                                                        remote-endpoint = <&rbpcv2_ov5693_vi_in0>;
                                                };
                                        };
                                };
                        };
                };
        };
       i2c@3180000 {
                udv_cam0: rbpcv2_ov5693_a@36 {
                        compatible = "nvidia,ov5693";
                        reg = <0x36>;
                        devnode = "video0";
                        physical_w = "3.680";
                        physical_h = "2.760";
                        clocks = <&bpmp_clks TEGRA194_CLK_EXTPERIPH1>,
                                 <&bpmp_clks TEGRA194_CLK_PLLP_OUT0>;
                        clock-names = "extperiph1", "pllp_grtba";
                        mclk = "extperiph1";
                        clock-frequency = <24000000>;
                        status = "okay";

                        mode0 {
                                mclk_khz = "24000";
                                num_lanes = "2";
                                tegra_sinterface = "serial_a";
                                phy_mode = "DPHY";
                                discontinuous_clk = "no";
                                dpcm_enable = "false";
                                cil_settletime = "0";

                                active_w = "1920";
                                active_h = "1080";
                                pixel_t="yuv_yuyv";
                                pixel_phase="yuyv";
                                dynamic_pixel_bit_depth = "8";
                                csi_pixel_bit_depth = "8";
                                readout_orientation = "0";
                                line_length = "2048";
                                inherent_gain = "1";
                                mclk_multiplier = "9.33";
                                pix_clk_hz = "124416000"; //124416000
                                serdes_pix_clk_hz= "124416000";

                                gain_factor = "10";
                                min_gain_val = "10"; /* 1.00x */
                                max_gain_val = "160"; /* 10.66x */
                                step_gain_val = "1";
                                default_gain = "10"; /* 1.00x */
                                min_hdr_ratio = "1";
                                max_hdr_ratio = "1";
                                framerate_factor = "1000000";
                                min_framerate = "1000000"; /* 2.0 fps */
                                max_framerate = "60000000"; /* 30.0 fps */
                                step_framerate = "1";
                                default_framerate = "60000000"; /* 30.0 fps */
                                exposure_factor = "1000000";
                                min_exp_time = "34"; /* us */
                                max_exp_time = "550385"; /* us */
                                step_exp_time = "1";
                                default_exp_time = "33334"; /* us */
                                embedded_metadata_height = "0";
                        };

                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                port@0 {
                                        reg = <0>;
                                        rbpcv2_ov5693_out0: endpoint {
                                                port-index = <0>;
                                                bus-width = <2>;
                                                remote-endpoint = <&rbpcv2_ov5693_csi_in0>;
                                        };
                                };
                        };
                };
        };
};
/ {
        tcp: tegra-camera-platform {
                num_csi_lanes = <2>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <16>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <750000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

                modules {
                        cam_module0: module0 {
                                status="okay";
                                badge = "jakku_front_RBP194";
                                position = "front";
                                orientation = "1";
                                cam_module0_drivernode0: drivernode0 {
                                        pcl_id = "v4l2_sensor";
                                        devname = "ov5693 2-0036";
                                        proc-device-tree = "/proc/device-tree/i2c@3180000/rbpcv2_ov5693_a@36";
                                };
                        };
                };
        };
};

Any clue what could be causing that issue?

The signal comes from an FPGA, and the i2c part is ommited, as it is always delivering image.

Configuration is 2 lane MIPI, YUV 422 8 bit, 1200 line rate.

I do get the node under /dev/video0 and it looks correctly configured (i register the device via Jetson IO tool)

Here is the pipeline used:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,forma=YUYV,width=1920,height=1080,framerate=60/1 ! nvvidconv ! ‘video/x-raw(memory:NVMM),format=NV12’ ! nvoverlaysink

  1. Boost the clocks to try.
sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee  /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate
  1. The CHANSEL_FAULT tell the PIXEL_SHORT_LINE it could be the output resize less than 1920x1080, or have embedded data but device tree didn’t define the embedded_metadata_height incorrect.

Hi,

boosting the clocks did not make it work. We are currently probing the signal, and we can see the output data does not much what is being supposed to output. I will come back when it is solved.

I have some further questions regarding device tree settings and device registration:

  • My MIPI signal comes with a 600 MHz clock. I asssume I need to set this in the pixel_clk_hz right?

  • WHat is the dynamic pixel bit depth? Does it always need to be equal to csi_pixel_bit_depth?

  • For YUV 422 8 bit signal, csi_pixel_bit_depth should be 16 right? For YUV 422 10 bit would be the value? 20? Is this last format supported

  • What is exactly this part used for?
    image

  • Finally, one question regarding device registration. With this device tree I attached, I get the /dev/video0 withouth having to do an overlay file and use the jetson-io.py file. Why is this? With other driver, in the past, I would not get the /dev/video0, so therefore after doing the registration with that python script then it worked. I kind of do not really understand what is going on there.

Thanks

Have a check the sensor programing guide for the detail information.

https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/CameraDevelopment/SensorSoftwareDriverProgramming.html#

Thanks