please check Release Notes for section [4. Implementation Details], you must create a device tree overlay (DTB overlay or .dtbo) file to register the camera module.
was this driver validated on JP-4 public release? you may refer to Camera Driver Porting for a high-level overview of changes.
let me have confirmation, it’s actually single 4-lane camera connected to 1st CSI brick which utilize CSI-A/B, right?
although we don’t have 4-lane reference camera on Xavier NX, we’ve tested 4-lane camera for AGX Xavier series, it should works ideally.
please see-also below.. $public_sources/kernel_src/hardware/nvidia/platform/t19x/common/kernel-dts/t19x-common-modules/tegra194-camera-imx185-a00.dtsi
let’s check the board schematic, you may refer to Jetson Xavier NX Product Design Guide to review the [Figure 9-2. CSI Connection Options].
you should use 4-lane camera with CSI0_D0/D1 and CSI1_D0/D1, whereas only CSI0 clock is used.
please also note that, Xavier NX series parse the device trees from jakku folders.
for instance, $public_sources/kernel_src/hardware/nvidia/platform/t19x/jakku/kernel-dts/…
you may see-also tegra194-camera-jakku-rbpcv2-imx219.dtsi for device tree of 2-lane camera, IMX219.
here’s commands to dump device tree into dts formats, please upload the results for cross-check. $ sudo dtc -I fs -O dts /sys/firmware/devicetree/base > /tmp/123.dts
please also double check Sensor Pixel Clock, which must be set correctly to avoid potential issues.
FYI, I usually using the sensor CSI lane output rate for evaluation.
such as.. pixel_clk_hz = sensor data rate per lane (Mbps) * number of lanes / bits per pixel
besides.. you may also try the commands to boost all the VI/CSI/ISP clocks for testing.
sudo su
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
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate
it looks good, could you please review pix_clk_hz, and also line_length
for instance,
I usually using sensor CSI lane output rate to evaluate clock rate, pixel_clk_hz = sensor data rate per lane (Mbps) * number of lanes / bits per pixel
and.. per developer guide, line_length value must be greater than or equal to active_w.
it’s VI to dequeue a frame, but discarding a frame due to the status without success.
you may dig into camrtc-capture.h for the actual capture status it’s reported.
besides.. did you have frames obtained by VI engine continuously?
if yes.. you may give it a quick try to omit the frame_err for testing.
for instance,
discarding frame will reported per above workaround, since it ignore the following frame_err only.
BTW, it also looks abnormal of your frame-id, which should be increasing instead keeping at zero.
Thank you for the response and the observation regarding the frame-id staying at zero.
Based on your comment, it seems the CSI pipeline might not be detecting frame boundaries correctly, which could indicate a timing mismatch between the sensor configuration and the VI/CSI settings.
Currently my configuration is:
Sensor: Sony IMX283
Resolution: 3840x2160
MCLK: 25 MHz (external crystal always on)
pixel_clk_hz: 287500000
line_length: 3960
fps: ~21
Observed behavior:
v4l2-ctl --stream-mmap shows streaming at ~14–16 fps
From your comment, I suspect the issue may be related to sensor timing or CSI configuration.
Could you please provide a hint on which parameter is most likely incorrect in this situation?
For example, should I revisit:
pixel_clk_hz calculation
line_length / frame_length values
CSI data rate configuration
sensor streaming registers
If there is a recommended way to verify whether the NVCSI block is receiving valid packets from the sensor, that would also help narrow down the issue.