Jetson AGX Xavier imx185 vi error when capturing frames

Hi nvidia developvers
I use csi without i2c to get the streaming from FPGA.
The format is 1920*1080 30fps, RGB888, 4lanes
I change the driver - imx185.c to adapt.
Now ,i can get the capture from fpga, but the program working few seconds then report error about vi.
I remove the code all about the i2c in imx185.c
Below i will show all my dts and demsg

my verision is 
root@dev-desktop:~/lab# cat /etc/nv_tegra_release
# R32 (release), REVISION: 5.1, GCID: 26202423, BOARD: t186ref, EABI: aarch64, DATE: Fri Feb 19 16:50:29 UTC 2021

1 - tegra194-camera-imx185-a00.dtsi

/ {
	host1x {
		vi@15c10000 {
			num-channels = <1>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					liimx185_vi_in0: endpoint {
						port-index = <0>;
						bus-width = <4>;
						remote-endpoint = <&liimx185_csi_out0>;
					};
				};
			};
		};

		nvcsi@15a00000 {
			num-channels = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx185_csi_in0: endpoint@0 {
							port-index = <0>;
							bus-width = <4>;
							remote-endpoint = <&liimx185_imx185_out0>;
						};
					};
					port@1 {
						reg = <1>;
						liimx185_csi_out0: endpoint@1 {
							remote-endpoint = <&liimx185_vi_in0>;
						};
					};
				};
			};
		};
	};

	i2c@3180000 {
		tca9546@70 {
			i2c@0 {
			imx185_a@1a {
				compatible = "nvidia,imx185";

				reg = <0x1a>;
				devnode = "video0";

				/* Physical dimensions of sensor */
				physical_w = "15.0";
				physical_h = "12.5";

				sensor_model ="imx185";
				/* Define any required hw resources needed by driver */
				/* ie. clocks, io pins, power sources */

				/* Defines number of frames to be dropped by driver internally after applying */
				/* sensor crop settings. Some sensors send corrupt frames after applying */
				/* crop co-ordinates */
				post_crop_frame_drop = "0";

				/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
				use_decibel_gain = "true";

				/* if true, delay gain setting by one frame to be in sync with exposure */
				delayed_gain = "true";

				/* enable CID_SENSOR_MODE_ID for sensor modes selection */
				use_sensor_mode_id = "true";

				/* WAR to prevent banding by reducing analog gain. Bug 2229902 */
				limit_analog_gain = "true";

				
				mode0 {/*mode IMX185_MODE_1920X1080_CROP_30FPS*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					//dynamic_pixel_bit_depth = "12";
					//csi_pixel_bit_depth = "12";
					//mode_type = "bayer";
					//pixel_phase = "rggb";
					pixel_t = "rgb_rgb88824";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "2200";
					inherent_gain = "1";
					mclk_multiplier = "2";
					pix_clk_hz = "74250000";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "480"; /* 48dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "30000000"; /* 30 */
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "30"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "33334";/* us */
					embedded_metadata_height = "1";
				};
				mode1 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_30FPS*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "2640";
					inherent_gain = "1";
					mclk_multiplier = "2.4";
					pix_clk_hz = "89100000";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "480"; /* 48dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "30000000"; /* 30 */
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "30"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "33334";/* us */
					embedded_metadata_height = "1";
				};

				mode2 {/*mode IMX185_MODE_1920X1080_CROP_60FPS*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "12";
					csi_pixel_bit_depth = "12";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "2200";
					inherent_gain = "1";
					mclk_multiplier = "4";
					pix_clk_hz = "148500000";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "480"; /* 48dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "60000000"; /* 60 */
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "30"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};

				mode3 {/*mode IMX185_MODE_1920X1080_CROP_10BIT_60FPS*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "2640";
					inherent_gain = "1";
					mclk_multiplier = "4.8";
					pix_clk_hz = "178200000";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "480"; /* 48dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "60000000"; /* 60 */
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "30"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode4 {/*mode IMX185_MODE_1920X1080_CROP_HDR_30FPS*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "16";
					csi_pixel_bit_depth = "12";
					mode_type = "bayer_wdr_pwl";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "2200";
					inherent_gain = "1";
					mclk_multiplier = "2";
					pix_clk_hz = "74250000";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "120"; /* 12dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "16";
					max_hdr_ratio = "16";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "30000000"; /* 30 */
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "2433"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "33334";/* us */
					embedded_metadata_height = "1";

					/* WDR related settings */
					num_control_point = "4";
					control_point_x_0 = "0";
					control_point_x_1 = "2048";
					control_point_x_2 = "16384";
					control_point_x_3 = "65536";
					control_point_y_0 = "0";
					control_point_y_1 = "2048";
					control_point_y_2 = "2944";
					control_point_y_3 = "3712";
				};
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx185_imx185_out0: endpoint {
							port-index = <0>;
							bus-width = <4>;
							remote-endpoint = <&liimx185_csi_in0>;
							};
						};
					};
				};
			};
		};
	};
};

/ {

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		
		num_csi_lanes = <4>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

		modules {
			module0 {
				badge = "imx185_bottom_liimx185";
				position = "bottom";
				orientation = "0";
				drivernode0 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_sensor";
					/* Driver v4l2 device name */
					devname = "imx185 30-001a";
					/* Declare the device-tree hierarchy to driver instance */
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a";
				};
			};
		};
	};
};

2 - tegra194-p2822-0000-camera-imx185-a00.dtsi

#include <t19x-common-modules/tegra194-camera-imx185-a00.dtsi>
#include "dt-bindings/clock/tegra194-clock.h"

#define CAM0_RST_L	TEGRA194_MAIN_GPIO(H, 3)
#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)

/* camera control gpio definitions */

/ {
	gpio@2200000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <CAM0_RST_L 0>;
			label = "cam0-rst";
		};
	};

	i2c@3180000 {
		tca9546@70 {
			compatible = "nxp,pca9546";
			reg = <0x70>;
			#address-cells = <1>;
			#size-cells = <0>;
			skip_mux_detect = "yes";
			vcc-supply = <&p2822_vdd_1v8_cvb>;
			vcc_lp = "vcc";
			force_bus_start = <CAMERA_I2C_MUX_BUS(0)>;

			i2c@0 {
				reg = <0>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				pca9570_a@24 {
					compatible = "nvidia,pca9570";
					reg = <0x24>;
					channel = "a";
					drive_ic = "DRV8838";
				};

				imx185_a@1a {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
					clocks = <&bpmp_clks TEGRA194_CLK_EXTPERIPH1>,
							 <&bpmp_clks TEGRA194_CLK_EXTPERIPH1>;
					clock-names = "extperiph1", "pllp_grtba";
					mclk = "extperiph1";
					reset-gpios = <&tegra_main_gpio CAM0_RST_L GPIO_ACTIVE_HIGH>;
				};
			};
		};
	};
};

3 - use the command

gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw, width=(int)1920, height=(int)1080, format=(string)BGRA, framerate=(fraction)30/1' ! videoconvert ! ximagesink

4-imx185.c

/*
 * imx185.c - imx185 sensor driver
 */
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/gpio.h>
#include <linux/module.h>
#include <linux/seq_file.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_gpio.h>

