ISL79987 MIPI-CSI capture problem on Xavier AGXi

Hello all.

  1. I have custom board with ISL79987 MIPI-CSI chip and Xavier AGXi with L4T 35.4.1.
  2. ISL79987 connected phisically to Xavier AGXi through x2 lanes CSI.
  3. I’ve ported driver for ISL79987 from kernel 5.18 and adopted it for kernel 5.10 with some changes, but it still does not use tegra_camera_platform approach.
  4. I’ve created my own dtb and sucessfully got /dev/video0 in the system. Device tree right now uses x1 lane configuration for CSI.
  5. Normally, I can’t capture video. I have next log with it:

[ 219.196688] Regmap_read 87h
[ 219.197194] ISL79987 1 channel
[ 219.200495] tegra-camrtc-capture-vi tegra-capture-vi: subdev isl7998x 2-0044 bound
[ 219.204781] Found ISL799x
[ 219.248536] ISL79987 probe has been started
[ 235.096783] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 235.097051] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 235.129849] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 398, flags: 0, err_data 32
[ 235.169793] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 399, flags: 0, err_data 512
[ 235.209421] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 400, flags: 0, err_data 512
[ 235.249724] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 401, flags: 0, err_data 512
[ 244.323311] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 244.323689] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 290.264369] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 290.264772] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 290.289877] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 290.290621] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 2, flags: 0, err_data 512
[ 290.331193] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 3, flags: 0, err_data 512
[ 290.370424] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 4, flags: 0, err_data 512
[ 292.602688] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 292.603116] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 346.768191] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 346.768390] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 346.810216] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 346.818333] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 2, flags: 0, err_data 512
[ 346.857945] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 3, flags: 0, err_data 512
[ 346.894077] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 4, flags: 0, err_data 512
[ 348.614882] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 348.615132] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr

  1. I can start capture video after enable debug messages as it described this Jetson/l4t/Camera BringUp - eLinux.org. But for start capturing enough boost clock only for VI and CSI:

echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/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/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate

After boost of clock for VI and CSI video start capturing:

$ v4l2-ctl --set-fmt-video=width=720,height=576,pixelformat=UYVY --stream-mmap --stream-count=100 -d /dev/video0
<<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<< 25.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<

But sometime it could be not stable:

$ v4l2-ctl --set-fmt-video=width=720,height=576,pixelformat=UYVY --stream-mmap --stream-count=100 -d /dev/video0
<<<<< 0.70 fps
<<<< 2.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<< 7.75 fps
<<<<<<<<<<<<<<<<<<<<<<<<< 11.20 fps
<<<<<<<<<<<<<<<<<<<<<<<<< 13.50 fps
<<<<<<<<<<<<<<<<

But even I have capturing I see next messages in log:

[ 441.074188] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 441.074563] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 494.779434] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 494.779777] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr
[ 498.836990] misc tegra_camera_ctrl: tegra_camera_isomgr_request: failed to reserve 0 KBps
[ 498.837265] misc tegra_camera_ctrl: tegra_camera_update_isobw: failed to reserve 0 KBps with isomgr

I have a couple a question:

  1. What could be a rootcause for this behavior?
  2. Should be driver ported for tegra_camera_platform?

Thank you.
tegra194-csi-isl79987.zip (2.0 KB)

Hi @sganzha

When boosting the clocks is needed for capture, could be a signal that the pix_clk_hz value on the device-tree need to be adjusted to be able to capture properly. You could try higher or lower values to see if you get better results without needing to boost the clocks.

Also, I noticed that you defined a serdes_pix_clk_hz, this is used only you have a MIPI sensor connected to a serializer-deserializer pair. So, if it’s not the case, please remove this parameter.

Regards,

Enrique Ramirez
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com
Website: www.ridgerun.com

1 Like

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