The driver has quite a few v4l2 compatibility issues, however these were the two issues blocking me from using my camera with v4l2src. I've included the relevant sections of the patches, as mine also contain changes for my camera.
1) Switch IPU from parallel to MIPI CSI-2 input:
--- a/arch/arm/mach-mx6/board-mx6q_sabrelite.c
+++ b/arch/arm/mach-mx6/board-mx6q_sabrelite.c
@@ -717,7 +717,11 @@ static void mx6q_csi0_io_init(void)
* IPU2 CSI0 directly connect to mipi csi2,
* virtual channel is fixed to 2
*/
- mxc_iomux_set_gpr_register(1, 19, 1, 1);
+ mxc_iomux_set_gpr_register(1, 19, 1, 0);
}
2) Stop driver from sending infinite standard enumeration responses. This should allow v4l2src to proceed.
--- a/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
+++ b/drivers/media/video/mxc/capture/mxc_v4l2_capture.c
@@ -2234,7 +2258,13 @@ static long mxc_v4l_do_ioctl(struct file *file,
case VIDIOC_ENUMSTD: {
struct v4l2_standard *e = arg;
pr_debug(" case VIDIOC_ENUMSTD\n");
- *e = cam->standard;
+
+ retval = -EINVAL;
+
+ if (e->index == 0) {
+ *e = cam->standard;
+ retval = 0;
+ }
break;
}