Xavier connect FDLINK camera

Our design use MIPI CSI 2 and 3 to connect the DS90UB960,connect to four 1080P fdlink camera ,is it ok? and is there any suggestion to consult in software? thanks

Is it ok?

Yes, it’s no problem.
For the software please have a check the programing guide.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fcamera_sensor_prog.html%23

ok thanks

Hi ShaneCCC

Is there any hardware registers document about CSI and VC-ID?
Could you provide it ?

Why do you need the REG for the VI/CSI. I think you can check the TRM for the REG.
For the VC support you can check the reference below design.
…/hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-modules/tegra186-camera-imx390-a00.dtsi

Hi ShaneCCC,
Thank you for your replay!
We have modified it with reference to the DTS of IMX390, but found the following errors. Give us some suggestions for this error please.

Thank you!

BR,

image|690x280

Did you disable plugin manager?

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fcamera_sensor_prog.html%23wwpID0E0XF0HA

No, we set it as the default(following link), so it’s enabled.
Should we disable it?

https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-321/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fcamera_sensor_prog.html%23wwpID0E0SG0HA

Thank you!

BR,

If your board didn’t have EEPROM for implement auto detect you need to disable plugin manager to use main platform device tree for your sensor driver.

Thank you for your reply!
I’m a little confused about what does this have to do with EEPROM?
We designed our carrier board according to OEM design.
If not have EEPROM, how do we disable it?

The sensor board have EEPROM for the auto detect. If your implement didn’t have EEPROM you have to follow the document to disable it by modify the device tree.

Our camera module has the ISP in module,so we don’t use the ISP in Xavier,if this effect the adjust?

So if we do not use ISP of Xavier,how we can disable it?

If your sensor have ISP and output YUV format you can just ignore the gain/frametate/exposure,
And you can only use v4l2 APP for capture the frame data like v4l2-ctl or v4l2src

Hi ShaneCCC,
Thank you very much for your replay!
We have disabled plugin manager by exclude file “tegra194-plugin-manager-p2822-0000.dtsi”, but we found the following mistakes" ep of_device is not enabled /host1x/vi@15c10000/ports/port@0/endpoint .", please help to see where the problem may be.

Thanks,

BR

--------log----

[ 6.732642] tegra194-isp5 14800000.isp: initialized
[ 6.738539] tegra194-vi5 15c10000.vi: using default number of vi channels, 36
[ 6.740853] tegra194-vi5 15c10000.vi: initialized
[ 6.744579] tegra194-vi5 15c10000.vi: ep of_device is not enabled /host1x/vi@15c10000/ports/port@0/endpoint.
[ 6.745287] tegra186-cam-rtcpu bc00000.rtcpu: Trace buffer configured at IOVA=0xbff00000

Dump the device tree to check if it’s exactly as your declaration.

sudo dtc -I fs -O dts -o extracted_dt.dts /proc/device-tree

Hi ShaneCCC,

see attachment file for check,please.
extracted_dt.dts.log (326.7 KB)

Looks like you didn’t include your camera device tree.
The tegra-camera-platform still reference code.
Please go through to sensor programing guide to know much detail.

tegra-camera-platform {
		isp_bw_margin_pct = <0x19>;
		compatible = "nvidia, tegra-camera-platform";
		max_pixel_rate = <0xb71b0>;
		num_csi_lanes = <0x4>;
		vi_peak_byte_per_pixel = <0x2>;
		max_lane_speed = <0x16e360>;
		phandle = <0x1c2>;
		tpg_max_iso = <0x3bc400>;
		vi_bw_margin_pct = <0x19>;
		linux,phandle = <0x1c2>;
		min_bits_per_pixel = <0xa>;
		isp_peak_byte_per_pixel = <0x5>;

		modules {

			module4 {
				badge = "e3333_bottomright_P5V27C";
				status = "disabled";
				phandle = <0x1cf>;
				position = "bottomright";
				linux,phandle = <0x1cf>;
				orientation = [31 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
					phandle = <0x1d1>;
					linux,phandle = <0x1d1>;
				};

				drivernode0 {
					devname = "ov5693 34-0036";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9548@77/i2c@4/ov5693_e@36";
					phandle = <0x1d0>;
					linux,phandle = <0x1d0>;
				};
			};

			module2 {
				badge = "e3333_centerright_P5V27C";
				status = "disabled";
				phandle = <0x1c9>;
				position = "centerright";
				linux,phandle = <0x1c9>;
				orientation = [31 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
					phandle = <0x1cb>;
					linux,phandle = <0x1cb>;
				};

				drivernode0 {
					devname = "ov5693 32-0036";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9548@77/i2c@2/ov5693_c@36";
					phandle = <0x1ca>;
					linux,phandle = <0x1ca>;
				};
			};

			module0 {
				badge = "ar231_bottom_atar231";
				status = "disabled";
				phandle = <0x1c3>;
				position = "rear";
				linux,phandle = <0x1c3>;
				orientation = [30 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
					phandle = <0x1c5>;
					linux,phandle = <0x1c5>;
				};

				drivernode0 {
					devname = "ar231 80-0018";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@31e0000/ar231_a@18";
					phandle = <0x1c4>;
					linux,phandle = <0x1c4>;
				};
			};

			module5 {
				badge = "e3333_topright_P5V27C";
				status = "disabled";
				phandle = <0x1d2>;
				position = "topright";
				linux,phandle = <0x1d2>;
				orientation = [31 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
					phandle = <0x1d4>;
					linux,phandle = <0x1d4>;
				};

				drivernode0 {
					devname = "ov5693 35-0036";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9548@77/i2c@5/ov5693_g@36";
					phandle = <0x1d3>;
					linux,phandle = <0x1d3>;
				};
			};

			module3 {
				badge = "e3333_topleft_P5V27C";
				status = "disabled";
				phandle = <0x1cc>;
				position = "topleft";
				linux,phandle = <0x1cc>;
				orientation = [31 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
					phandle = <0x1ce>;
					linux,phandle = <0x1ce>;
				};

				drivernode0 {
					devname = "ov5693 33-0036";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9548@77/i2c@3/ov5693_d@36";
					phandle = <0x1cd>;
					linux,phandle = <0x1cd>;
				};
			};

			module1 {
				badge = "imx390_front";
				status = "disabled";
				phandle = <0x1c6>;
				position = "front";
				linux,phandle = <0x1c6>;
				orientation = [31 00];

				drivernode1 {
					pcl_id = "v4l2_lens";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
					phandle = <0x1c8>;
					linux,phandle = <0x1c8>;
				};

				drivernode0 {
					devname = "imx390 30-001c";
					pcl_id = "v4l2_sensor";
					status = "disabled";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx390_b@1c";
					phandle = <0x1c7>;
					linux,phandle = <0x1c7>;
				};
			};
		};
	};

Thank you!
We exclude some irrelevant camera,and catch the dts , help to check attachment file if there is any problem please!

BTW, there is a “video0” in /dev/video0.

Thanks,
BR

extracted_dt.dts.dts.log (246.8 KB)