GMSL2 configuration and capture issues

Hi all,

We are using a Jetson Xavier NX with a custom carrier board and a custom camera with Omnivision sensor and GMSL2 MAX9295/MAX9296 SerDes. And we have the current situation:

  1. Camera without GMSL2: We are able to capture without problems in the Jetson board

  2. Camera with GMSL2 and Test Pattern enabled in the sensor: We are able to capture the test pattern properly, at the resolution and framerate configured, which make us think the GMSL2 bridge is properly configured.

  3. Camera with GMSL2 enabling capture from sensor: Here is the problem, we are able to capture just a few frames in the Jetson board until it stops receiving images. We are using the same configuration used in 1)

Looks like the issue with 3) might be related to the serdes_pixel_clock or the deskew configuration on the deserializer. Have anyone seen something similar? Looks like in Jetpack 5.x the pixel_clock configuration is pickier, do you have any recommended settings? We are trying to capture 3840x2160@30 RAW12

Thanks in advance.

Please adjust the “serdes_pixel_clock” to make output data rate > 1.5Gbps to confirm.

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)

Hi @ShaneCCC ,

We have tried several combinations of deskew configuration on the deserializer and serdes pixel clock without success. The same issue persists where we are able to capture 4 frames only and then it stalls. Do you have any additional recommendations? Any debugging log we could enable to go deeper on the issue analysis?

Maybe check the trace log if any clue first.


Did you boost the clocks to try?

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

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