Hi Rick,
Ah, I didn't realize that the i.MX6ULL also doesn't have an IPU. I'm afraid I only have experience of the i.MX7.
For the i.MX7 I used the Linux 'sub-device' framework i.e. /drivers/media/platform/mxc/subdev. I had to write a driver for the ADV7280, which I based on 'ov5647_mipi.c' and 'ov5640_mipi.c'. I also patched file 'mx6s_capture.c':
- For NTSC, I hard-coded the image size within function csi_set_imagpara() to 720x507. Its 507 because my Composite-Video to MIPI chip (ADV7280) is configured as a PROGRESSIVE output. I'm not sure what you would need for INTERLACED as you would get heights of 253 & 254.
- I had to add a definition for YUYV-16 (format used by the ADV7280) in 'struct mx6s_fmt'
- I also had to set both FBUF_STRIDE and DEINTERLACE_STRIDE to zero i.e. Register CSI_CSIFBUF_PARA = 0x00. [This contradicts the i.MX7 manual, which I find very poorly written with regard to the CSI MIPI sections.]
I then also ignored the i.MX V4L2 test applications.[I couldn't get them to work properly, and as I'm not building using YOCTO (I'm using BuildRoot) I kept having to jump back to a YOCTO build-system to re-compile the test-apps.] Instead I used gstreamer-1.0 for testing. The following was used to capture 3 frames to a file:
gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=3 ! 'video/x-raw,format=(string)UYVY,width=(int)720,height=(int)507' ! filesink location=./tmp1
One of the problems I found of getting support on this forum regarding Video-Capture is that you can get 'answers' that are very specific to a particular Linux build / i.MX / capture-Device, which can be very misleading for your own platform. [I include my own answers here!] Hopefully something might help trigger a solution for you.