@@ -28,6 +28,10 @@
#define VIMC_CAP_DRV_NAME "vimc-capture"
+/* Checks if the device supports multiplanar capture */
+#define IS_MULTIPLANAR(vcap) \
+ (vcap->vdev.device_caps & V4L2_CAP_VIDEO_CAPTURE_MPLANE)
+
static const u32 vimc_cap_supported_pixfmt[] = {
V4L2_PIX_FMT_BGR24,
V4L2_PIX_FMT_RGB24,
@@ -282,7 +286,9 @@ static int vimc_cap_start_streaming(struct vb2_queue *vq, unsigned int count)
return ret;
}
- vcap->stream.producer_pixfmt = vcap->format.fmt.pix.pixelformat;
+ vcap->stream.producer_pixfmt = IS_MULTIPLANAR(vcap) ?
+ vcap->format.fmt.pix_mp.pixelformat :
+ vcap->format.fmt.pix.pixelformat;
ret = vimc_streamer_s_stream(&vcap->stream, &vcap->ved, 1);
if (ret) {