I noticed you have native support for rpi-imx219 and rpi-imx477 cameras in Jetpack5.1 so I started to create a device tree for a custom board that has the same layout as the orin-nx devkit. 2 cameras at width x2, one on serial_a and another on serial_c.
I noticed that while the camera could stream off of serial_a, serial_c seemed to freeze.
When using the command:
gst-launch-1.0 nvarguscamerasrc /dev/video0 ! nv3dsink
this would manifest as a black screen.
When using the command
v4l2-ctl -d /dev/video0 --stream-mmap
the pipeline would just freeze.
both commands would yield this dmesg log, “NULL VI channel received”
I tried this on the orin-nx devkit, and sure enough CAM1 was giving me this same issue.
I tried the following dtbs:
tegra234-p3767-0000-p3509-a02.dtb
and
tegra234-p3767-0000-p3768-0000-a0.dtb
and the sources seem to be using this dts source for the imx219:
Linux_for_Tegra/sources/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-camera-rbpcv2-imx219.dtsi
Is this a known issue? Is the dts supplied with this Jetpack validated and operational?
Let me know what I can do to further debug this issue on serial_c.
since Jetpack-5.1 have several device tree overlays, which might override your settings.
please have a try to remove those device tree overlays for a quick test.
for example,
$ ls boot/*219*.dtbo
boot/tegra194-p3668-all-p3509-0000-camera-imx219-dual.dtbo boot/tegra234-p3767-camera-imx477-imx219.dtbo
boot/tegra194-p3668-all-p3509-0000-camera-imx477-imx219.dtbo boot/tegra234-p3767-camera-p3768-imx219-dual.dtbo
boot/tegra234-p3767-camera-imx219-dual.dtbo boot/tegra234-p3767-camera-p3768-
When I have encountered issues like this, it has been related to the Sensor → CSI → VI pipeline definition in my device tree. I would make sure your port-indexs, tegra_sinterfaces, etc. are all correct and that there are not conflicts between the two pipelines.
Also I noticed this pinmux change dtbo tegra234-p3767-0000-p3768-0000-csi.dtbo
and added it to the devkit device tree, but it didn’t help. What is the significance of that file? Is there a pinmux change that needs to be done to enable the csi lines on tegra_sinterface serial_c? Should the device tree on it’s own work by default? Note that I am testing the devkit implementation that is currently shipped with l4t 35.2.1 tegra234-p3767-0000-p3768-0000-a0.dtb which includes cvb/tegra234-camera-rbpcv2-imx219.dtsi, I haven’t modified anything and CAM0 is working, just not CAM1.
this looks like an issue without lane_polarity configuration.
as you may knew… CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.
BTW,
since Jetpack-5.1.1 is now available, could you please moving to the latest release.
there’re fixes check-in to address some camera related issues.
I’ve moved to Jetpack 5.1.1 and am working on a Orin-NANO release, and the issues are still present, I have the following lane_polarity in my mode table for both camera ports:
I just noticed the devkit config has been changed for the second camera to lane_polarity=0 I’ll try that.
This worked, I just heard from someone that worked on the early hardware bringup yesterday that they noticed there was something flipped on csi2 (different polarity from xavier-nx)…
Do you have a definition for this lane_polarity variable? Can you post it here I can’t find it in the module-properties section of the jetson developer guide.
I’m guessing it will always be “6” for csi0 and “0” for csi2.
Will all other lanes be “6” or? It would good if you can point to some documentation regarding that variable.
it’s mentioned in reference camera driver,
for example, $public_sources/kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-camera-rbpcv2-imx219.dtsi
* lane_polarity
* Based on the camera connector pin.
* CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1
* LSB | BIT1 | BIT2 | MSB
* if there is a polarity swap on any lane, the bit corrsponding
* to the lane should be set
* e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001
* e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110
lane_polarity must be 0x6 for sensors attached to CSI0/1 port, since CSI0 D1 and CSI1 D0 has P/N swizzled, in Orin NX 16GB, Orin NX 8GB, Orin Nano 8GB and Orin Nano 4GB modules. Set it by 0x0 for other cases.