I am implementing a driver for a CSI camera, and I am having issues with all frames I capture containing only zeros when I use the following command:
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --set-ctrl=bypass_mode=0 --stream-count=3 -d /dev/video0 --stream-to=test_cam_data --verbose
hexdump -C test_cam_data
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |…|
I was wondering if this issue may also be related to a discrepancy between the clocks my camera generates, and those expected by the jetson.
When comparing to a Raspberry Pi camera on a scope I notice 1V2 pulses at the frequency of the frame rate. I do not see these pulses on the custom camera. I believe the custom camera just outputs clock continuously, rather than changing to low power mode between frames.
The device tree files have a discontinuous_clk setting. Which in the case of the IMX219 is set to “yes”. Should this be set to “no” in the case where the sensor continuously outputs a clock? and would this be causing my issue?
I get the following errors when the debug settings from https://elinux.org/Jetson_TX2_Camera_BringUp are enabled
[ 1182.369724] video4linux video0: Syncpoint already enabled at capture done!0
[ 1182.572133] video4linux video0: tegra_channel_capture_done: MW_ACK_DONE syncpoint time out!0
[ 1182.580901] video4linux video0: TEGRA_VI_CSI_ERROR_STATUS 0x00000004
[ 1182.580951] vi 54080000.vi: TEGRA_CSI_PIXEL_PARSER_STATUS 0x00000080
[ 1182.580990] vi 54080000.vi: TEGRA_CSI_CIL_STATUS 0x00000000
[ 1182.581029] vi 54080000.vi: TEGRA_CSI_CILX_STATUS 0x00000000
[ 1182.581209] vi 54080000.vi: cil_settingtime was autocalculated
[ 1182.581222] vi 54080000.vi: csi clock settle time: 13, cil settle time: 10
and a trace says this:
vi-output, cam1-18493  … 1182.302335: tegra_channel_capture_frame: sof:1182.178411609
vi-output, cam1-18493  … 1182.336534: tegra_channel_capture_frame: sof:1182.212188026
vi-output, cam1-18493  … 1182.369693: tegra_channel_capture_frame: sof:1182.245776157
v4l2-ctl-18492  … 1182.581303: tegra_channel_capture_done: mw_ack_done:0.22894443866
Do I need low frequency pulses on the clock line? How would I verify if data is being recieved through the MIPI interface, regardless if the images are the correct size, or data type.
The sensor I am using outputs in RAW8 and RAW10. How can I configure the device tree for these transfer formats?.