• Hardware Platform: NVIDIA Jetson Orin Nano
• JetPack Version: 5.1.1
Hi,
I’m developing a camera driver port for the NVIDIA Jetson Orin Nano. I already got a driver completely functional on a Orin NX (also JetPack 5.1.1) and I ported it to the Orin Nano platform but I’m having the following issues when trying to dequeue buffers with the following command
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080 --set-ctrl bypass_mode=0 --stream-mmap
dmesg reports
[ 152.240104] sensor7312 10-0061: sensor7312_start_streaming: output_enable Register to be written 0xF008 with value 0x01
[ 152.340424] sensor7312 10-0061: sensor7312_start_streaming: output_enable Register to be read 0xF008 with value 0x01
[ 153.799595] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 153.808743] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 153.818978] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 153.826696] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 153.837353] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 153.845067] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 153.855884] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
I’ve checked the v4l2 debug trace and I’ve seen the following messages
nvidia@ubuntu:~$ sudo cat /sys/kernel/debug/tracing/trace
# tracer: nop
#
# entries-in-buffer/entries-written: 202519/202519 #P:6
#
# _-----=> irqs-off
# / _----=> need-resched
# | / _---=> hardirq/softirq
# || / _--=> preempt-depth
# ||| / delay
# TASK-PID CPU# |||| TIMESTAMP FUNCTION
# | | | |||| | |
kworker/2:9-146 [002] .... 92.152817: rtcpu_string: tstamp:3703081500 id:0x04010000 str:"VM0 deactivating."
kworker/2:9-146 [002] .... 115.848065: rtcpu_string: tstamp:4443229457 id:0x04010000 str:"VM0 activating."
kworker/2:9-146 [002] .... 115.848071: rtcpu_vinotify_event: tstamp:4443868739 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:142187897664 data:0x719d580010000000
kworker/2:9-146 [002] .... 115.848072: rtcpu_vinotify_event: tstamp:4443869000 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:142187907392 data:0x0000000031000001
kworker/2:9-146 [002] .... 115.848072: rtcpu_vinotify_event: tstamp:4443869293 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:142187999040 data:0x719d550010000000
kworker/2:9-146 [002] .... 115.848073: rtcpu_vinotify_event: tstamp:4443869540 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:142188008928 data:0x0000000031000002
kworker/2:9-146 [002] .... 118.536027: rtcpu_vinotify_event: tstamp:4527962873 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:144889673664 data:0x719d580010000000
kworker/2:9-146 [002] .... 118.536030: rtcpu_vinotify_event: tstamp:4527963131 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:144889731264 data:0x0000000031000001
kworker/2:9-146 [002] .... 118.536030: rtcpu_vinotify_event: tstamp:4527963424 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:144889748832 data:0x719d550010000000
kworker/2:9-146 [002] .... 118.536031: rtcpu_vinotify_event: tstamp:4527963672 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:144889809184 data:0x0000000031000002
The register configuration I’m using is the same as the one used in the Orin NX and it has been tested that this configuration works correctly for dequeuing buffers using the specific hardware that I have.
Also, this is the mode configuration that I’m using in my device tree
#define MODE_0(_serial) \
mode0 { /* sensor7312_MODE_1920X1080 */ \
mclk_khz = "24000"; \
num_lanes = "4"; \
tegra_sinterface = _serial; \
phy_mode = "DPHY"; \
discontinuous_clk = "no"; \
dpcm_enable = "false"; \
cil_settletime = "0"; \
lane_polarity = "6"; \
\
active_w = "1920"; \
active_h = "1080"; \
mode_type = "yuv"; \
pixel_phase = "yuyv"; \
csi_pixel_bit_depth = "16"; \
readout_orientation = "90"; \
line_length = "2120"; \
inherent_gain = "1"; \
mclk_multiplier = "80"; \
pix_clk_hz = "63000000"; \
\
gain_factor = "16"; \
framerate_factor = "1000000"; \
exposure_factor = "1000000"; \
min_gain_val = "16"; /* 1.00x */ \
max_gain_val = "356"; /* 22x */ \
step_gain_val = "1"; \
default_gain = "16"; /* 1.00x */ \
min_hdr_ratio = "1"; \
max_hdr_ratio = "1"; \
min_framerate = "2000000"; /* 2.0 fps */ \
max_framerate = "30000000"; /* 30.0 fps */ \
step_framerate = "1"; \
default_framerate = "30000000"; /* 30.0 fps */ \
min_exp_time = "13"; /* us */ \
max_exp_time = "683709"; /* us */ \
step_exp_time = "1"; \
default_exp_time = "2495"; /* us */ \
\
embedded_metadata_height = "0"; \
};
Is there any differences in the capture interface between the NVIDIA Jetson Orin Nano and the NVIDIA Jetson Orin NX?
Is there any key modification required to implement when porting a camera driver from the Orin NX to the Orin Nano?