#include <media/tegra_v4l2_camera.h>
#include <media/tegracam_core.h>
#include "imx185_mode_tbls.h"
#define CREATE_TRACE_POINTS
#include <trace/events/imx185.h>


#define label	"imx185: zp: "
#define pri_fmt(fmt) label fmt
#define pri_line() \
	printk(label "func[%s] line[%d]\n", __FUNCTION__, __LINE__)
#define pri_ok(fmt, ...) \
	printk(KERN_ERR label "[OK]: " "func[%s] line[%d]->|OK| " fmt,\
		 __FUNCTION__, __LINE__, ##__VA_ARGS__)
#define pri_err(fmt, ...) \
	printk(KERN_ERR label "[ERR]: " "func[%s] line[%d]->|ERR| " fmt,\
		 __FUNCTION__, __LINE__, ##__VA_ARGS__)
#define pri_all(fmt, ...) \
	printk(label " func[%s] line[%d]->|| " fmt ,\
		 __FUNCTION__, __LINE__, ##__VA_ARGS__)



#define IMX185_MIN_FRAME_LENGTH	(1125)
#define IMX185_MAX_FRAME_LENGTH	(0x1FFFF)
#define IMX185_MIN_SHS1_1080P_HDR	(5)
#define IMX185_MIN_SHS2_1080P_HDR	(82)
#define IMX185_MAX_SHS2_1080P_HDR	(IMX185_MAX_FRAME_LENGTH - 5)
#define IMX185_MAX_SHS1_1080P_HDR	(IMX185_MAX_SHS2_1080P_HDR / 16)

#define IMX185_FRAME_LENGTH_ADDR_MSB		0x301A
#define IMX185_FRAME_LENGTH_ADDR_MID		0x3019
#define IMX185_FRAME_LENGTH_ADDR_LSB		0x3018
#define IMX185_COARSE_TIME_SHS1_ADDR_MSB	0x3022
#define IMX185_COARSE_TIME_SHS1_ADDR_MID	0x3021
#define IMX185_COARSE_TIME_SHS1_ADDR_LSB	0x3020
#define IMX185_COARSE_TIME_SHS2_ADDR_MSB	0x3025
#define IMX185_COARSE_TIME_SHS2_ADDR_MID	0x3024
#define IMX185_COARSE_TIME_SHS2_ADDR_LSB	0x3023
#define IMX185_GAIN_ADDR					0x3014
#define IMX185_GROUP_HOLD_ADDR				0x3001
#define IMX185_SW_RESET_ADDR			0x3003
#define IMX185_ANALOG_GAIN_LIMIT_ADDR			0x3012
#define IMX185_ANALOG_GAIN_LIMIT_VALUE			0x0f


#define IMX185_FUSE_ID_ADDR	0x3382
#define IMX185_FUSE_ID_SIZE	6
#define IMX185_FUSE_ID_STR_SIZE	(IMX185_FUSE_ID_SIZE * 2)

static const struct of_device_id imx185_of_match[] = {
	{ .compatible = "nvidia,imx185",},
	{ },
};
MODULE_DEVICE_TABLE(of, imx185_of_match);

static const u32 ctrl_cid_list[] = {
	TEGRA_CAMERA_CID_GAIN,
	TEGRA_CAMERA_CID_EXPOSURE,
	TEGRA_CAMERA_CID_FRAME_RATE,
	TEGRA_CAMERA_CID_FUSE_ID,
	TEGRA_CAMERA_CID_HDR_EN,
	TEGRA_CAMERA_CID_SENSOR_MODE_ID,
};

struct imx185 {
	struct i2c_client	*i2c_client;
	struct v4l2_subdev	*subdev;
	u8 fuse_id[IMX185_FUSE_ID_SIZE];
	u32				frame_length;
	s64 last_wdr_et_val;
	struct camera_common_data	*s_data;
	struct tegracam_device		*tc_dev;
};

static const struct regmap_config sensor_regmap_config = {
	.reg_bits = 16,
	.val_bits = 8,
	.cache_type = REGCACHE_RBTREE,
	.use_single_rw = true,
};

static inline void imx185_get_frame_length_regs(imx185_reg *regs,
				u32 frame_length)
{
	regs->addr = IMX185_FRAME_LENGTH_ADDR_MSB;
	regs->val = (frame_length >> 16) & 0x01;

	(regs + 1)->addr = IMX185_FRAME_LENGTH_ADDR_MID;
	(regs + 1)->val = (frame_length >> 8) & 0xff;

	(regs + 2)->addr = IMX185_FRAME_LENGTH_ADDR_LSB;
	(regs + 2)->val = (frame_length) & 0xff;
}

static inline void imx185_get_coarse_time_regs_shs1(imx185_reg *regs,
				u32 coarse_time)
{
	regs->addr = IMX185_COARSE_TIME_SHS1_ADDR_MSB;
	regs->val = (coarse_time >> 16) & 0x01;

	(regs + 1)->addr = IMX185_COARSE_TIME_SHS1_ADDR_MID;
	(regs + 1)->val = (coarse_time >> 8) & 0xff;

	(regs + 2)->addr = IMX185_COARSE_TIME_SHS1_ADDR_LSB;
	(regs + 2)->val = (coarse_time) & 0xff;

}

static inline void imx185_get_coarse_time_regs_shs2(imx185_reg *regs,
				u32 coarse_time)
{
	regs->addr = IMX185_COARSE_TIME_SHS2_ADDR_MSB;
	regs->val = (coarse_time >> 16) & 0x01;

	(regs + 1)->addr = IMX185_COARSE_TIME_SHS2_ADDR_MID;
	(regs + 1)->val = (coarse_time >> 8) & 0xff;

	(regs + 2)->addr = IMX185_COARSE_TIME_SHS2_ADDR_LSB;
	(regs + 2)->val = (coarse_time) & 0xff;

}

static inline void imx185_get_gain_reg(imx185_reg *regs,
				u8 gain)
{
	regs->addr = IMX185_GAIN_ADDR;
	regs->val = (gain) & 0xff;
}

static int test_mode;
module_param(test_mode, int, 0644);

static inline int imx185_read_reg(struct camera_common_data *s_data,
				u16 addr, u8 *val)
{
	return 0;
}

static int imx185_write_reg(struct camera_common_data *s_data,
				u16 addr, u8 val)
{
	return 0;
}

static int imx185_write_table(struct imx185 *priv,
				const imx185_reg table[])
{
#if 0
	struct camera_common_data *s_data = priv->s_data;

	return regmap_util_write_table_8(s_data->regmap,
					 table,
					 NULL, 0,
					 IMX185_TABLE_WAIT_MS,
					 IMX185_TABLE_END);
#endif
	return 0;
}

static int imx185_set_group_hold(struct tegracam_device *tc_dev, bool val)
{
#if 0
	struct camera_common_data *s_data = tc_dev->s_data;
	struct device *dev = tc_dev->dev;
	int err;

	err = imx185_write_reg(s_data,
				IMX185_GROUP_HOLD_ADDR, val);
	if (err) {
		dev_dbg(dev,
			"%s: Group hold control error\n", __func__);
		return err;
	}
#endif
	return 0;
}

static int imx185_set_gain(struct tegracam_device *tc_dev, s64 val)
{
	return 0;
}

static int imx185_set_coarse_time(struct imx185 *priv, s64 val)
{
	return 0;
}

static int imx185_set_coarse_time_hdr(struct imx185 *priv, s64 val)
{
	return 0;
}

static int imx185_set_frame_rate(struct tegracam_device *tc_dev, s64 val)
{
	struct camera_common_data *s_data = tc_dev->s_data;
	struct imx185 *priv = (struct imx185 *)tc_dev->priv;
	struct device *dev = tc_dev->dev;
	imx185_reg reg_list[3];
	int err;
	u32 frame_length;
	const struct sensor_mode_properties *mode =
		&s_data->sensor_props.sensor_modes[s_data->mode_prop_idx];
	struct v4l2_control control;
	int hdr_en;
	int i = 0;

	frame_length = mode->signal_properties.pixel_clock.val *
		mode->control_properties.framerate_factor /
		mode->image_properties.line_length / val;

	priv->frame_length = frame_length;
	if (priv->frame_length > IMX185_MAX_FRAME_LENGTH)
		priv->frame_length = IMX185_MAX_FRAME_LENGTH;

	dev_dbg(dev, "%s: val: %lld, , frame_length: %d\n", __func__,
		val, priv->frame_length);


	imx185_get_frame_length_regs(reg_list, priv->frame_length);

	for (i = 0; i < 3; i++) {
		err = imx185_write_reg(priv->s_data, reg_list[i].addr,
			 reg_list[i].val);
		if (err)
			goto fail;
	}

	/* check hdr enable ctrl */
	control.id = TEGRA_CAMERA_CID_HDR_EN;
	err = camera_common_g_ctrl(s_data, &control);
	if (err < 0) {
		dev_err(dev, "could not find device ctrl.\n");
		pri_err();
		return err;
	}

	hdr_en = switch_ctrl_qmenu[control.value];
	if ((hdr_en == SWITCH_ON) && (priv->last_wdr_et_val != 0)) {
		err = imx185_set_coarse_time_hdr(priv, priv->last_wdr_et_val);
		if (err)
			dev_dbg(dev,
			"%s: error coarse time SHS1 SHS2 override\n", __func__);
	}

	return 0;

fail:
	dev_dbg(dev, "%s: FRAME_LENGTH control error\n", __func__);
	return err;
}

static int imx185_set_exposure(struct tegracam_device *tc_dev, s64 val)
{
	struct camera_common_data *s_data = tc_dev->s_data;
	struct imx185 *priv = (struct imx185 *)tc_dev->priv;
	struct device *dev = tc_dev->dev;
	int err;
	struct v4l2_control control;
	int hdr_en;

	dev_dbg(dev, "%s: val: %lld\n", __func__, val);

	/* check hdr enable ctrl */
	control.id = TEGRA_CAMERA_CID_HDR_EN;
	err = camera_common_g_ctrl(s_data, &control);
	if (err < 0) {
		pri_err();
		dev_err(dev, "could not find device ctrl.\n");
		return err;
	}

	hdr_en = switch_ctrl_qmenu[control.value];
	if (hdr_en == SWITCH_ON) {
		err = imx185_set_coarse_time_hdr(priv, val);
		if (err)
			dev_dbg(dev,
			"%s: error coarse time SHS1 SHS2 override\n", __func__);
	} else {
		err = imx185_set_coarse_time(priv, val);
		if (err)
			dev_dbg(dev,
			"%s: error coarse time SHS1 override\n", __func__);
	}

	return err;
}

static int imx185_fill_string_ctrl(struct tegracam_device *tc_dev,
				struct v4l2_ctrl *ctrl)
{
	return 0;
}

static struct tegracam_ctrl_ops imx185_ctrl_ops = {
	.numctrls = ARRAY_SIZE(ctrl_cid_list),
	.ctrl_cid_list = ctrl_cid_list,
	.string_ctrl_size = {0, IMX185_FUSE_ID_STR_SIZE},
	.set_gain = imx185_set_gain,
	.set_exposure = imx185_set_exposure,
	.set_frame_rate = imx185_set_frame_rate,
	.set_group_hold = imx185_set_group_hold,
	.fill_string_ctrl = imx185_fill_string_ctrl,
};

static int imx185_power_on(struct camera_common_data *s_data)
{
	int err = 0;
	struct camera_common_power_rail *pw = s_data->power;
	struct camera_common_pdata *pdata = s_data->pdata;
	struct device *dev = s_data->dev;

	dev_dbg(dev, "%s: power on\n", __func__);
	if (pdata && pdata->power_on) {
		err = pdata->power_on(pw);
		if (err)
			dev_err(dev, "%s failed.\n", __func__);
		else
			pw->state = SWITCH_ON;
		return err;
	}

	/*exit reset mode: XCLR */
	if (pw->reset_gpio) {
		gpio_set_value(pw->reset_gpio, 0);
		usleep_range(30, 50);
		gpio_set_value(pw->reset_gpio, 1);
		usleep_range(30, 50);
	}

	pw->state = SWITCH_ON;

	pri_ok();
	return 0;

}

static int imx185_power_off(struct camera_common_data *s_data)
{
	int err = 0;
	struct camera_common_power_rail *pw = s_data->power;
	struct camera_common_pdata *pdata = s_data->pdata;
	struct device *dev = s_data->dev;

	dev_dbg(dev, "%s: power off\n", __func__);

	if (pdata && pdata->power_off) {
		err = pdata->power_off(pw);
		if (!err)
			goto power_off_done;
		else
			dev_err(dev, "%s failed.\n", __func__);
		return err;
	}
	/* enter reset mode: XCLR */
	usleep_range(1, 2);
	if (pw->reset_gpio)
		gpio_set_value(pw->reset_gpio, 0);

power_off_done:
	pw->state = SWITCH_OFF;

	pri_ok();
	return 0;
}

static int imx185_power_get(struct tegracam_device *tc_dev)
{
	struct device *dev = tc_dev->dev;
	struct camera_common_data *s_data = tc_dev->s_data;
	struct camera_common_power_rail *pw = s_data->power;
	struct camera_common_pdata *pdata = s_data->pdata;
	const char *mclk_name;
	struct clk *parent;
	int err = 0;

	mclk_name = pdata->mclk_name ?
		    pdata->mclk_name : "extperiph1";
	pw->mclk = devm_clk_get(dev, mclk_name);
	if (IS_ERR(pw->mclk)) {
		dev_err(dev, "unable to get clock %s\n", mclk_name);
		return PTR_ERR(pw->mclk);
	}

	parent = devm_clk_get(dev, "pllp_grtba");
	if (IS_ERR(parent))
		dev_err(dev, "devm_clk_get failed for pllp_grtba");
	else
		clk_set_parent(pw->mclk, parent);

	pw->reset_gpio = pdata->reset_gpio;

	pw->state = SWITCH_OFF;

	if(err)
		pri_err();
	else
		pri_ok();
	
	return err;
}

static int imx185_power_put(struct tegracam_device *tc_dev)
{
	struct camera_common_data *s_data = tc_dev->s_data;
	struct camera_common_power_rail *pw = s_data->power;

	if (unlikely(!pw))
		return -EFAULT;
	else
		pri_err();

	pri_ok();
	return 0;
}

static struct camera_common_pdata *imx185_parse_dt(struct tegracam_device *tc_dev)
{
	struct device *dev = tc_dev->dev;
	struct device_node *np = dev->of_node;
	struct camera_common_pdata *board_priv_pdata;
	const struct of_device_id *match;
	struct camera_common_pdata *ret = NULL;
	int err;
	int gpio;

	if (!np)
		return NULL;

	match = of_match_device(imx185_of_match, dev);
	if (!match) {
		dev_err(dev, "Failed to find matching dt id\n");
		return NULL;
	}

	board_priv_pdata = devm_kzalloc(dev,
					sizeof(*board_priv_pdata), GFP_KERNEL);
	if (!board_priv_pdata)
		return NULL;

	err = of_property_read_string(np, "mclk",
				      &board_priv_pdata->mclk_name);
	if (err)
		dev_err(dev, "mclk not in DT\n");

	gpio = of_get_named_gpio(np, "reset-gpios", 0);
	if (gpio < 0) {
		if (gpio == -EPROBE_DEFER)
			ret = ERR_PTR(-EPROBE_DEFER);
		dev_err(dev, "reset-gpios not found %d\n", err);
		goto error;
	}
	board_priv_pdata->reset_gpio = (unsigned int)gpio;

	return board_priv_pdata;

error:
	devm_kfree(dev, board_priv_pdata);
	return ret;
}

static int imx185_set_mode(struct tegracam_device *tc_dev)
{
	struct imx185 *priv = (struct imx185 *)tegracam_get_privdata(tc_dev);
	struct camera_common_data *s_data = tc_dev->s_data;
	struct device *dev = tc_dev->dev;
	struct device_node *np = dev->of_node;
	bool limit_analog_gain = false;
	const struct of_device_id *match;
	int err;

	match = of_match_device(imx185_of_match, dev);
	if (!match) {
		dev_err(dev, "Failed to find matching dt id\n");
		return -EINVAL;
	}

	limit_analog_gain = of_property_read_bool(np, "limit_analog_gain");

	err = imx185_write_table(priv, mode_table[s_data->mode_prop_idx]);
	if (err){
		pri_err("mode = %d\n", s_data->mode_prop_idx);
		return err;
	}
	else
		pri_ok("mode = %d\n", s_data->mode_prop_idx);

	if (limit_analog_gain) {
		err = imx185_write_reg(priv->s_data,
			IMX185_ANALOG_GAIN_LIMIT_ADDR,
			IMX185_ANALOG_GAIN_LIMIT_VALUE);
		if (err)
			return err;
	}

	pri_ok();
	return 0;
}

static int imx185_start_streaming(struct tegracam_device *tc_dev)
{
	struct imx185 *priv = (struct imx185 *)tegracam_get_privdata(tc_dev);
	int err;

	if (test_mode) {
		err = imx185_write_table(priv,
			mode_table[IMX185_MODE_TEST_PATTERN]);
		if (err)
			return err;
	}

	err = imx185_write_table(priv,
		mode_table[IMX185_MODE_START_STREAM]);
	if (err)
		return err;

	pri_ok();
	return 0;
}

static int imx185_stop_streaming(struct tegracam_device *tc_dev)
{
	struct camera_common_data *s_data = tc_dev->s_data;
	struct imx185 *priv = (struct imx185 *)tegracam_get_privdata(tc_dev);
	int err;

	err = imx185_write_table(priv, mode_table[IMX185_MODE_STOP_STREAM]);
	if (err)
		return err;

	/* SW_RESET will have no ACK */
	imx185_write_reg(s_data, IMX185_SW_RESET_ADDR, 0x01);

	/*
	 * Wait for one frame to make sure sensor is set to
	 * software standby in V-blank
	 *
	 * delay = frame length rows * Tline (10 us)
	 */
	usleep_range(priv->frame_length * 10, priv->frame_length * 10 + 1000);

	pri_ok();
	return 0;
}


static struct camera_common_sensor_ops imx185_common_ops = {
	.numfrmfmts = ARRAY_SIZE(imx185_frmfmt),
	.frmfmt_table = imx185_frmfmt,
	.power_on = imx185_power_on,
	.power_off = imx185_power_off,
	.write_reg = imx185_write_reg,
	.read_reg = imx185_read_reg,
	.parse_dt = imx185_parse_dt,
	.power_get = imx185_power_get,
	.power_put = imx185_power_put,
	.set_mode = imx185_set_mode,
	.start_streaming = imx185_start_streaming,
	.stop_streaming = imx185_stop_streaming,
};

static int imx185_fuse_id_setup(struct imx185 *priv)
{
	return 0;
}

static int imx185_board_setup(struct imx185 *priv)
{
	struct camera_common_data *s_data = priv->s_data;
	struct device *dev = s_data->dev;
	int err = 0;

	dev_dbg(dev, "%s++\n", __func__);

	err = camera_common_mclk_enable(s_data);
	if (err) {
		dev_err(dev,
			"Error %d turning on mclk\n", err);
		return err;
	}

	err = imx185_power_on(s_data);
	if (err) {
		dev_err(dev,
			"Error %d during power on sensor\n", err);
		return err;
	}

	err = imx185_fuse_id_setup(priv);
	if (err) {
		dev_err(dev,
			"Error %d reading fuse id data\n", err);
		goto error;
	}

error:
	imx185_power_off(s_data);
	camera_common_mclk_disable(s_data);
	return err;
}

static int imx185_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{
	struct i2c_client *client = v4l2_get_subdevdata(sd);

	dev_dbg(&client->dev, "%s:\n", __func__);

	return 0;
}

static const struct v4l2_subdev_internal_ops imx185_subdev_internal_ops = {
	.open = imx185_open,
};

static int imx185_probe(struct i2c_client *client,
			const struct i2c_device_id *id)
{
	struct device *dev = &client->dev;
	struct tegracam_device *tc_dev;
	struct imx185 *priv;
	int err;

	dev_info(dev, "probing v4l2 sensor\n");

	if (!IS_ENABLED(CONFIG_OF) || !client->dev.of_node)
		return -EINVAL;

	priv = devm_kzalloc(dev,
			sizeof(struct imx185), GFP_KERNEL);
	if (!priv)
		return -ENOMEM;

	tc_dev = devm_kzalloc(dev,
			sizeof(struct tegracam_device), GFP_KERNEL);
	if (!tc_dev)
		return -ENOMEM;

	priv->i2c_client = tc_dev->client = client;
	tc_dev->dev = dev;
	strncpy(tc_dev->name, "imx185", sizeof(tc_dev->name));
	tc_dev->dev_regmap_config = &sensor_regmap_config;
	tc_dev->sensor_ops = &imx185_common_ops;
	tc_dev->v4l2sd_internal_ops = &imx185_subdev_internal_ops;
	tc_dev->tcctrl_ops = &imx185_ctrl_ops;

	err = tegracam_device_register(tc_dev);
	if (err) {
		dev_err(dev, "tegra camera driver registration failed\n");
		return err;
	}
	priv->tc_dev = tc_dev;
	priv->s_data = tc_dev->s_data;
	priv->subdev = &tc_dev->s_data->subdev;
	tegracam_set_privdata(tc_dev, (void *)priv);

	err = imx185_board_setup(priv);
	if (err) {
		tegracam_device_unregister(tc_dev);
		dev_err(dev, "board setup failed\n");
		return err;
	}

	err = tegracam_v4l2subdev_register(tc_dev, true);
	if (err) {
		dev_err(dev, "tegra camera subdev registration failed\n");
		return err;
	}

	dev_info(dev, "Detected IMX185 sensor\n");

	return 0;
}

static int imx185_remove(struct i2c_client *client)
{
	struct camera_common_data *s_data = to_camera_common_data(&client->dev);
	struct imx185 *priv = (struct imx185 *)s_data->priv;

	tegracam_v4l2subdev_unregister(priv->tc_dev);
	tegracam_device_unregister(priv->tc_dev);

	return 0;
}

static const struct i2c_device_id imx185_id[] = {
	{ "imx185", 0 },
	{ }
};

MODULE_DEVICE_TABLE(i2c, imx185_id);

static struct i2c_driver imx185_i2c_driver = {
	.driver = {
		.name = "imx185",
		.owner = THIS_MODULE,
		.of_match_table = of_match_ptr(imx185_of_match),
	},
	.probe = imx185_probe,
	.remove = imx185_remove,
	.id_table = imx185_id,
};

module_i2c_driver(imx185_i2c_driver);

MODULE_DESCRIPTION("Media Controller driver for Sony IMX185");
MODULE_AUTHOR("NVIDIA Corporation");
MODULE_LICENSE("GPL v2");


5 - error dmesg

[    2.036120] imx185 30-001a: probing v4l2 sensor
[    2.036577] imx185: zp: [OK]: func[imx185_power_get] line[425]->|OK|
[    2.037000] imx185 30-001a: tegracam sensor driver:imx185_v2.0.6
[    2.037479] imx185: zp: [OK]: func[imx185_power_on] line[360]->|OK|
[    2.037637] imx185: zp: [OK]: func[imx185_power_off] line[390]->|OK|
[    2.038031] imx185 30-001a: Detected IMX185 sensor
..........
[    5.769203] tegra194-vi5 15c10000.vi: subdev imx185 30-001a bound
..........
[    7.362862] Could not create tracefs 'imx185_s_stream' directory
[    7.363218] imx185: module is already loaded
..........
[  295.830880] imx185: zp: [OK]: func[imx185_power_on] line[360]->|OK|
[  295.842189] imx185: zp: [OK]: func[imx185_power_off] line[390]->|OK|
[  296.011184] imx185: zp: [OK]: func[imx185_power_on] line[360]->|OK|
[  296.011428] imx185: zp: [OK]: func[imx185_power_off] line[390]->|OK|
[  296.051544] imx185: zp: [OK]: func[imx185_power_on] line[360]->|OK|
[  296.093400] imx185: zp: [OK]: func[imx185_set_mode] line[513]->|OK| mode = 0
[  296.093608] imx185: zp: [OK]: func[imx185_set_mode] line[523]->|OK|
[  296.093723] imx185: zp: [OK]: func[imx185_start_streaming] line[544]->|OK|
[  296.094059] [RCE] vi5_hwinit: firmware CL2018101701 protocol version 2.2
[  298.574079] tegra194-vi5 15c10000.vi: no reply from camera processor
[  298.574287] tegra194-vi5 15c10000.vi: uncorr_err: request timed out after 2500 ms
[  298.574444] tegra194-vi5 15c10000.vi: err_rec: attempting to reset the capture channel
[  298.577082] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x39
[  298.577304] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x41
[  298.577455] tegra-capture-ivc ivc-bc00000.rtcpu:ivccontrol@3: No callback found for msg id: 0x37
[  298.577700] tegra194-vi5 15c10000.vi: err_rec: successfully reset the capture channel
[  301.134056] tegra194-vi5 15c10000.vi: no reply from camera processor
[  301.134216] tegra194-vi5 15c10000.vi: uncorr_err: request timed out after 2500 ms
[  301.134361] tegra194-vi5 15c10000.vi: err_rec: attempting to reset the capture channel
[  301.137003] tegra194-vi5 15c10000.vi: err_rec: successfully reset the capture channel
[  303.694009] tegra194-vi5 15c10000.vi: no reply from camera processor
[  303.694172] tegra194-vi5 15c10000.vi: uncorr_err: request timed out after 2500 ms
[  303.694348] tegra194-vi5 15c10000.vi: err_rec: attempting to reset the capture channel
[  303.697229] tegra194-vi5 15c10000.vi: err_rec: successfully reset the capture channel
[  303.766724] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 38, err_data 160
[  303.799973] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  303.833385] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 32, err_data 160
[  303.833596] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 131072
[  303.866612] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  303.966596] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  303.999932] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  304.033256] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
........
[  313.466160] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  313.499633] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  313.532835] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  313.566156] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  313.599499] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 160, err_data 160
[  313.600737] imx185: zp: [OK]: func[imx185_stop_streaming] line[569]->|OK|
[  313.652769] imx185: zp: [OK]: func[imx185_power_off] line[390]->|OK|

