The frame rate can only be output once, and it cannot be output after that

Hi All,
The frame rate can only be output once, and it cannot be output after that.Could you help me figure out what’s going on?

Problem phenomenon:

root@tegra:/home/robot# v4l2-ctl -d /dev/video0 --set-ctrl sensor_mode=1 --set-fmt-video=width=1920,height=1536 --stream-mmap
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<^C
root@tegra:/sys/kernel/debug/dynamic_debug# v4l2-ctl -d /dev/video0 --set-ctrl sensor_mode=1 --set-fmt-video=width=1920,height=1536 --stream-mmap

^C^C^C^C^C^C
root@tegra:/sys/kernel/debug/dynamic_debug# 

Block Diagram:

CPU:
Orin NX

isx031 bandwidth 4.3G

software:

root@tegra:/sys/kernel/debug/dynamic_debug# cat /etc/nv_tegra_release
# R35 (release), REVISION: 4.1, GCID: 33958178, BOARD: t186ref, EABI: aarch64, DATE: Tue Aug  1 19:57:35 UTC 2023

dts:
dts.txt (485.1 KB)

robot@tegra:~$ v4l2-ctl --list-formats-ext --device /dev/video0
ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'YUYV' (YUYV 4:2:2)
                Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1536
                        Interval: Discrete 0.017s (60.000 fps)
                Size: Discrete 1920x1280
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1380
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1440
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1600x1300
                        Interval: Discrete 0.033s (30.000 fps)
        [1]: 'YUYV' (YUYV 4:2:2)
                Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1536
                        Interval: Discrete 0.017s (60.000 fps)
                Size: Discrete 1920x1280
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1380
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1920x1440
                        Interval: Discrete 0.033s (30.000 fps)
                Size: Discrete 1600x1300
                        Interval: Discrete 0.033s (30.000 fps)

The problem looks like the MAX929* didn’t reset well cause the problem.

Hi,

Reset max9296 and it’s still the same.

trace-err.log (1.9 MB)
trace-ok.log (1.3 MB)

The failed and ok both have deskew calibration. That’s weird.

kworker/3:1-97      [003] .... 11153.471633: rtcpu_nvcsi_intr: tstamp:349252953947 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x0e000000

Confirm the pix_clk_hz/serdes_pix_clk_hz to confirm the data rate > 1.5G and sensor send the deskew word.

Skew calibration is required if sensor or deserializer is using DPHY, and the output data rate is > 1.5Gbps.
An initiation deskew signal should be sent by sensor or deserializer to perform the skew calibration. If the deskew signals is not sent, the receiver will stall, and the capture will time out.
You can calculate the output data rate with the following equation:

Output data rate = (sensor or deserializer pixel clock in hertz) * (bits per pixel) / (number of CSI lanes)

Information as follows:

pix_clk_hz = "216000000"; // 2250 x 1600 x 60 
serdes_pix_clk_hz = "225000000"; // 18,000,000,000 x 2 /16

Are the settings of pix_clk_hz and serdes_pix_clk_hz in the above information correct?

Output data rate = (sensor or deserializer pixel clock in hertz) * (bits per pixel) / (number of CSI lanes)
1,684,000,000 = 842,000,000 x 16 / 2

The log below indicates whether orin NX has been deskewed.

kworker/3:1-97      [003] .... 11153.471633: rtcpu_nvcsi_intr: tstamp:349252953947 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x0e000000

Right, then you have to confirm the sensor send the deskew word to MIPI bus.

Thanks

OK, thank you. I am looking for a solution to the deserializer’s deskew function.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.