8-camera kernel failed to open last two cameres

Hi forum,

I am developing my own modules using imx390, ub954 and ub953. For now I can get 8 device nodes in /dev, and I can also open 6 cameras( video0 to video5). But when I tried to open last two cameras, i2c channel cannot detect serdes and cameras.

Hardware should be working, because I also have developed 4-camera version, the camera connected to last MIPI lanes can be opened.

This is my dtsi file

i2c@3 {
imx390_g@1b {
compatible = “nvidia,imx390”;
/* I2C device address */
reg = <0x1b>;

			/* V4L2 device node location */
			devnode = "video6";

			/* Physical dimensions of sensor */
			physical_w = "3.674";
			physical_h = "2.738";

			sensor_model = "imx390";

			/* 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";*/

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

			mode0 { // IMX390_MODE_1920X1080
				mclk_khz = "24000";
				num_lanes = "4";
				tegra_sinterface = "serial_g";
				phy_mode = "DPHY";
				vc_id = "0";
				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 = "1936";
				active_h = "1100";
				readout_orientation = "0";
				line_length = "3300";
				inherent_gain = "1";
				mclk_multiplier = "25";
				pix_clk_hz = "111375000";
				serdes_pix_clk_hz = "833333333";

				gain_factor = "10";
				min_gain_val = "0"; /* dB */
				max_gain_val = "300"; /* dB */
				step_gain_val = "3"; /* 0.3 */
				default_gain = "0";
				min_hdr_ratio = "1";
				max_hdr_ratio = "1";
				framerate_factor = "1000000";
				min_framerate = "30000000";
				max_framerate = "30000000";
				step_framerate = "1";
				default_framerate = "30000000";
				exposure_factor = "1000000";
				min_exp_time = "59"; /*us, 2 lines*/
				max_exp_time = "33333";
				step_exp_time = "1";
				default_exp_time = "33333";/* us */
				embedded_metadata_height = "1";
			};

			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					imx390_imx390_out6: endpoint {
						vc-id = <0>;
						port-index = <5>;
						bus-width = <4>;
						remote-endpoint = <&imx390_csi_in6>;
						};
					};
				};
			};
			imx390_h@1c {
			compatible = "nvidia,imx390";
			/* I2C device address */
			reg = <0x1c>;

			/* V4L2 device node location */
			devnode = "video7";

			/* Physical dimensions of sensor */
			physical_w = "3.674";
			physical_h = "2.738";

			sensor_model = "imx390";

			/* 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";*/

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

			mode0 { // IMX390_MODE_1920X1080
				mclk_khz = "24000";
				num_lanes = "4";
				tegra_sinterface = "serial_g";
				phy_mode = "DPHY";
				vc_id = "1";
				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 = "1936";
				active_h = "1100";
				readout_orientation = "0";
				line_length = "3300";
				inherent_gain = "1";
				mclk_multiplier = "25";
				pix_clk_hz = "111375000";
				serdes_pix_clk_hz = "833333333";

				gain_factor = "10";
				min_gain_val = "0"; /* dB */
				max_gain_val = "300"; /* dB */
				step_gain_val = "3"; /* 0.3 */
				default_gain = "0";
				min_hdr_ratio = "1";
				max_hdr_ratio = "1";
				framerate_factor = "1000000";
				min_framerate = "30000000";
				max_framerate = "30000000";
				step_framerate = "1";
				default_framerate = "30000000";
				exposure_factor = "1000000";
				min_exp_time = "59"; /*us, 2 lines*/
				max_exp_time = "33333";
				step_exp_time = "1";
				default_exp_time = "33333";/* us */
				embedded_metadata_height = "1";
			};

			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				port@0 {
					reg = <0>;
					imx390_imx390_out7: endpoint {
						vc-id = <1>;
						port-index = <5>;
						bus-width = <4>;
						remote-endpoint = <&imx390_csi_in7>;
						};
					};
				};
			};
		};
	};
};

};

Does anyone have any ideas?

Thanks in advence.

Not sure what’s wrong but we got 8 cameras up - 4 our own, 4 “imx185-like” w/ 2 CSI2 lanes per camera. AGX module but a custom carrier.

This is your own carrier on this?

I’m stuck on a single 4-lane mipi “camera” to a FPGA that’s generating the mipi stream.

Good luck
Larry@FLIR

Hi Larry. Thank you for your reply. We are developing this on xavier developer kit, with original carrier board.

How are the mipi streams connected - are you directly on the connector at the bottom or did you buy an interposer like the Leopard Imaging card?

We are using leopard imaging card to connect xavier and deserializer

Does the video node 6/7 generate in /dev?
Does v4l2-ctl command working?

The nodes are generated in /dev. And the v4l2-ctl command just reported “VIDIOC_STREAMON: failed: Remote I/O error”.

I also got a patch to see whether it had any difference comparing to other version in device tree. The vi and csi connection setting is the same one as the working version. I used i2cdetect and found out it can not detected camera and serdes.

The hardware should be fine, I tested it with other version we have.

There might be something wrong about the i2c, but I am not sure.

We don’t have 8 camera driver for LI-IMX390-FPDLINKIII yet, but we can share the patch files of our other camera driver (which supports 8 FPDLINKIII cameras) for reference.
Please contact simonz@leopardimaging.com for the patch files.