6-trace log

echo 1 > /sys/kernel/debug/tracing/tracing_on
echo 30720 > /sys/kernel/debug/tracing/buffer_size_kb
echo 1 > /sys/kernel/debug/tracing/events/tegra_rtcpu/enable
echo 1 > /sys/kernel/debug/tracing/events/freertos/enable
echo 2 > /sys/kernel/debug/camrtc/log-level
echo 1 > /sys/kernel/debug/tracing/events/camera_common/enable
echo > /sys/kernel/debug/tracing/trace

cat /sys/kernel/debug/tracing/trace

6.a - upload the trace log below
trace.log (910.0 KB)
maybe it’s big , please download to see
I found the error about Lost FE means Xavier didn’t receive Frame End package.
But i’m not sure if there are any other errors.

7 - put up the clock also have this problem

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
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate
echo 998400000 > /sys/kernel/debug/bpmp/debug/clk/vi/rate
echo 1190400000 > /sys/kernel/debug/bpmp/debug/clk/isp/rate
echo 400000000 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate

Any advice all be helpful for me.
I doubt my dts has some problems, but i am not sure, please help me.
Thank you so much.

zhou

Remove the “embedded_metadata_height = 1” or confirm if the FPGA output embedded data lines to modify it

Hi ShaneCCC
Thank you so much, your advice is very helpful,now i can get frame successfully and stably.
Now i need change the resolution from 1920×1080 to 1280×1024, what should i change to get the correct resolution.

