We are implementing a multi-channel composite video capture board, with 4 CSI
inputs to a TX2 module. We are to the point where we believe we have properly
formatted CSI data being fed into the CSI inputs, and on the kernel/dtb side
we have a driver modeled on the ov5693 driver that seems to integrate properly
with the media control layer (media-ctl -p looks correct) and the v4l2 driver
(we have /dev/video0 - /dev/video3).
We are testing with v4l2-ctl
v4l2-ctl -d /dev/video0 --stream-mmap --stream-count 10 --stream-to frames.raw
The kernel seems to be configuring the CSI interface and the VI interface for
the data stream. The only problem is no video frames are captured.
Every time we end up with timeouts:
3594.091001] tegra-vi4 15700000.vi: PXL_SOF syncpt timeout! err = -11
Occasionally there are specific vi error messages, currently error 7:
[ 103.727862] tegra-vi4 15700000.vi: Status: 7 channel:00 frame:0000
[ 103.727865] tegra-vi4 15700000.vi: timestamp sof 113356046112 eof 113372091744 data 0x00000001
[ 103.727867] tegra-vi4 15700000.vi: capture_id 16 stream 0 vchan 0
Based on what I can see in rtcpu/vi-notify.h, this is a CHANSEL_SHORT_FRAME error.
We have adjusted the line_length in the device tree but it hasn’t changed anything.
Is there a good way to figure out why the video data isn’t getting transferred? I’ve
printed out the csi and vi register configuration steps if that would help.
Has anyone else run into problems like this?
Thanks in advance,
Cary