I'm using a Variscite DART-MX8M-MINI SOM (imx8m-mini SOC), with Variscite VAR-DT8MCustomBoard and Variscite VCAM-5640S (Omnivision OV5640) camera board. This all works fine with the supplied Yocto Warrio (Kernel 4.19) / Yocto Zeus (Kernel 5.4) configuration, using gstreamer for live view or stream capture.
For my custom application I'm trying to capture frames from this OV5640 on the MIPI-CSI2 interface using V4L2 API, but VIDIOC_DQBUF blocks forever. I want to achieve capture without gstreamer, as we have custom hardware/driver for a camera that only produces 12bit Bayer data, which gstreamer does not support).
I expect the basic V4L2 capture functionality to work -- others on this NXP Communit appear to confirm that it does work, but I have tried tools such as v4l2-ctl and yavta - these all block. I have tried the basic capture sample from https://www.kernel.org/doc/html/v5.4/media/uapi/v4l/capture.c.html - this times out in the select() call. No matter what I do I can never receive image data via the V4L2 DQBUF ioctl.
Variscite have stated that they only support use of their system with gstreamer, so I'm a bit stuck, but the state their distribution is based on an NXP BSP, hence why I'm looking here for advice.
Has anyone got any camera working with CSI-2 MIPI and V4L2 DQBUF API on the imx8m-mini ?
Hi Ian
one can look at mx8 v4l2 unit test examples
mxc_v4l2_test\test - imx-test - i.MX Driver Test Application Software
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
I had not seen this test code before. This helped resolve the issue. It appears to be critical on the imx8 to call VIDIOC_S_PARM (set the frame rate). Adding this to my test code now lets me receive frames - amazing!