Add the sensor mode for 1280x1024 in FPGA driver like 1920x1080

Hi ShaneCCC
now i change the fpga out to 1280×1024,but my dts setting have some problem

For example:

Sensor output size = 2200 * 1125 (actual output size 1920 * 1080)
Frame rate = 30 FPS

pixel_clk_hz = 2200 * 1125 * 30 = 742500000

Now sensour output is 1280×1024 ,the actual output size is ? and pixel_clk_hz is ? , where can i find the answer, has some documents to search?

Thanks

Check this doc for the detail.
You need to change the active_w/active_h for the output size.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#wwpID0E0Q50HA

Hi ShaneCCC
i change the dts like this

	mode0 {/*mode IMX185_MODE_1920X1080_CROP_30FPS - used*/
					mclk_khz = "37125";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "no";
					dpcm_enable = "false";
					cil_settletime = "0";
					//dynamic_pixel_bit_depth = "12";
					
					//csi_pixel_bit_depth = "12";
					//mode_type = "bayer";
					//pixel_phase = "rggb";
					pixel_t = "rgb_rgb88824";	//	zp change

					//active_w = "1920";
					//active_h = "1080";
					active_w = "1280";
					active_h = "1024";
					readout_orientation = "0";
					line_length = "2200";
					inherent_gain = "1";
					mclk_multiplier = "2";
					//pix_clk_hz = "74250000";
					pix_clk_hz = "53982240";

					gain_factor = "10";
					min_gain_val = "0"; /* 0dB */
					max_gain_val = "480"; /* 48dB */
					step_gain_val = "3"; /* 0.3 */
					default_gain = "0";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000"; /* 1.5 */
					max_framerate = "30000000"; /* 30 */
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "30"; /* us */
					max_exp_time = "660000"; /* us */
					step_exp_time = "1";
					default_exp_time = "33334";/* us */
					embedded_metadata_height = "0";		//	zp change
				};

