Is there an way to grab a pre-configured CSI-2 video stream?
we are using a TX2 dev board with R28.1.
The input video stream is generated by a SDI-to-CSI2 adapter, it’s a 4-lane, 1920x1080@60, YUV422 signal. And I connected the input MIPI-CSI data and clk lines directly to the CSI port of tx2.
What should I do to grab the video stream through the /dev/video0 device? Should I need to update device tree or modify the csi-camera drivers to register a camera device? what is the correct procedure?
We’ve tried to modify the /kernel/drivers/media/i2c/ov5693.c to ignore the i2c part and recompiled the kernel source. But still cannot get the /dev/video0, should I modify dts file? which dts or dtsi file should be used? because there are a few dts files and dtsi files, i am a little confused here.
I’ve been stucked here by this problem for quite some time.
I read the sensor programming guide, and found that
" Because Tegra uses Plugin Manager by default, you must first unregister Plugin Manager support first and then add your device information to the main device tree DTSI file."
So I need to modify “kernel/arch/arm64/boot/dts/tegra210-plugin-manager/tegra210-jetson-cv-plugin-manager.dtsi” to disbale plugin manager and add a new device in “tegra210-platforms/tegra210-jetson-cv-camera-modules.dtsi”, Is this right?
And do I need to modify driver source “i2c/ov5693.c”?
In the R28.1 user guide, there is a tip says:
“Use tegra210-jetson-cv-camera-modules.dtsi or tegra18x-quill-cv-camera-modules.dtsi as a model for generating your DTSI. In your file, change status = disable to status = okay.”

But I cannot find those dtsi files in R28.1 kernel source.
@ShaneCCC, Yes, I look into the directory : hardware/nvidia/platform/t18x/common/kernel-dts/t18x-common-platforms/ , cannot find tegra18x-quill-cv-camera-modules.dtsi file.
Do you reference to the l4t-documentation-28.1 ??
The file should be “tegra186-quill-camera-modules.dtsi” not tegra18x-quill-cv-camera-modules.dtsi
Using Main Platform Device Tree File
Register your new device by updating main platform DTSI file to include your new device DTSI file. Because Tegra uses Plugin Manager by default, you must first unregister Plugin Manager support, then add your device information to the main device tree DTSI file.
Prerequisites
• You have obtained the kernel source files. For more information, see Synchronizing the Kernel in the Development Guide for the release.
To register a device using main-platform device tree files
1. Locate and edit the following file:
• TX1:
hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p25970-2180-a00.dts
• TX2:
hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dtsi
2. In the DTSI, remove the following line:
• TX1:
#include "jetson-plugin-manager/tegra210-jetson-cv-camera-plugin-manager.dtsi"
• TX2:
#include <t18x-common-plugin-manager/tegra186-quill-camera-plugin-manager.dtsi"
3. Locate and edit the following file:
TX1:
hardware/nvidia/platform/t210/jetson/kernel-dts/tegra210-jetson-cv-base-p2597-2180-a00.dts
TX2:
hardware/nvidia/platform/t18x/quill/kernel-dts/tegra186-quill-p3310-1000-a00-00-base.dts
4. In the DTS file, replace the following line:
• TX1:
#include "jetson-platforms/tegra210-jetson-cv-camera-modules.dtsi"
• TX2:
#include <t18x-common-platforms/tegra186-quill-camera-modules.dtsi>
With an #include statement specifying the DTSI file for your new device.
Note:
Use tegra210-jetson-cv-camera-modules.dtsi or tegra18x-quill-cv-camera-modules.dtsi as a model for generating your DTSI. In your file, change status = disable to status = okay.
and find that the scripts does not make dtbs.
So do I need to add “make dtbs” in the makeKernel.sh and after compiling, copy arch/arm64/boot/dtb/tegra18xxxxx.dtb to /boot/?
And I also find that in /boot/extlinux/extlinux/extlinux.conf, no “FDT xxxxx.dtb” line. So if I want to modify device tree, should I need to add this line and which dtb should be used?
I’m following you guys discussion. If I understand correctly, the references to the discussion are in “NVIDIA Tegra Linux Driver Package, Development Guide, 28.1 Release”. The documentation can be downloaded by:
@ShaneCCC, and I just found that R28.1 no longer use /boot/extlinux/extlinux.conf to FDT .dtb. So cross-compilation and flashing from host to device is the only way to modify and update the device tree, am I right?
I already updated the device tree blobs and made the ov5693_probe function be called successfully, but still cannot make /dev/video0 show. Is there something wrong? I just skip the i2c register configuration. Here is my modified probe:
This probe function can be called successfully and run with no err, why there is still no /dev/video0?lease use flash command instead of replace the DTB file.
I’ve solved that problem and can get /dev/video0 now.
But there is another one that the input is a 1080p@60, YV12 format stream signal, what format params should be used in device tree node and how to preview the input stream?