Now i open the trace ,it report error


     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234930518 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234930518 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234930518 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234930518 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234930518 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945268: rtcpu_nvcsi_intr: tstamp:14234931708 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234931708 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234932276 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234932276 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234932276 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234932276 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945269: rtcpu_nvcsi_intr: tstamp:14234932276 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945270: rtcpu_nvcsi_intr: tstamp:14234933465 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945270: rtcpu_nvcsi_intr: tstamp:14234933465 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945270: rtcpu_nvcsi_intr: tstamp:14234934032 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945270: rtcpu_nvcsi_intr: tstamp:14234934032 class:CORRECTABLE_ERR type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945270: rtcpu_nvcsi_intr: tstamp:14234934032 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234934811 class:GLOBAL type:STREAM_VC phy:0 cil:0 st:0 vc:0 status:0x00000004
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234934811 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234934811 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234934811 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234935790 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000110
     kworker/1:1-8780  [001] ....   443.945271: rtcpu_nvcsi_intr: tstamp:14234935790 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000110

dmesg shows


[  449.984854] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  449.985061] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.018138] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.051480] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.051692] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.084813] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.118135] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.118355] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.151468] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.184740] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.184965] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.218083] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.251431] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.251621] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.284733] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.318005] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.318223] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.351415] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.384730] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.384929] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.418035] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.451365] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.451570] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.484684] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.518026] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.518217] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.551278] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912
[  450.584637] tegra194-vi5 15c10000.vi: corr_err: discarding frame 3842, flags: 0, err_data 512
[  450.584828] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 96, err_data 4194912

Increase the pix_clk_hz due to TX/RX FIFO error.

Hi ShaneCCC
what vaule should i set to make the pix_clk_hz ok? it’s very confuse for me.
i set the pix_clk_hz = 74250000 - trace log


     kworker/0:0-4     [000] ....   311.631671: rtcpu_nvcsi_intr: tstamp:10100798368 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631672: rtcpu_nvcsi_intr: tstamp:10100799344 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631673: rtcpu_nvcsi_intr: tstamp:10100799344 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631673: rtcpu_nvcsi_intr: tstamp:10100800323 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631674: rtcpu_nvcsi_intr: tstamp:10100800323 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631675: rtcpu_nvcsi_intr: tstamp:10100801298 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631675: rtcpu_nvcsi_intr: tstamp:10100801298 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631676: rtcpu_nvcsi_intr: tstamp:10100802272 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631677: rtcpu_nvcsi_intr: tstamp:10100802272 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631677: rtcpu_nvcsi_intr: tstamp:10100803251 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000040
     kworker/0:0-4     [000] ....   311.631678: rtcpu_nvcsi_intr: tstamp:10100803251 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000040
     kworker/0:0-4     [000] ....   311.631679: rtcpu_nvcsi_intr: tstamp:10100804226 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000040
     kworker/0:0-4     [000] ....   311.631679: rtcpu_nvcsi_intr: tstamp:10100804226 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000040
     kworker/0:0-4     [000] ....   311.631680: rtcpu_nvcsi_intr: tstamp:10100805205 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631680: rtcpu_nvcsi_intr: tstamp:10100805205 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631681: rtcpu_nvcsi_intr: tstamp:10100806184 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631682: rtcpu_nvcsi_intr: tstamp:10100806184 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631682: rtcpu_nvcsi_intr: tstamp:10100807159 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631683: rtcpu_nvcsi_intr: tstamp:10100807159 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631684: rtcpu_nvcsi_intr: tstamp:10100808133 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631684: rtcpu_nvcsi_intr: tstamp:10100808133 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631685: rtcpu_nvcsi_intr: tstamp:10100809112 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631686: rtcpu_nvcsi_intr: tstamp:10100809112 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631686: rtcpu_nvcsi_intr: tstamp:10100810087 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631687: rtcpu_nvcsi_intr: tstamp:10100810087 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631688: rtcpu_nvcsi_intr: tstamp:10100811066 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631688: rtcpu_nvcsi_intr: tstamp:10100811066 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:0 st:0 vc:0 status:0x00000044
     kworker/0:0-4     [000] ....   311.631689: rtcpu_nvcsi_intr: tstamp:10100812043 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000044

set the pix_clk_hz = 54000000 - trace log


     kworker/0:4-2127  [000] ....   183.329755: rtcpu_vinotify_event: tstamp:6090696012 tag:CHANSEL_PXL_SOF channel:0x23 frame:2 vi_tstamp:6090172201 data:0x00000001
     kworker/0:4-2127  [000] ....   183.329756: rtcpu_vinotify_event: tstamp:6090696188 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:5906953632 data:0x08020016
     kworker/0:4-2127  [000] ....   183.329757: rtcpu_vinotify_event: tstamp:6090696337 tag:CHANSEL_FAULT channel:0x23 frame:2 vi_tstamp:6090172936 data:0x00000200
     kworker/0:4-2127  [000] ....   183.329759: rtcpu_vinotify_event: tstamp:6090696507 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:5906980064 data:0x01020016
     kworker/0:4-2127  [000] ....   183.329760: rtcpu_vinotify_event: tstamp:6091176632 tag:FE channel:0x00 frame:2 vi_tstamp:6091173211 data:0x00000020
     kworker/0:4-2127  [000] ....   183.329761: rtcpu_vinotify_event: tstamp:6091176807 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:2 vi_tstamp:6091173212 data:0x01000000
     kworker/0:4-2127  [000] ....   183.329762: rtcpu_vinotify_event: tstamp:6091176953 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:5938999424 data:0x01020016
     kworker/0:4-2127  [000] ....   183.329764: rtos_queue_send_from_isr_failed: tstamp:6091227188 queue:0x0bcb41f8
     kworker/0:4-2127  [000] ....   183.329765: rtos_queue_send_from_isr_failed: tstamp:6091227350 queue:0x0bcb8a60
     kworker/0:4-2127  [000] ....   183.329766: rtos_queue_send_from_isr_failed: tstamp:6091227513 queue:0x0bcba5e0
     kworker/0:4-2127  [000] ....   183.329767: rtos_queue_send_from_isr_failed: tstamp:6091227669 queue:0x0bcbb3a0
     kworker/0:4-2127  [000] ....   183.329769: rtos_queue_send_from_isr_failed: tstamp:6091227825 queue:0x0bcbc160
     kworker/0:4-2127  [000] ....   183.385720: rtcpu_vinotify_event: tstamp:6091672661 tag:ATOMP_FE channel:0x00 frame:2 vi_tstamp:6091173215 data:0x00000000
     kworker/0:4-2127  [000] ....   183.385724: rtcpu_vinotify_event: tstamp:6091672813 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:5939020640 data:0x07020017
     kworker/0:4-2127  [000] ....   183.385725: rtcpu_vinotify_event: tstamp:6091672989 tag:FS channel:0x00 frame:1 vi_tstamp:6091176142 data:0x00000010
     kworker/0:4-2127  [000] ....   183.385726: rtcpu_vinotify_event: tstamp:6091673142 tag:ATOMP_FS channel:0x00 frame:1 vi_tstamp:6091176145 data:0x00000000
     kworker/0:4-2127  [000] ....   183.385728: rtcpu_vinotify_event: tstamp:6091673315 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:5939135840 data:0x10000000
     kworker/0:4-2127  [000] ....   183.385729: rtcpu_vinotify_event: tstamp:6091673460 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:5939165504 data:0x31000018
     kworker/0:4-2127  [000] ....   183.385730: rtcpu_vinotify_event: tstamp:6091673631 tag:CHANSEL_PXL_SOF channel:0x23 frame:1 vi_tstamp:6091213476 data:0x00000001
     kworker/0:4-2127  [000] ....   183.385731: rtcpu_vinotify_event: tstamp:6091673778 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:5940274464 data:0x08020017
     kworker/0:4-2127  [000] ....   183.385732: rtcpu_vinotify_event: tstamp:6091673948 tag:CHANSEL_FAULT channel:0x23 frame:1 vi_tstamp:6091214211 data:0x00000200
     kworker/0:4-2127  [000] ....   183.385733: rtcpu_vinotify_event: tstamp:6091674094 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:5940300896 data:0x01020017
     kworker/0:4-2127  [000] ....   183.385736: rtos_queue_peek_from_isr_failed: tstamp:6091998089 queue:0x0bcbcf78
     kworker/0:4-2127  [000] ....   183.385738: rtcpu_vinotify_event: tstamp:6092220091 tag:FE channel:0x00 frame:1 vi_tstamp:6092214487 data:0x00000020
     kworker/0:4-2127  [000] ....   183.385739: rtcpu_vinotify_event: tstamp:6092220244 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:1 vi_tstamp:6092214487 data:0x01000000
     kworker/0:4-2127  [000] ....   183.385740: rtcpu_vinotify_event: tstamp:6092220422 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:5972324736 data:0x01020017
     kworker/0:4-2127  [000] ....   183.385741: rtcpu_vinotify_event: tstamp:6092220574 tag:ATOMP_FE channel:0x00 frame:1 vi_tstamp:6092214490 data:0x00000000
     kworker/0:4-2127  [000] ....   183.385742: rtcpu_vinotify_event: tstamp:6092220745 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:5972340032 data:0x07020018
     kworker/0:4-2127  [000] ....   183.385743: rtcpu_vinotify_event: tstamp:6092220891 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:5972393440 data:0x10000000
     kworker/0:4-2127  [000] ....   183.385749: rtos_queue_send_from_isr_failed: tstamp:6092268999 queue:0x0bcb41f8
     kworker/0:4-2127  [000] ....   183.385750: rtos_queue_send_from_isr_failed: tstamp:6092269165 queue:0x0bcb8a60
     kworker/0:4-2127  [000] ....   183.385752: rtos_queue_send_from_isr_failed: tstamp:6092269330 queue:0x0bcba5e0
     kworker/0:4-2127  [000] ....   183.385753: rtos_queue_send_from_isr_failed: tstamp:6092269486 queue:0x0bcbb3a0
     kworker/0:4-2127  [000] ....   183.385754: rtos_queue_send_from_isr_failed: tstamp:6092269641 queue:0x0bcbc160
     kworker/0:4-2127  [000] ....   183.385755: rtcpu_vinotify_event: tstamp:6092757647 tag:FS channel:0x00 frame:2 vi_tstamp:6092217418 data:0x00000010
     kworker/0:4-2127  [000] ....   183.385756: rtcpu_vinotify_event: tstamp:6092757801 tag:ATOMP_FS channel:0x00 frame:2 vi_tstamp:6092217420 data:0x00000000
     kworker/0:4-2127  [000] ....   183.385758: rtcpu_vinotify_event: tstamp:6092757976 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:5972525088 data:0x31000019
     kworker/0:4-2127  [000] ....   183.385759: rtcpu_vinotify_event: tstamp:6092758128 tag:CHANSEL_PXL_SOF channel:0x23 frame:2 vi_tstamp:6092254751 data:0x00000001
     kworker/0:4-2127  [000] ....   183.385760: rtcpu_vinotify_event: tstamp:6092758299 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:5973595264 data:0x08020018
     kworker/0:4-2127  [000] ....   183.385761: rtcpu_vinotify_event: tstamp:6092758443 tag:CHANSEL_FAULT channel:0x23 frame:2 vi_tstamp:6092255487 data:0x00000200
     kworker/0:4-2127  [000] ....   183.385762: rtcpu_vinotify_event: tstamp:6092758613 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:5973621696 data:0x01020018
     kworker/0:4-2127  [000] ....   183.441718: rtcpu_vinotify_event: tstamp:6093262075 tag:FE channel:0x00 frame:2 vi_tstamp:6093255763 data:0x00000020
     kworker/0:4-2127  [000] ....   183.441721: rtcpu_vinotify_event: tstamp:6093262250 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:2 vi_tstamp:6093255763 data:0x01000000
     kworker/0:4-2127  [000] ....   183.441723: rtcpu_vinotify_event: tstamp:6093262399 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:6005641056 data:0x01020018
     kworker/0:4-2127  [000] ....   183.441724: rtcpu_vinotify_event: tstamp:6093262574 tag:ATOMP_FE channel:0x00 frame:2 vi_tstamp:6093255766 data:0x00000000
     kworker/0:4-2127  [000] ....   183.441725: rtcpu_vinotify_event: tstamp:6093262722 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:6005656320 data:0x07020019
     kworker/0:4-2127  [000] ....   183.441727: rtcpu_vinotify_event: tstamp:6093262895 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:6005705472 data:0x10000000
     kworker/0:4-2127  [000] ....   183.441728: rtcpu_vinotify_event: tstamp:6093263042 tag:FS channel:0x00 frame:1 vi_tstamp:6093258693 data:0x00000010
     kworker/0:4-2127  [000] ....   183.441756: rtcpu_vinotify_event: tstamp:6093263214 tag:ATOMP_FS channel:0x00 frame:1 vi_tstamp:6093258695 data:0x00000000
     kworker/0:4-2127  [000] ....   183.441758: rtcpu_vinotify_event: tstamp:6093263365 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:6005749696 data:0x3100001a
     kworker/0:4-2127  [000] ....   183.441764: rtos_queue_send_from_isr_failed: tstamp:6093310041 queue:0x0bcb41f8
     kworker/0:4-2127  [000] ....   183.441765: rtos_queue_send_from_isr_failed: tstamp:6093310207 queue:0x0bcb8a60
     kworker/0:4-2127  [000] ....   183.441767: rtos_queue_send_from_isr_failed: tstamp:6093310375 queue:0x0bcba5e0
     kworker/0:4-2127  [000] ....   183.441768: rtos_queue_send_from_isr_failed: tstamp:6093310533 queue:0x0bcbb3a0
     kworker/0:4-2127  [000] ....   183.441769: rtos_queue_send_from_isr_failed: tstamp:6093310689 queue:0x0bcbc160
     kworker/0:4-2127  [000] ....   183.441770: rtcpu_vinotify_event: tstamp:6093789094 tag:CHANSEL_PXL_SOF channel:0x23 frame:1 vi_tstamp:6093296026 data:0x00000001
     kworker/0:4-2127  [000] ....   183.441772: rtcpu_vinotify_event: tstamp:6093789246 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:6006916096 data:0x08020019
     kworker/0:4-2127  [000] ....   183.441773: rtcpu_vinotify_event: tstamp:6093789419 tag:CHANSEL_FAULT channel:0x23 frame:1 vi_tstamp:6093296762 data:0x00000200
     kworker/0:4-2127  [000] ....   183.441774: rtcpu_vinotify_event: tstamp:6093789565 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:6006942496 data:0x01020019
     kworker/0:4-2127  [000] ....   183.441775: rtcpu_vinotify_event: tstamp:6094331703 tag:FE channel:0x00 frame:1 vi_tstamp:6094297038 data:0x00000020
     kworker/0:4-2127  [000] ....   183.441803: rtcpu_vinotify_event: tstamp:6094331855 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:1 vi_tstamp:6094297039 data:0x01000000
     kworker/0:4-2127  [000] ....   183.441805: rtcpu_vinotify_event: tstamp:6094332027 tag:RESERVED_19 channel:0x23 frame:1 vi_tstamp:6038961856 data:0x01020019
     kworker/0:4-2127  [000] ....   183.441806: rtcpu_vinotify_event: tstamp:6094332176 tag:ATOMP_FE channel:0x00 frame:1 vi_tstamp:6094297040 data:0x00000000
     kworker/0:4-2127  [000] ....   183.441807: rtcpu_vinotify_event: tstamp:6094332346 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:6038977120 data:0x0702001a
     kworker/0:4-2127  [000] ....   183.441808: rtcpu_vinotify_event: tstamp:6094332490 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:6039019136 data:0x10000000
     kworker/0:4-2127  [000] ....   183.441809: rtcpu_vinotify_event: tstamp:6094332661 tag:FS channel:0x00 frame:2 vi_tstamp:6094299969 data:0x00000010
     kworker/0:4-2127  [000] ....   183.441810: rtcpu_vinotify_event: tstamp:6094332831 tag:ATOMP_FS channel:0x00 frame:2 vi_tstamp:6094299972 data:0x00000000
     kworker/0:4-2127  [000] ....   183.441811: rtcpu_vinotify_event: tstamp:6094333000 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:6039063296 data:0x3100001b
     kworker/0:4-2127  [000] ....   183.441813: rtcpu_vinotify_event: tstamp:6094342613 tag:CHANSEL_PXL_SOF channel:0x23 frame:2 vi_tstamp:6094337302 data:0x00000001
     kworker/0:4-2127  [000] ....   183.441814: rtcpu_vinotify_event: tstamp:6094342786 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:6040236896 data:0x0802001a
     kworker/0:4-2127  [000] ....   183.441815: rtcpu_vinotify_event: tstamp:6094342932 tag:CHANSEL_FAULT channel:0x23 frame:2 vi_tstamp:6094338038 data:0x00000200
     kworker/0:4-2127  [000] ....   183.441817: rtos_queue_send_from_isr_failed: tstamp:6094352578 queue:0x0bcb41f8
     kworker/0:4-2127  [000] ....   183.441818: rtos_queue_send_from_isr_failed: tstamp:6094352743 queue:0x0bcb8a60
     kworker/0:4-2127  [000] ....   183.441819: rtos_queue_send_from_isr_failed: tstamp:6094352908 queue:0x0bcba5e0
     kworker/0:4-2127  [000] ....   183.441821: rtos_queue_send_from_isr_failed: tstamp:6094353064 queue:0x0bcbb3a0
     kworker/0:4-2127  [000] ....   183.441822: rtos_queue_send_from_isr_failed: tstamp:6094353221 queue:0x0bcbc160
     kworker/0:4-2127  [000] ....   183.497657: rtcpu_vinotify_event: tstamp:6094874296 tag:RESERVED_19 channel:0x23 frame:2 vi_tstamp:6040269696 data:0x0102001a

And all demsg have the log

err_data 512
[  187.157072] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.190285] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.223604] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.256948] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.290257] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.323635] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.356888] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.390219] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.423529] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.456864] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.490224] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.523606] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.556858] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.590136] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.623464] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.656775] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.690214] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.723476] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.756736] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.790063] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.823394] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.856804] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.890025] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.923344] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  187.956663] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  187.990033] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  188.023376] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512
[  188.056733] tegra194-vi5 15c10000.vi: corr_err: discarding frame 1, flags: 0, err_data 512
[  188.089945] tegra194-vi5 15c10000.vi: corr_err: discarding frame 2, flags: 0, err_data 512

Does FPGA driver reference to pix_clk_hz to adjust the output clock? If yes then you can set it to 54000000 and boost the NVCSI/VI clocks by sysfs.

And the trace log show the tag:CHANSEL_SHORT_FRAME tell the FPGA output lines less as expect you can reduce the active_h to narrow down it.

Also tag:CHANSEL_FAULT tell the PIXEL_SHORT_LINE you can adjust the active_w to try

if i reduce the active_h, my gstreamer command need change?
for ex: active_w = “1280”; active_h = “1020”;
my test command if need to be changed?

gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw, width=(int)1280, height=(int)1020, format=(string)BGRA, framerate=(fraction)30/1' ! videoconvert ! ximagesink

If your driver only report one sensor mode you can ignore the width and height like below.
Also have v4l2-ctl --list-formats-ext to check if the size was change by modify the active_*

gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-raw, format=(string)BGRA, framerate=(fraction)30/1' ! videoconvert ! ximagesink

Thank you so much ShaneCCC
by the way, if i want to change the mode_table[s_data->mode_prop_idx] : mode=0 → mode=1, where should i change

Input the width=(int)1280, height=(int)1020 and framerate to match mode you want to select.

Hi ShaneCCC
i wonder know if i can usb gstreamer command to set the senser mode = 1
Or in my driver ,where i change can set the mode = 1

You can implement use_sensor_mode_id and set it by v4l2-ctl -c sensor_mode=1 for it.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/camera_sensor_prog.html#wwpID0E0Q50HA

1 Like

if can i use v4l2-src to set mode?

You can set it by v4l2-ctl then run the v4l2src

1 Like

Hi ShaneCCC
it’s OK
Thank you so much for your help.
Best wishes with you

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.