All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps
@ 2019-06-04  7:06 ` Boris Brezillon
  2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
                     ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Boris Brezillon @ 2019-06-04  7:06 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Hans Verkuil, Laurent Pinchart,
	Sakari Ailus, linux-media
  Cc: kernel, Tomasz Figa, Hirokazu Honda, Nicolas Dufresne,
	Sylwester Nawrocki, Boris Brezillon

This is needed if we want the core to be able to check _MPLANE support
without having to call the ->vdioc_querycap() hook.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
---
Changes in v6:
- None

Changes in v5:
- Drop the fimc-lite and fimc-isp-video hack

Changes in v4:
- Add a hack in fimc-lite and fimc-isp-video ->querycap()
  implementation to avoid reporting _MPLANE caps as userspace is not
  ready for that
- Actually set CAP flags in vdev->device_caps instead of just reporting
  caps at the ->vidioc_querycap() level

Changes in v3:
- New patch
---
 drivers/media/platform/exynos-gsc/gsc-m2m.c        | 4 ++--
 drivers/media/platform/exynos4-is/common.c         | 5 +----
 drivers/media/platform/exynos4-is/common.h         | 3 +--
 drivers/media/platform/exynos4-is/fimc-capture.c   | 4 ++--
 drivers/media/platform/exynos4-is/fimc-isp-video.c | 3 ++-
 drivers/media/platform/exynos4-is/fimc-lite.c      | 4 +---
 drivers/media/platform/exynos4-is/fimc-m2m.c       | 4 ++--
 drivers/media/platform/rcar_jpu.c                  | 6 ++++--
 drivers/media/platform/s5p-mfc/s5p_mfc.c           | 2 ++
 drivers/media/platform/s5p-mfc/s5p_mfc_dec.c       | 7 -------
 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c       | 7 -------
 drivers/media/platform/ti-vpe/vpe.c                | 3 +--
 12 files changed, 18 insertions(+), 34 deletions(-)

diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
index c757f5d98bcc..cd02e3c233fc 100644
--- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
+++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
@@ -298,8 +298,6 @@ static int gsc_m2m_querycap(struct file *file, void *fh,
 	strscpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 		 dev_name(&gsc->pdev->dev));
-	cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
@@ -763,6 +761,8 @@ int gsc_register_m2m_device(struct gsc_dev *gsc)
 	gsc->vdev.lock		= &gsc->lock;
 	gsc->vdev.vfl_dir	= VFL_DIR_M2M;
 	gsc->vdev.v4l2_dev	= &gsc->v4l2_dev;
+	gsc->vdev.device_caps	= V4L2_CAP_STREAMING |
+				  V4L2_CAP_VIDEO_M2M_MPLANE;
 	snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
 					GSC_MODULE_NAME, gsc->id);
 
diff --git a/drivers/media/platform/exynos4-is/common.c b/drivers/media/platform/exynos4-is/common.c
index 76f557548dfc..d47a77c8d4d6 100644
--- a/drivers/media/platform/exynos4-is/common.c
+++ b/drivers/media/platform/exynos4-is/common.c
@@ -37,15 +37,12 @@ struct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity)
 }
 EXPORT_SYMBOL(fimc_find_remote_sensor);
 
-void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
-						unsigned int caps)
+void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap)
 {
 	strscpy(cap->driver, dev->driver->name, sizeof(cap->driver));
 	strscpy(cap->card, dev->driver->name, sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info),
 				"platform:%s", dev_name(dev));
-	cap->device_caps = caps;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 }
 EXPORT_SYMBOL(__fimc_vidioc_querycap);
 
diff --git a/drivers/media/platform/exynos4-is/common.h b/drivers/media/platform/exynos4-is/common.h
index 75b9c71d9419..58da94e7910c 100644
--- a/drivers/media/platform/exynos4-is/common.h
+++ b/drivers/media/platform/exynos4-is/common.h
@@ -12,5 +12,4 @@
 #include <media/v4l2-subdev.h>
 
 struct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity);
-void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
-			    unsigned int caps);
+void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap);
diff --git a/drivers/media/platform/exynos4-is/fimc-capture.c b/drivers/media/platform/exynos4-is/fimc-capture.c
index de4af0357a3c..ecfa6ab4a19d 100644
--- a/drivers/media/platform/exynos4-is/fimc-capture.c
+++ b/drivers/media/platform/exynos4-is/fimc-capture.c
@@ -728,8 +728,7 @@ static int fimc_cap_querycap(struct file *file, void *priv,
 {
 	struct fimc_dev *fimc = video_drvdata(file);
 
-	__fimc_vidioc_querycap(&fimc->pdev->dev, cap, V4L2_CAP_STREAMING |
-					V4L2_CAP_VIDEO_CAPTURE_MPLANE);
+	__fimc_vidioc_querycap(&fimc->pdev->dev, cap);
 	return 0;
 }
 
@@ -1765,6 +1764,7 @@ static int fimc_register_capture_device(struct fimc_dev *fimc,
 	vfd->release	= video_device_release_empty;
 	vfd->queue	= q;
 	vfd->lock	= &fimc->lock;
+	vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
 
 	video_set_drvdata(vfd, fimc);
 	vid_cap = &fimc->vid_cap;
diff --git a/drivers/media/platform/exynos4-is/fimc-isp-video.c b/drivers/media/platform/exynos4-is/fimc-isp-video.c
index bb35a2017f21..ad8dd672d4a7 100644
--- a/drivers/media/platform/exynos4-is/fimc-isp-video.c
+++ b/drivers/media/platform/exynos4-is/fimc-isp-video.c
@@ -349,7 +349,7 @@ static int isp_video_querycap(struct file *file, void *priv,
 {
 	struct fimc_isp *isp = video_drvdata(file);
 
-	__fimc_vidioc_querycap(&isp->pdev->dev, cap, V4L2_CAP_STREAMING);
+	__fimc_vidioc_querycap(&isp->pdev->dev, cap);
 	return 0;
 }
 
@@ -614,6 +614,7 @@ int fimc_isp_video_device_register(struct fimc_isp *isp,
 	vdev->minor = -1;
 	vdev->release = video_device_release_empty;
 	vdev->lock = &isp->video_lock;
+	vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
 
 	iv->pad.flags = MEDIA_PAD_FL_SINK;
 	ret = media_entity_pads_init(&vdev->entity, 1, &iv->pad);
diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
index 96f0a8a0dcae..a16b5bed59bb 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -658,9 +658,6 @@ static int fimc_lite_querycap(struct file *file, void *priv,
 	strscpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 					dev_name(&fimc->pdev->dev));
-
-	cap->device_caps = V4L2_CAP_STREAMING;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
@@ -1282,6 +1279,7 @@ static int fimc_lite_subdev_registered(struct v4l2_subdev *sd)
 	vfd->minor = -1;
 	vfd->release = video_device_release_empty;
 	vfd->queue = q;
+	vfd->device_caps = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_STREAMING;
 	fimc->reqbufs_count = 0;
 
 	INIT_LIST_HEAD(&fimc->pending_buf_q);
diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c b/drivers/media/platform/exynos4-is/fimc-m2m.c
index 1bea1ce4091e..17e5bf4810f4 100644
--- a/drivers/media/platform/exynos4-is/fimc-m2m.c
+++ b/drivers/media/platform/exynos4-is/fimc-m2m.c
@@ -236,9 +236,8 @@ static int fimc_m2m_querycap(struct file *file, void *fh,
 				     struct v4l2_capability *cap)
 {
 	struct fimc_dev *fimc = video_drvdata(file);
-	unsigned int caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
 
-	__fimc_vidioc_querycap(&fimc->pdev->dev, cap, caps);
+	__fimc_vidioc_querycap(&fimc->pdev->dev, cap);
 	return 0;
 }
 
@@ -736,6 +735,7 @@ int fimc_register_m2m_device(struct fimc_dev *fimc,
 	vfd->release = video_device_release_empty;
 	vfd->lock = &fimc->lock;
 	vfd->vfl_dir = VFL_DIR_M2M;
+	vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
 	set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
 
 	snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id);
diff --git a/drivers/media/platform/rcar_jpu.c b/drivers/media/platform/rcar_jpu.c
index 1dfd2eb65920..9b6eadef6858 100644
--- a/drivers/media/platform/rcar_jpu.c
+++ b/drivers/media/platform/rcar_jpu.c
@@ -671,8 +671,6 @@ static int jpu_querycap(struct file *file, void *priv,
 	strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 		 dev_name(ctx->jpu->dev));
-	cap->device_caps |= V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
-	cap->capabilities = V4L2_CAP_DEVICE_CAPS | cap->device_caps;
 	memset(cap->reserved, 0, sizeof(cap->reserved));
 
 	return 0;
@@ -1662,6 +1660,8 @@ static int jpu_probe(struct platform_device *pdev)
 	jpu->vfd_encoder.lock		= &jpu->mutex;
 	jpu->vfd_encoder.v4l2_dev	= &jpu->v4l2_dev;
 	jpu->vfd_encoder.vfl_dir	= VFL_DIR_M2M;
+	jpu->vfd_encoder.device_caps	= V4L2_CAP_STREAMING |
+					  V4L2_CAP_VIDEO_M2M_MPLANE;
 
 	ret = video_register_device(&jpu->vfd_encoder, VFL_TYPE_GRABBER, -1);
 	if (ret) {
@@ -1679,6 +1679,8 @@ static int jpu_probe(struct platform_device *pdev)
 	jpu->vfd_decoder.lock		= &jpu->mutex;
 	jpu->vfd_decoder.v4l2_dev	= &jpu->v4l2_dev;
 	jpu->vfd_decoder.vfl_dir	= VFL_DIR_M2M;
+	jpu->vfd_decoder.device_caps	= V4L2_CAP_STREAMING |
+					  V4L2_CAP_VIDEO_M2M_MPLANE;
 
 	ret = video_register_device(&jpu->vfd_decoder, VFL_TYPE_GRABBER, -1);
 	if (ret) {
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
index 9a53d3908b52..6ff57018a353 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
@@ -1348,6 +1348,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 	vfd->lock	= &dev->mfc_mutex;
 	vfd->v4l2_dev	= &dev->v4l2_dev;
 	vfd->vfl_dir	= VFL_DIR_M2M;
+	vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
 	set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
 	snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_DEC_NAME);
 	dev->vfd_dec	= vfd;
@@ -1366,6 +1367,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
 	vfd->lock	= &dev->mfc_mutex;
 	vfd->v4l2_dev	= &dev->v4l2_dev;
 	vfd->vfl_dir	= VFL_DIR_M2M;
+	vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
 	snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_ENC_NAME);
 	dev->vfd_enc	= vfd;
 	video_set_drvdata(vfd, dev);
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
index e111f9c47179..d29e5bc73651 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
@@ -275,13 +275,6 @@ static int vidioc_querycap(struct file *file, void *priv,
 	strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 		 dev_name(&dev->plat_dev->dev));
-	/*
-	 * This is only a mem-to-mem video device. The capture and output
-	 * device capability flags are left only for backward compatibility
-	 * and are scheduled for removal.
-	 */
-	cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
index 5505e4fc2090..5ab1231b4189 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
@@ -1317,13 +1317,6 @@ static int vidioc_querycap(struct file *file, void *priv,
 	strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 		 dev_name(&dev->plat_dev->dev));
-	/*
-	 * This is only a mem-to-mem video device. The capture and output
-	 * device capability flags are left only for backward compatibility
-	 * and are scheduled for removal.
-	 */
-	cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
index 1e40eafec284..a61ac426853a 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1495,8 +1495,6 @@ static int vpe_querycap(struct file *file, void *priv,
 	strscpy(cap->card, VPE_MODULE_NAME, sizeof(cap->card));
 	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
 		VPE_MODULE_NAME);
-	cap->device_caps  = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
-	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
 	return 0;
 }
 
@@ -2411,6 +2409,7 @@ static const struct video_device vpe_videodev = {
 	.minor		= -1,
 	.release	= video_device_release_empty,
 	.vfl_dir	= VFL_DIR_M2M,
+	.device_caps	= V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING,
 };
 
 static const struct v4l2_m2m_ops m2m_ops = {
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane
  2019-06-04  7:06 ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Boris Brezillon
@ 2019-06-04  7:06   ` Boris Brezillon
  2019-06-04 13:13     ` Sylwester Nawrocki
  2019-06-04 13:34     ` Boris Brezillon
  2019-06-04 12:33   ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Laurent Pinchart
  2019-06-04 13:10   ` Sylwester Nawrocki
  2 siblings, 2 replies; 6+ messages in thread
From: Boris Brezillon @ 2019-06-04  7:06 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Hans Verkuil, Laurent Pinchart,
	Sakari Ailus, linux-media
  Cc: kernel, Tomasz Figa, Hirokazu Honda, Nicolas Dufresne,
	Sylwester Nawrocki, Boris Brezillon

Support for multiplanar and singleplanar formats is mutually exclusive,
at least in practice. In our attempt to unify support for support for
mplane and !mplane in v4l, let's get rid of the
->vidioc_enum_fmt_{vid,out}_cap_mplane() hooks and call
->vidioc_enum_fmt_{vid,out}_cap() instead.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
---
Changes in v6:
- Add missing parens in a test

Changes in v5:
- None

Changes in v4:
- None

Changes in v3:
- Send this patch separately (was previously part of the EXT_BUF/FMT
  rework)

Changes in v2:
- None
---
 drivers/media/pci/intel/ipu3/ipu3-cio2.c      |  2 +-
 drivers/media/platform/exynos-gsc/gsc-core.c  |  2 +-
 drivers/media/platform/exynos-gsc/gsc-core.h  |  2 +-
 drivers/media/platform/exynos-gsc/gsc-m2m.c   | 10 ++++-----
 .../media/platform/exynos4-is/fimc-capture.c  |  6 +++---
 .../platform/exynos4-is/fimc-isp-video.c      |  6 +++---
 drivers/media/platform/exynos4-is/fimc-lite.c |  6 +++---
 drivers/media/platform/exynos4-is/fimc-m2m.c  |  8 +++----
 .../media/platform/mtk-jpeg/mtk_jpeg_core.c   |  4 ++--
 drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c  | 18 ++++++++--------
 .../platform/mtk-vcodec/mtk_vcodec_dec.c      | 12 +++++------
 .../platform/mtk-vcodec/mtk_vcodec_enc.c      | 12 +++++------
 .../media/platform/qcom/camss/camss-video.c   |  2 +-
 drivers/media/platform/qcom/venus/vdec.c      |  4 ++--
 drivers/media/platform/qcom/venus/venc.c      |  4 ++--
 drivers/media/platform/rcar_fdp1.c            |  4 ++--
 drivers/media/platform/rcar_jpu.c             |  4 ++--
 drivers/media/platform/renesas-ceu.c          |  2 +-
 drivers/media/platform/s5p-mfc/s5p_mfc_dec.c  | 12 +++++------
 drivers/media/platform/s5p-mfc/s5p_mfc_enc.c  | 12 +++++------
 drivers/media/platform/ti-vpe/vpe.c           |  4 ++--
 drivers/media/platform/vicodec/vicodec-core.c |  2 --
 drivers/media/platform/vivid/vivid-core.c     |  6 ++----
 .../media/platform/vivid/vivid-vid-common.c   | 20 ------------------
 .../media/platform/vivid/vivid-vid-common.h   |  2 --
 drivers/media/v4l2-core/v4l2-dev.c            |  2 --
 drivers/media/v4l2-core/v4l2-ioctl.c          | 21 ++++++++++---------
 drivers/staging/media/ipu3/ipu3-v4l2.c        |  4 ++--
 .../media/rockchip/vpu/rockchip_vpu_v4l2.c    | 12 +++++------
 include/media/v4l2-ioctl.h                    | 14 ++-----------
 30 files changed, 91 insertions(+), 128 deletions(-)

diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
index 2a52a393fe74..c1d133e17e4b 100644
--- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
+++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
@@ -1174,7 +1174,7 @@ static const struct v4l2_file_operations cio2_v4l2_fops = {
 
 static const struct v4l2_ioctl_ops cio2_v4l2_ioctl_ops = {
 	.vidioc_querycap = cio2_v4l2_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = cio2_v4l2_enum_fmt,
+	.vidioc_enum_fmt_vid_cap = cio2_v4l2_enum_fmt,
 	.vidioc_g_fmt_vid_cap_mplane = cio2_v4l2_g_fmt,
 	.vidioc_s_fmt_vid_cap_mplane = cio2_v4l2_s_fmt,
 	.vidioc_try_fmt_vid_cap_mplane = cio2_v4l2_try_fmt,
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index 0fa3ec04ab7b..f1d555f47ce3 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -331,7 +331,7 @@ void gsc_check_src_scale_info(struct gsc_variant *var,
 	}
 }
 
-int gsc_enum_fmt_mplane(struct v4l2_fmtdesc *f)
+int gsc_enum_fmt(struct v4l2_fmtdesc *f)
 {
 	const struct gsc_fmt *fmt;
 
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.h b/drivers/media/platform/exynos-gsc/gsc-core.h
index c81f0a17d286..8ea49ca004fd 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.h
+++ b/drivers/media/platform/exynos-gsc/gsc-core.h
@@ -387,7 +387,7 @@ void gsc_m2m_job_finish(struct gsc_ctx *ctx, int vb_state);
 u32 get_plane_size(struct gsc_frame *fr, unsigned int plane);
 const struct gsc_fmt *get_format(int index);
 const struct gsc_fmt *find_fmt(u32 *pixelformat, u32 *mbus_code, u32 index);
-int gsc_enum_fmt_mplane(struct v4l2_fmtdesc *f);
+int gsc_enum_fmt(struct v4l2_fmtdesc *f);
 int gsc_try_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f);
 void gsc_set_frame_size(struct gsc_frame *frame, int width, int height);
 int gsc_g_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f);
diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
index cd02e3c233fc..6346694f7de8 100644
--- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
+++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
@@ -301,10 +301,10 @@ static int gsc_m2m_querycap(struct file *file, void *fh,
 	return 0;
 }
 
-static int gsc_m2m_enum_fmt_mplane(struct file *file, void *priv,
-				struct v4l2_fmtdesc *f)
+static int gsc_m2m_enum_fmt(struct file *file, void *priv,
+			    struct v4l2_fmtdesc *f)
 {
-	return gsc_enum_fmt_mplane(f);
+	return gsc_enum_fmt(f);
 }
 
 static int gsc_m2m_g_fmt_mplane(struct file *file, void *fh,
@@ -560,8 +560,8 @@ static int gsc_m2m_s_selection(struct file *file, void *fh,
 
 static const struct v4l2_ioctl_ops gsc_m2m_ioctl_ops = {
 	.vidioc_querycap		= gsc_m2m_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= gsc_m2m_enum_fmt_mplane,
-	.vidioc_enum_fmt_vid_out_mplane	= gsc_m2m_enum_fmt_mplane,
+	.vidioc_enum_fmt_vid_cap	= gsc_m2m_enum_fmt,
+	.vidioc_enum_fmt_vid_out	= gsc_m2m_enum_fmt,
 	.vidioc_g_fmt_vid_cap_mplane	= gsc_m2m_g_fmt_mplane,
 	.vidioc_g_fmt_vid_out_mplane	= gsc_m2m_g_fmt_mplane,
 	.vidioc_try_fmt_vid_cap_mplane	= gsc_m2m_try_fmt_mplane,
diff --git a/drivers/media/platform/exynos4-is/fimc-capture.c b/drivers/media/platform/exynos4-is/fimc-capture.c
index ecfa6ab4a19d..84b91e248c5a 100644
--- a/drivers/media/platform/exynos4-is/fimc-capture.c
+++ b/drivers/media/platform/exynos4-is/fimc-capture.c
@@ -732,8 +732,8 @@ static int fimc_cap_querycap(struct file *file, void *priv,
 	return 0;
 }
 
-static int fimc_cap_enum_fmt_mplane(struct file *file, void *priv,
-				    struct v4l2_fmtdesc *f)
+static int fimc_cap_enum_fmt(struct file *file, void *priv,
+			     struct v4l2_fmtdesc *f)
 {
 	struct fimc_fmt *fmt;
 
@@ -1360,7 +1360,7 @@ static int fimc_cap_s_selection(struct file *file, void *fh,
 static const struct v4l2_ioctl_ops fimc_capture_ioctl_ops = {
 	.vidioc_querycap		= fimc_cap_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane	= fimc_cap_enum_fmt_mplane,
+	.vidioc_enum_fmt_vid_cap	= fimc_cap_enum_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= fimc_cap_try_fmt_mplane,
 	.vidioc_s_fmt_vid_cap_mplane	= fimc_cap_s_fmt_mplane,
 	.vidioc_g_fmt_vid_cap_mplane	= fimc_cap_g_fmt_mplane,
diff --git a/drivers/media/platform/exynos4-is/fimc-isp-video.c b/drivers/media/platform/exynos4-is/fimc-isp-video.c
index ad8dd672d4a7..2226a13ac89b 100644
--- a/drivers/media/platform/exynos4-is/fimc-isp-video.c
+++ b/drivers/media/platform/exynos4-is/fimc-isp-video.c
@@ -353,8 +353,8 @@ static int isp_video_querycap(struct file *file, void *priv,
 	return 0;
 }
 
-static int isp_video_enum_fmt_mplane(struct file *file, void *priv,
-					struct v4l2_fmtdesc *f)
+static int isp_video_enum_fmt(struct file *file, void *priv,
+			      struct v4l2_fmtdesc *f)
 {
 	const struct fimc_fmt *fmt;
 
@@ -551,7 +551,7 @@ static int isp_video_reqbufs(struct file *file, void *priv,
 
 static const struct v4l2_ioctl_ops isp_video_ioctl_ops = {
 	.vidioc_querycap		= isp_video_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= isp_video_enum_fmt_mplane,
+	.vidioc_enum_fmt_vid_cap	= isp_video_enum_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= isp_video_try_fmt_mplane,
 	.vidioc_s_fmt_vid_cap_mplane	= isp_video_s_fmt_mplane,
 	.vidioc_g_fmt_vid_cap_mplane	= isp_video_g_fmt_mplane,
diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
index a16b5bed59bb..e71342756d88 100644
--- a/drivers/media/platform/exynos4-is/fimc-lite.c
+++ b/drivers/media/platform/exynos4-is/fimc-lite.c
@@ -661,8 +661,8 @@ static int fimc_lite_querycap(struct file *file, void *priv,
 	return 0;
 }
 
-static int fimc_lite_enum_fmt_mplane(struct file *file, void *priv,
-				     struct v4l2_fmtdesc *f)
+static int fimc_lite_enum_fmt(struct file *file, void *priv,
+			      struct v4l2_fmtdesc *f)
 {
 	const struct fimc_fmt *fmt;
 
@@ -951,7 +951,7 @@ static int fimc_lite_s_selection(struct file *file, void *fh,
 
 static const struct v4l2_ioctl_ops fimc_lite_ioctl_ops = {
 	.vidioc_querycap		= fimc_lite_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= fimc_lite_enum_fmt_mplane,
+	.vidioc_enum_fmt_vid_cap	= fimc_lite_enum_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= fimc_lite_try_fmt_mplane,
 	.vidioc_s_fmt_vid_cap_mplane	= fimc_lite_s_fmt_mplane,
 	.vidioc_g_fmt_vid_cap_mplane	= fimc_lite_g_fmt_mplane,
diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c b/drivers/media/platform/exynos4-is/fimc-m2m.c
index 17e5bf4810f4..0d1d8b717d9a 100644
--- a/drivers/media/platform/exynos4-is/fimc-m2m.c
+++ b/drivers/media/platform/exynos4-is/fimc-m2m.c
@@ -241,8 +241,8 @@ static int fimc_m2m_querycap(struct file *file, void *fh,
 	return 0;
 }
 
-static int fimc_m2m_enum_fmt_mplane(struct file *file, void *priv,
-				    struct v4l2_fmtdesc *f)
+static int fimc_m2m_enum_fmt(struct file *file, void *priv,
+			     struct v4l2_fmtdesc *f)
 {
 	struct fimc_fmt *fmt;
 
@@ -532,8 +532,8 @@ static int fimc_m2m_s_selection(struct file *file, void *fh,
 
 static const struct v4l2_ioctl_ops fimc_m2m_ioctl_ops = {
 	.vidioc_querycap		= fimc_m2m_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= fimc_m2m_enum_fmt_mplane,
-	.vidioc_enum_fmt_vid_out_mplane	= fimc_m2m_enum_fmt_mplane,
+	.vidioc_enum_fmt_vid_cap	= fimc_m2m_enum_fmt,
+	.vidioc_enum_fmt_vid_out	= fimc_m2m_enum_fmt,
 	.vidioc_g_fmt_vid_cap_mplane	= fimc_m2m_g_fmt_mplane,
 	.vidioc_g_fmt_vid_out_mplane	= fimc_m2m_g_fmt_mplane,
 	.vidioc_try_fmt_vid_cap_mplane	= fimc_m2m_try_fmt_mplane,
diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
index f761e4d8bf2a..3b199662cb34 100644
--- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
@@ -536,8 +536,8 @@ static int mtk_jpeg_qbuf(struct file *file, void *priv, struct v4l2_buffer *buf)
 
 static const struct v4l2_ioctl_ops mtk_jpeg_ioctl_ops = {
 	.vidioc_querycap                = mtk_jpeg_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = mtk_jpeg_enum_fmt_vid_cap,
-	.vidioc_enum_fmt_vid_out_mplane = mtk_jpeg_enum_fmt_vid_out,
+	.vidioc_enum_fmt_vid_cap	= mtk_jpeg_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out	= mtk_jpeg_enum_fmt_vid_out,
 	.vidioc_try_fmt_vid_cap_mplane	= mtk_jpeg_try_fmt_vid_cap_mplane,
 	.vidioc_try_fmt_vid_out_mplane	= mtk_jpeg_try_fmt_vid_out_mplane,
 	.vidioc_g_fmt_vid_cap_mplane    = mtk_jpeg_g_fmt_vid_mplane,
diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
index 7d15c06e9db9..365d3f92fd9e 100644
--- a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
+++ b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
@@ -620,7 +620,7 @@ static int mtk_mdp_m2m_querycap(struct file *file, void *fh,
 	return 0;
 }
 
-static int mtk_mdp_enum_fmt_mplane(struct v4l2_fmtdesc *f, u32 type)
+static int mtk_mdp_enum_fmt(struct v4l2_fmtdesc *f, u32 type)
 {
 	const struct mtk_mdp_fmt *fmt;
 
@@ -633,16 +633,16 @@ static int mtk_mdp_enum_fmt_mplane(struct v4l2_fmtdesc *f, u32 type)
 	return 0;
 }
 
-static int mtk_mdp_m2m_enum_fmt_mplane_vid_cap(struct file *file, void *priv,
-				       struct v4l2_fmtdesc *f)
+static int mtk_mdp_m2m_enum_fmt_vid_cap(struct file *file, void *priv,
+					struct v4l2_fmtdesc *f)
 {
-	return mtk_mdp_enum_fmt_mplane(f, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	return mtk_mdp_enum_fmt(f, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
 }
 
-static int mtk_mdp_m2m_enum_fmt_mplane_vid_out(struct file *file, void *priv,
-				       struct v4l2_fmtdesc *f)
+static int mtk_mdp_m2m_enum_fmt_vid_out(struct file *file, void *priv,
+					struct v4l2_fmtdesc *f)
 {
-	return mtk_mdp_enum_fmt_mplane(f, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
+	return mtk_mdp_enum_fmt(f, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
 }
 
 static int mtk_mdp_m2m_g_fmt_mplane(struct file *file, void *fh,
@@ -935,8 +935,8 @@ static int mtk_mdp_m2m_s_selection(struct file *file, void *fh,
 
 static const struct v4l2_ioctl_ops mtk_mdp_m2m_ioctl_ops = {
 	.vidioc_querycap		= mtk_mdp_m2m_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= mtk_mdp_m2m_enum_fmt_mplane_vid_cap,
-	.vidioc_enum_fmt_vid_out_mplane	= mtk_mdp_m2m_enum_fmt_mplane_vid_out,
+	.vidioc_enum_fmt_vid_cap	= mtk_mdp_m2m_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out	= mtk_mdp_m2m_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_cap_mplane	= mtk_mdp_m2m_g_fmt_mplane,
 	.vidioc_g_fmt_vid_out_mplane	= mtk_mdp_m2m_g_fmt_mplane,
 	.vidioc_try_fmt_vid_cap_mplane	= mtk_mdp_m2m_try_fmt_mplane,
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
index 851903867bc9..af25189306bb 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
@@ -957,14 +957,14 @@ static int vidioc_enum_fmt(struct v4l2_fmtdesc *f, bool output_queue)
 	return 0;
 }
 
-static int vidioc_vdec_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
-					       struct v4l2_fmtdesc *f)
+static int vidioc_vdec_enum_fmt_vid_cap(struct file *file, void *pirv,
+					struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(f, false);
 }
 
-static int vidioc_vdec_enum_fmt_vid_out_mplane(struct file *file, void *priv,
-					       struct v4l2_fmtdesc *f)
+static int vidioc_vdec_enum_fmt_vid_out(struct file *file, void *priv,
+					struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(f, true);
 }
@@ -1461,8 +1461,8 @@ const struct v4l2_ioctl_ops mtk_vdec_ioctl_ops = {
 
 	.vidioc_create_bufs		= v4l2_m2m_ioctl_create_bufs,
 
-	.vidioc_enum_fmt_vid_cap_mplane	= vidioc_vdec_enum_fmt_vid_cap_mplane,
-	.vidioc_enum_fmt_vid_out_mplane	= vidioc_vdec_enum_fmt_vid_out_mplane,
+	.vidioc_enum_fmt_vid_cap	= vidioc_vdec_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out	= vidioc_vdec_enum_fmt_vid_out,
 	.vidioc_enum_framesizes	= vidioc_enum_framesizes,
 
 	.vidioc_querycap		= vidioc_vdec_querycap,
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
index 50351adafc47..c3c7aeba543c 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
@@ -207,14 +207,14 @@ static int vidioc_enum_framesizes(struct file *file, void *fh,
 	return -EINVAL;
 }
 
-static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(f, false);
 }
 
-static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *prov,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_out(struct file *file, void *prov,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(f, true);
 }
@@ -725,8 +725,8 @@ const struct v4l2_ioctl_ops mtk_venc_ioctl_ops = {
 	.vidioc_dqbuf			= vidioc_venc_dqbuf,
 
 	.vidioc_querycap		= vidioc_venc_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
+	.vidioc_enum_fmt_vid_cap	= vidioc_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out	= vidioc_enum_fmt_vid_out,
 	.vidioc_enum_framesizes		= vidioc_enum_framesizes,
 
 	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap_mplane,
diff --git a/drivers/media/platform/qcom/camss/camss-video.c b/drivers/media/platform/qcom/camss/camss-video.c
index 58aebe7114cd..1d50dfbbb762 100644
--- a/drivers/media/platform/qcom/camss/camss-video.c
+++ b/drivers/media/platform/qcom/camss/camss-video.c
@@ -703,7 +703,7 @@ static int video_s_input(struct file *file, void *fh, unsigned int input)
 
 static const struct v4l2_ioctl_ops msm_vid_ioctl_ops = {
 	.vidioc_querycap		= video_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane	= video_enum_fmt,
+	.vidioc_enum_fmt_vid_cap	= video_enum_fmt,
 	.vidioc_g_fmt_vid_cap_mplane	= video_g_fmt,
 	.vidioc_s_fmt_vid_cap_mplane	= video_s_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= video_try_fmt,
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
index 282de21cf2e1..2a47b9b8c5bc 100644
--- a/drivers/media/platform/qcom/venus/vdec.c
+++ b/drivers/media/platform/qcom/venus/vdec.c
@@ -491,8 +491,8 @@ vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
 
 static const struct v4l2_ioctl_ops vdec_ioctl_ops = {
 	.vidioc_querycap = vdec_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = vdec_enum_fmt,
-	.vidioc_enum_fmt_vid_out_mplane = vdec_enum_fmt,
+	.vidioc_enum_fmt_vid_cap = vdec_enum_fmt,
+	.vidioc_enum_fmt_vid_out = vdec_enum_fmt,
 	.vidioc_s_fmt_vid_cap_mplane = vdec_s_fmt,
 	.vidioc_s_fmt_vid_out_mplane = vdec_s_fmt,
 	.vidioc_g_fmt_vid_cap_mplane = vdec_g_fmt,
diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c
index 32cff294582f..406a47923996 100644
--- a/drivers/media/platform/qcom/venus/venc.c
+++ b/drivers/media/platform/qcom/venus/venc.c
@@ -616,8 +616,8 @@ static int venc_enum_frameintervals(struct file *file, void *fh,
 
 static const struct v4l2_ioctl_ops venc_ioctl_ops = {
 	.vidioc_querycap = venc_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = venc_enum_fmt,
-	.vidioc_enum_fmt_vid_out_mplane = venc_enum_fmt,
+	.vidioc_enum_fmt_vid_cap = venc_enum_fmt,
+	.vidioc_enum_fmt_vid_out = venc_enum_fmt,
 	.vidioc_s_fmt_vid_cap_mplane = venc_s_fmt,
 	.vidioc_s_fmt_vid_out_mplane = venc_s_fmt,
 	.vidioc_g_fmt_vid_cap_mplane = venc_g_fmt,
diff --git a/drivers/media/platform/rcar_fdp1.c b/drivers/media/platform/rcar_fdp1.c
index 6a90bc4c476e..6f9a4c69f620 100644
--- a/drivers/media/platform/rcar_fdp1.c
+++ b/drivers/media/platform/rcar_fdp1.c
@@ -1730,8 +1730,8 @@ static const char * const fdp1_ctrl_deint_menu[] = {
 static const struct v4l2_ioctl_ops fdp1_ioctl_ops = {
 	.vidioc_querycap	= fdp1_vidioc_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane = fdp1_enum_fmt_vid_cap,
-	.vidioc_enum_fmt_vid_out_mplane = fdp1_enum_fmt_vid_out,
+	.vidioc_enum_fmt_vid_cap	= fdp1_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out	= fdp1_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_cap_mplane	= fdp1_g_fmt,
 	.vidioc_g_fmt_vid_out_mplane	= fdp1_g_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= fdp1_try_fmt,
diff --git a/drivers/media/platform/rcar_jpu.c b/drivers/media/platform/rcar_jpu.c
index 9b6eadef6858..1c3f507acfc9 100644
--- a/drivers/media/platform/rcar_jpu.c
+++ b/drivers/media/platform/rcar_jpu.c
@@ -946,8 +946,8 @@ static int jpu_streamon(struct file *file, void *priv, enum v4l2_buf_type type)
 static const struct v4l2_ioctl_ops jpu_ioctl_ops = {
 	.vidioc_querycap		= jpu_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane = jpu_enum_fmt_cap,
-	.vidioc_enum_fmt_vid_out_mplane = jpu_enum_fmt_out,
+	.vidioc_enum_fmt_vid_cap	= jpu_enum_fmt_cap,
+	.vidioc_enum_fmt_vid_out	= jpu_enum_fmt_out,
 	.vidioc_g_fmt_vid_cap_mplane	= jpu_g_fmt,
 	.vidioc_g_fmt_vid_out_mplane	= jpu_g_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= jpu_try_fmt,
diff --git a/drivers/media/platform/renesas-ceu.c b/drivers/media/platform/renesas-ceu.c
index 150196f7cf96..57d0c0f9fa4b 100644
--- a/drivers/media/platform/renesas-ceu.c
+++ b/drivers/media/platform/renesas-ceu.c
@@ -1339,7 +1339,7 @@ static int ceu_enum_frameintervals(struct file *file, void *fh,
 static const struct v4l2_ioctl_ops ceu_ioctl_ops = {
 	.vidioc_querycap		= ceu_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane	= ceu_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_cap	= ceu_enum_fmt_vid_cap,
 	.vidioc_try_fmt_vid_cap_mplane	= ceu_try_fmt_vid_cap,
 	.vidioc_s_fmt_vid_cap_mplane	= ceu_s_fmt_vid_cap,
 	.vidioc_g_fmt_vid_cap_mplane	= ceu_g_fmt_vid_cap,
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
index d29e5bc73651..51ab2e38a270 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
@@ -306,14 +306,14 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
 	return 0;
 }
 
-static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
-							struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, f, false);
 }
 
-static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *priv,
-							struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, f, true);
 }
@@ -880,8 +880,8 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
 /* v4l2_ioctl_ops */
 static const struct v4l2_ioctl_ops s5p_mfc_dec_ioctl_ops = {
 	.vidioc_querycap = vidioc_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
+	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
 	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
 	.vidioc_try_fmt_vid_cap_mplane = vidioc_try_fmt,
diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
index 5ab1231b4189..7485eded5c5d 100644
--- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
@@ -1347,14 +1347,14 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
 	return -EINVAL;
 }
 
-static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, f, false);
 }
 
-static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *prov,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_out(struct file *file, void *prov,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, f, true);
 }
@@ -2336,8 +2336,8 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
 
 static const struct v4l2_ioctl_ops s5p_mfc_enc_ioctl_ops = {
 	.vidioc_querycap = vidioc_querycap,
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
+	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
 	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
 	.vidioc_try_fmt_vid_cap_mplane = vidioc_try_fmt,
diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
index a61ac426853a..3f90f9413da1 100644
--- a/drivers/media/platform/ti-vpe/vpe.c
+++ b/drivers/media/platform/ti-vpe/vpe.c
@@ -1971,12 +1971,12 @@ static const struct v4l2_ctrl_ops vpe_ctrl_ops = {
 static const struct v4l2_ioctl_ops vpe_ioctl_ops = {
 	.vidioc_querycap		= vpe_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane	= vpe_enum_fmt,
+	.vidioc_enum_fmt_vid_cap	= vpe_enum_fmt,
 	.vidioc_g_fmt_vid_cap_mplane	= vpe_g_fmt,
 	.vidioc_try_fmt_vid_cap_mplane	= vpe_try_fmt,
 	.vidioc_s_fmt_vid_cap_mplane	= vpe_s_fmt,
 
-	.vidioc_enum_fmt_vid_out_mplane	= vpe_enum_fmt,
+	.vidioc_enum_fmt_vid_out	= vpe_enum_fmt,
 	.vidioc_g_fmt_vid_out_mplane	= vpe_g_fmt,
 	.vidioc_try_fmt_vid_out_mplane	= vpe_try_fmt,
 	.vidioc_s_fmt_vid_out_mplane	= vpe_s_fmt,
diff --git a/drivers/media/platform/vicodec/vicodec-core.c b/drivers/media/platform/vicodec/vicodec-core.c
index 89961257f03f..03acdf86176e 100644
--- a/drivers/media/platform/vicodec/vicodec-core.c
+++ b/drivers/media/platform/vicodec/vicodec-core.c
@@ -1297,7 +1297,6 @@ static const struct v4l2_ioctl_ops vicodec_ioctl_ops = {
 	.vidioc_try_fmt_vid_cap	= vidioc_try_fmt_vid_cap,
 	.vidioc_s_fmt_vid_cap	= vidioc_s_fmt_vid_cap,
 
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap,
 	.vidioc_g_fmt_vid_cap_mplane	= vidioc_g_fmt_vid_cap,
 	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap,
 	.vidioc_s_fmt_vid_cap_mplane	= vidioc_s_fmt_vid_cap,
@@ -1307,7 +1306,6 @@ static const struct v4l2_ioctl_ops vicodec_ioctl_ops = {
 	.vidioc_try_fmt_vid_out	= vidioc_try_fmt_vid_out,
 	.vidioc_s_fmt_vid_out	= vidioc_s_fmt_vid_out,
 
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_out_mplane	= vidioc_g_fmt_vid_out,
 	.vidioc_try_fmt_vid_out_mplane	= vidioc_try_fmt_vid_out,
 	.vidioc_s_fmt_vid_out_mplane	= vidioc_s_fmt_vid_out,
diff --git a/drivers/media/platform/vivid/vivid-core.c b/drivers/media/platform/vivid/vivid-core.c
index 7047df6f0e0e..beb2e566a43c 100644
--- a/drivers/media/platform/vivid/vivid-core.c
+++ b/drivers/media/platform/vivid/vivid-core.c
@@ -500,20 +500,18 @@ static const struct v4l2_file_operations vivid_radio_fops = {
 static const struct v4l2_ioctl_ops vivid_ioctl_ops = {
 	.vidioc_querycap		= vidioc_querycap,
 
-	.vidioc_enum_fmt_vid_cap	= vidioc_enum_fmt_vid,
+	.vidioc_enum_fmt_vid_cap	= vivid_enum_fmt_vid,
 	.vidioc_g_fmt_vid_cap		= vidioc_g_fmt_vid_cap,
 	.vidioc_try_fmt_vid_cap		= vidioc_try_fmt_vid_cap,
 	.vidioc_s_fmt_vid_cap		= vidioc_s_fmt_vid_cap,
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_mplane,
 	.vidioc_g_fmt_vid_cap_mplane	= vidioc_g_fmt_vid_cap_mplane,
 	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap_mplane,
 	.vidioc_s_fmt_vid_cap_mplane	= vidioc_s_fmt_vid_cap_mplane,
 
-	.vidioc_enum_fmt_vid_out	= vidioc_enum_fmt_vid,
+	.vidioc_enum_fmt_vid_out	= vivid_enum_fmt_vid,
 	.vidioc_g_fmt_vid_out		= vidioc_g_fmt_vid_out,
 	.vidioc_try_fmt_vid_out		= vidioc_try_fmt_vid_out,
 	.vidioc_s_fmt_vid_out		= vidioc_s_fmt_vid_out,
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_mplane,
 	.vidioc_g_fmt_vid_out_mplane	= vidioc_g_fmt_vid_out_mplane,
 	.vidioc_try_fmt_vid_out_mplane	= vidioc_try_fmt_vid_out_mplane,
 	.vidioc_s_fmt_vid_out_mplane	= vidioc_s_fmt_vid_out_mplane,
diff --git a/drivers/media/platform/vivid/vivid-vid-common.c b/drivers/media/platform/vivid/vivid-vid-common.c
index 74b83bcc6119..9307ce1cdd16 100644
--- a/drivers/media/platform/vivid/vivid-vid-common.c
+++ b/drivers/media/platform/vivid/vivid-vid-common.c
@@ -797,26 +797,6 @@ int vivid_enum_fmt_vid(struct file *file, void  *priv,
 	return 0;
 }
 
-int vidioc_enum_fmt_vid_mplane(struct file *file, void  *priv,
-					struct v4l2_fmtdesc *f)
-{
-	struct vivid_dev *dev = video_drvdata(file);
-
-	if (!dev->multiplanar)
-		return -ENOTTY;
-	return vivid_enum_fmt_vid(file, priv, f);
-}
-
-int vidioc_enum_fmt_vid(struct file *file, void  *priv,
-					struct v4l2_fmtdesc *f)
-{
-	struct vivid_dev *dev = video_drvdata(file);
-
-	if (dev->multiplanar)
-		return -ENOTTY;
-	return vivid_enum_fmt_vid(file, priv, f);
-}
-
 int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)
 {
 	struct vivid_dev *dev = video_drvdata(file);
diff --git a/drivers/media/platform/vivid/vivid-vid-common.h b/drivers/media/platform/vivid/vivid-vid-common.h
index 29b6c0b40a1b..d908d9725283 100644
--- a/drivers/media/platform/vivid/vivid-vid-common.h
+++ b/drivers/media/platform/vivid/vivid-vid-common.h
@@ -28,8 +28,6 @@ void vivid_send_source_change(struct vivid_dev *dev, unsigned type);
 int vivid_vid_adjust_sel(unsigned flags, struct v4l2_rect *r);
 
 int vivid_enum_fmt_vid(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
-int vidioc_enum_fmt_vid_mplane(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
-int vidioc_enum_fmt_vid(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
 int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id);
 int vidioc_g_dv_timings(struct file *file, void *_fh, struct v4l2_dv_timings *timings);
 int vidioc_enum_dv_timings(struct file *file, void *_fh, struct v4l2_enum_dv_timings *timings);
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
index d7528f82a66a..29946a2b2752 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -593,11 +593,9 @@ static void determine_valid_ioctls(struct video_device *vdev)
 	if (is_vid || is_tch) {
 		/* video and metadata specific ioctls */
 		if ((is_rx && (ops->vidioc_enum_fmt_vid_cap ||
-			       ops->vidioc_enum_fmt_vid_cap_mplane ||
 			       ops->vidioc_enum_fmt_vid_overlay ||
 			       ops->vidioc_enum_fmt_meta_cap)) ||
 		    (is_tx && (ops->vidioc_enum_fmt_vid_out ||
-			       ops->vidioc_enum_fmt_vid_out_mplane ||
 			       ops->vidioc_enum_fmt_meta_out)))
 			set_bit(_IOC_NR(VIDIOC_ENUM_FMT), valid_ioctls);
 		if ((is_rx && (ops->vidioc_g_fmt_vid_cap ||
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 0fbee3caef5d..b4c73e8f23c5 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1382,6 +1382,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 static int v4l_enum_fmt(const struct v4l2_ioctl_ops *ops,
 				struct file *file, void *fh, void *arg)
 {
+	struct video_device *vdev = video_devdata(file);
 	struct v4l2_fmtdesc *p = arg;
 	int ret = check_fmt(file, p->type);
 
@@ -1391,30 +1392,30 @@ static int v4l_enum_fmt(const struct v4l2_ioctl_ops *ops,
 
 	switch (p->type) {
 	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+		if (!!(vdev->device_caps & V4L2_CAP_VIDEO_CAPTURE_MPLANE) !=
+		    (p->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
+			break;
+
 		if (unlikely(!ops->vidioc_enum_fmt_vid_cap))
 			break;
 		ret = ops->vidioc_enum_fmt_vid_cap(file, fh, arg);
 		break;
-	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
-		if (unlikely(!ops->vidioc_enum_fmt_vid_cap_mplane))
-			break;
-		ret = ops->vidioc_enum_fmt_vid_cap_mplane(file, fh, arg);
-		break;
 	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
 		if (unlikely(!ops->vidioc_enum_fmt_vid_overlay))
 			break;
 		ret = ops->vidioc_enum_fmt_vid_overlay(file, fh, arg);
 		break;
 	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+		if (!!(vdev->device_caps & V4L2_CAP_VIDEO_OUTPUT_MPLANE) !=
+		    (p->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE))
+			break;
+
 		if (unlikely(!ops->vidioc_enum_fmt_vid_out))
 			break;
 		ret = ops->vidioc_enum_fmt_vid_out(file, fh, arg);
 		break;
-	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
-		if (unlikely(!ops->vidioc_enum_fmt_vid_out_mplane))
-			break;
-		ret = ops->vidioc_enum_fmt_vid_out_mplane(file, fh, arg);
-		break;
 	case V4L2_BUF_TYPE_SDR_CAPTURE:
 		if (unlikely(!ops->vidioc_enum_fmt_sdr_cap))
 			break;
diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c
index a7bc22040ed8..3c7ad1eed434 100644
--- a/drivers/staging/media/ipu3/ipu3-v4l2.c
+++ b/drivers/staging/media/ipu3/ipu3-v4l2.c
@@ -955,12 +955,12 @@ static const struct v4l2_file_operations imgu_v4l2_fops = {
 static const struct v4l2_ioctl_ops imgu_v4l2_ioctl_ops = {
 	.vidioc_querycap = imgu_vidioc_querycap,
 
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap,
+	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
 	.vidioc_g_fmt_vid_cap_mplane = imgu_vidioc_g_fmt,
 	.vidioc_s_fmt_vid_cap_mplane = imgu_vidioc_s_fmt,
 	.vidioc_try_fmt_vid_cap_mplane = imgu_vidioc_try_fmt,
 
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out,
+	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
 	.vidioc_g_fmt_vid_out_mplane = imgu_vidioc_g_fmt,
 	.vidioc_s_fmt_vid_out_mplane = imgu_vidioc_s_fmt,
 	.vidioc_try_fmt_vid_out_mplane = imgu_vidioc_try_fmt,
diff --git a/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c b/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
index 1b80a45df8fe..8bc709ab13be 100644
--- a/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
+++ b/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
@@ -153,14 +153,14 @@ static int vidioc_enum_fmt(struct file *file, void *priv,
 	return -EINVAL;
 }
 
-static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *priv,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, priv, f, true);
 }
 
-static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *priv,
-					  struct v4l2_fmtdesc *f)
+static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
+				   struct v4l2_fmtdesc *f)
 {
 	return vidioc_enum_fmt(file, priv, f, false);
 }
@@ -494,8 +494,8 @@ const struct v4l2_ioctl_ops rockchip_vpu_ioctl_ops = {
 	.vidioc_s_fmt_vid_cap_mplane = vidioc_s_fmt_cap_mplane,
 	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt_out_mplane,
 	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt_cap_mplane,
-	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
-	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
+	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
+	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
 
 	.vidioc_reqbufs = v4l2_m2m_ioctl_reqbufs,
 	.vidioc_querybuf = v4l2_m2m_ioctl_querybuf,
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index 8533ece5026e..400f2e46c108 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -26,19 +26,13 @@ struct v4l2_fh;
  *	:ref:`VIDIOC_QUERYCAP <vidioc_querycap>` ioctl
  * @vidioc_enum_fmt_vid_cap: pointer to the function that implements
  *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
- *	for video capture in single plane mode
+ *	for video capture in single and multi plane mode
  * @vidioc_enum_fmt_vid_overlay: pointer to the function that implements
  *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
  *	for video overlay
  * @vidioc_enum_fmt_vid_out: pointer to the function that implements
  *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
- *	for video output in single plane mode
- * @vidioc_enum_fmt_vid_cap_mplane: pointer to the function that implements
- *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
- *	for video capture in multiplane mode
- * @vidioc_enum_fmt_vid_out_mplane: pointer to the function that implements
- *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
- *	for video output in multiplane mode
+ *	for video output in single and multi plane mode
  * @vidioc_enum_fmt_sdr_cap: pointer to the function that implements
  *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
  *	for Software Defined Radio capture
@@ -313,10 +307,6 @@ struct v4l2_ioctl_ops {
 					   struct v4l2_fmtdesc *f);
 	int (*vidioc_enum_fmt_vid_out)(struct file *file, void *fh,
 				       struct v4l2_fmtdesc *f);
-	int (*vidioc_enum_fmt_vid_cap_mplane)(struct file *file, void *fh,
-					      struct v4l2_fmtdesc *f);
-	int (*vidioc_enum_fmt_vid_out_mplane)(struct file *file, void *fh,
-					      struct v4l2_fmtdesc *f);
 	int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *fh,
 				       struct v4l2_fmtdesc *f);
 	int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *fh,
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps
  2019-06-04  7:06 ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Boris Brezillon
  2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
@ 2019-06-04 12:33   ` Laurent Pinchart
  2019-06-04 13:10   ` Sylwester Nawrocki
  2 siblings, 0 replies; 6+ messages in thread
From: Laurent Pinchart @ 2019-06-04 12:33 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Mauro Carvalho Chehab, Hans Verkuil, Sakari Ailus, linux-media,
	kernel, Tomasz Figa, Hirokazu Honda, Nicolas Dufresne,
	Sylwester Nawrocki

Hi Boris,

Thank you for the patch.

On Tue, Jun 04, 2019 at 09:06:24AM +0200, Boris Brezillon wrote:
> This is needed if we want the core to be able to check _MPLANE support
> without having to call the ->vdioc_querycap() hook.
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> Changes in v6:
> - None
> 
> Changes in v5:
> - Drop the fimc-lite and fimc-isp-video hack
> 
> Changes in v4:
> - Add a hack in fimc-lite and fimc-isp-video ->querycap()
>   implementation to avoid reporting _MPLANE caps as userspace is not
>   ready for that
> - Actually set CAP flags in vdev->device_caps instead of just reporting
>   caps at the ->vidioc_querycap() level
> 
> Changes in v3:
> - New patch
> ---
>  drivers/media/platform/exynos-gsc/gsc-m2m.c        | 4 ++--
>  drivers/media/platform/exynos4-is/common.c         | 5 +----
>  drivers/media/platform/exynos4-is/common.h         | 3 +--
>  drivers/media/platform/exynos4-is/fimc-capture.c   | 4 ++--
>  drivers/media/platform/exynos4-is/fimc-isp-video.c | 3 ++-
>  drivers/media/platform/exynos4-is/fimc-lite.c      | 4 +---
>  drivers/media/platform/exynos4-is/fimc-m2m.c       | 4 ++--
>  drivers/media/platform/rcar_jpu.c                  | 6 ++++--

For the rcar-jpu driver,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

>  drivers/media/platform/s5p-mfc/s5p_mfc.c           | 2 ++
>  drivers/media/platform/s5p-mfc/s5p_mfc_dec.c       | 7 -------
>  drivers/media/platform/s5p-mfc/s5p_mfc_enc.c       | 7 -------
>  drivers/media/platform/ti-vpe/vpe.c                | 3 +--
>  12 files changed, 18 insertions(+), 34 deletions(-)
> 
> diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
> index c757f5d98bcc..cd02e3c233fc 100644
> --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
> +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
> @@ -298,8 +298,6 @@ static int gsc_m2m_querycap(struct file *file, void *fh,
>  	strscpy(cap->card, GSC_MODULE_NAME " gscaler", sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  		 dev_name(&gsc->pdev->dev));
> -	cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  	return 0;
>  }
>  
> @@ -763,6 +761,8 @@ int gsc_register_m2m_device(struct gsc_dev *gsc)
>  	gsc->vdev.lock		= &gsc->lock;
>  	gsc->vdev.vfl_dir	= VFL_DIR_M2M;
>  	gsc->vdev.v4l2_dev	= &gsc->v4l2_dev;
> +	gsc->vdev.device_caps	= V4L2_CAP_STREAMING |
> +				  V4L2_CAP_VIDEO_M2M_MPLANE;
>  	snprintf(gsc->vdev.name, sizeof(gsc->vdev.name), "%s.%d:m2m",
>  					GSC_MODULE_NAME, gsc->id);
>  
> diff --git a/drivers/media/platform/exynos4-is/common.c b/drivers/media/platform/exynos4-is/common.c
> index 76f557548dfc..d47a77c8d4d6 100644
> --- a/drivers/media/platform/exynos4-is/common.c
> +++ b/drivers/media/platform/exynos4-is/common.c
> @@ -37,15 +37,12 @@ struct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity)
>  }
>  EXPORT_SYMBOL(fimc_find_remote_sensor);
>  
> -void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
> -						unsigned int caps)
> +void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap)
>  {
>  	strscpy(cap->driver, dev->driver->name, sizeof(cap->driver));
>  	strscpy(cap->card, dev->driver->name, sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info),
>  				"platform:%s", dev_name(dev));
> -	cap->device_caps = caps;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  }
>  EXPORT_SYMBOL(__fimc_vidioc_querycap);
>  
> diff --git a/drivers/media/platform/exynos4-is/common.h b/drivers/media/platform/exynos4-is/common.h
> index 75b9c71d9419..58da94e7910c 100644
> --- a/drivers/media/platform/exynos4-is/common.h
> +++ b/drivers/media/platform/exynos4-is/common.h
> @@ -12,5 +12,4 @@
>  #include <media/v4l2-subdev.h>
>  
>  struct v4l2_subdev *fimc_find_remote_sensor(struct media_entity *entity);
> -void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap,
> -			    unsigned int caps);
> +void __fimc_vidioc_querycap(struct device *dev, struct v4l2_capability *cap);
> diff --git a/drivers/media/platform/exynos4-is/fimc-capture.c b/drivers/media/platform/exynos4-is/fimc-capture.c
> index de4af0357a3c..ecfa6ab4a19d 100644
> --- a/drivers/media/platform/exynos4-is/fimc-capture.c
> +++ b/drivers/media/platform/exynos4-is/fimc-capture.c
> @@ -728,8 +728,7 @@ static int fimc_cap_querycap(struct file *file, void *priv,
>  {
>  	struct fimc_dev *fimc = video_drvdata(file);
>  
> -	__fimc_vidioc_querycap(&fimc->pdev->dev, cap, V4L2_CAP_STREAMING |
> -					V4L2_CAP_VIDEO_CAPTURE_MPLANE);
> +	__fimc_vidioc_querycap(&fimc->pdev->dev, cap);
>  	return 0;
>  }
>  
> @@ -1765,6 +1764,7 @@ static int fimc_register_capture_device(struct fimc_dev *fimc,
>  	vfd->release	= video_device_release_empty;
>  	vfd->queue	= q;
>  	vfd->lock	= &fimc->lock;
> +	vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
>  
>  	video_set_drvdata(vfd, fimc);
>  	vid_cap = &fimc->vid_cap;
> diff --git a/drivers/media/platform/exynos4-is/fimc-isp-video.c b/drivers/media/platform/exynos4-is/fimc-isp-video.c
> index bb35a2017f21..ad8dd672d4a7 100644
> --- a/drivers/media/platform/exynos4-is/fimc-isp-video.c
> +++ b/drivers/media/platform/exynos4-is/fimc-isp-video.c
> @@ -349,7 +349,7 @@ static int isp_video_querycap(struct file *file, void *priv,
>  {
>  	struct fimc_isp *isp = video_drvdata(file);
>  
> -	__fimc_vidioc_querycap(&isp->pdev->dev, cap, V4L2_CAP_STREAMING);
> +	__fimc_vidioc_querycap(&isp->pdev->dev, cap);
>  	return 0;
>  }
>  
> @@ -614,6 +614,7 @@ int fimc_isp_video_device_register(struct fimc_isp *isp,
>  	vdev->minor = -1;
>  	vdev->release = video_device_release_empty;
>  	vdev->lock = &isp->video_lock;
> +	vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_CAPTURE_MPLANE;
>  
>  	iv->pad.flags = MEDIA_PAD_FL_SINK;
>  	ret = media_entity_pads_init(&vdev->entity, 1, &iv->pad);
> diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
> index 96f0a8a0dcae..a16b5bed59bb 100644
> --- a/drivers/media/platform/exynos4-is/fimc-lite.c
> +++ b/drivers/media/platform/exynos4-is/fimc-lite.c
> @@ -658,9 +658,6 @@ static int fimc_lite_querycap(struct file *file, void *priv,
>  	strscpy(cap->card, FIMC_LITE_DRV_NAME, sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  					dev_name(&fimc->pdev->dev));
> -
> -	cap->device_caps = V4L2_CAP_STREAMING;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  	return 0;
>  }
>  
> @@ -1282,6 +1279,7 @@ static int fimc_lite_subdev_registered(struct v4l2_subdev *sd)
>  	vfd->minor = -1;
>  	vfd->release = video_device_release_empty;
>  	vfd->queue = q;
> +	vfd->device_caps = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_STREAMING;
>  	fimc->reqbufs_count = 0;
>  
>  	INIT_LIST_HEAD(&fimc->pending_buf_q);
> diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c b/drivers/media/platform/exynos4-is/fimc-m2m.c
> index 1bea1ce4091e..17e5bf4810f4 100644
> --- a/drivers/media/platform/exynos4-is/fimc-m2m.c
> +++ b/drivers/media/platform/exynos4-is/fimc-m2m.c
> @@ -236,9 +236,8 @@ static int fimc_m2m_querycap(struct file *file, void *fh,
>  				     struct v4l2_capability *cap)
>  {
>  	struct fimc_dev *fimc = video_drvdata(file);
> -	unsigned int caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
>  
> -	__fimc_vidioc_querycap(&fimc->pdev->dev, cap, caps);
> +	__fimc_vidioc_querycap(&fimc->pdev->dev, cap);
>  	return 0;
>  }
>  
> @@ -736,6 +735,7 @@ int fimc_register_m2m_device(struct fimc_dev *fimc,
>  	vfd->release = video_device_release_empty;
>  	vfd->lock = &fimc->lock;
>  	vfd->vfl_dir = VFL_DIR_M2M;
> +	vfd->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
>  	set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
>  
>  	snprintf(vfd->name, sizeof(vfd->name), "fimc.%d.m2m", fimc->id);
> diff --git a/drivers/media/platform/rcar_jpu.c b/drivers/media/platform/rcar_jpu.c
> index 1dfd2eb65920..9b6eadef6858 100644
> --- a/drivers/media/platform/rcar_jpu.c
> +++ b/drivers/media/platform/rcar_jpu.c
> @@ -671,8 +671,6 @@ static int jpu_querycap(struct file *file, void *priv,
>  	strscpy(cap->driver, DRV_NAME, sizeof(cap->driver));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  		 dev_name(ctx->jpu->dev));
> -	cap->device_caps |= V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE;
> -	cap->capabilities = V4L2_CAP_DEVICE_CAPS | cap->device_caps;
>  	memset(cap->reserved, 0, sizeof(cap->reserved));
>  
>  	return 0;
> @@ -1662,6 +1660,8 @@ static int jpu_probe(struct platform_device *pdev)
>  	jpu->vfd_encoder.lock		= &jpu->mutex;
>  	jpu->vfd_encoder.v4l2_dev	= &jpu->v4l2_dev;
>  	jpu->vfd_encoder.vfl_dir	= VFL_DIR_M2M;
> +	jpu->vfd_encoder.device_caps	= V4L2_CAP_STREAMING |
> +					  V4L2_CAP_VIDEO_M2M_MPLANE;
>  
>  	ret = video_register_device(&jpu->vfd_encoder, VFL_TYPE_GRABBER, -1);
>  	if (ret) {
> @@ -1679,6 +1679,8 @@ static int jpu_probe(struct platform_device *pdev)
>  	jpu->vfd_decoder.lock		= &jpu->mutex;
>  	jpu->vfd_decoder.v4l2_dev	= &jpu->v4l2_dev;
>  	jpu->vfd_decoder.vfl_dir	= VFL_DIR_M2M;
> +	jpu->vfd_decoder.device_caps	= V4L2_CAP_STREAMING |
> +					  V4L2_CAP_VIDEO_M2M_MPLANE;
>  
>  	ret = video_register_device(&jpu->vfd_decoder, VFL_TYPE_GRABBER, -1);
>  	if (ret) {
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc.c b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> index 9a53d3908b52..6ff57018a353 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc.c
> @@ -1348,6 +1348,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>  	vfd->lock	= &dev->mfc_mutex;
>  	vfd->v4l2_dev	= &dev->v4l2_dev;
>  	vfd->vfl_dir	= VFL_DIR_M2M;
> +	vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
>  	set_bit(V4L2_FL_QUIRK_INVERTED_CROP, &vfd->flags);
>  	snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_DEC_NAME);
>  	dev->vfd_dec	= vfd;
> @@ -1366,6 +1367,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
>  	vfd->lock	= &dev->mfc_mutex;
>  	vfd->v4l2_dev	= &dev->v4l2_dev;
>  	vfd->vfl_dir	= VFL_DIR_M2M;
> +	vfd->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
>  	snprintf(vfd->name, sizeof(vfd->name), "%s", S5P_MFC_ENC_NAME);
>  	dev->vfd_enc	= vfd;
>  	video_set_drvdata(vfd, dev);
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index e111f9c47179..d29e5bc73651 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -275,13 +275,6 @@ static int vidioc_querycap(struct file *file, void *priv,
>  	strscpy(cap->card, dev->vfd_dec->name, sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  		 dev_name(&dev->plat_dev->dev));
> -	/*
> -	 * This is only a mem-to-mem video device. The capture and output
> -	 * device capability flags are left only for backward compatibility
> -	 * and are scheduled for removal.
> -	 */
> -	cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  	return 0;
>  }
>  
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index 5505e4fc2090..5ab1231b4189 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -1317,13 +1317,6 @@ static int vidioc_querycap(struct file *file, void *priv,
>  	strscpy(cap->card, dev->vfd_enc->name, sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  		 dev_name(&dev->plat_dev->dev));
> -	/*
> -	 * This is only a mem-to-mem video device. The capture and output
> -	 * device capability flags are left only for backward compatibility
> -	 * and are scheduled for removal.
> -	 */
> -	cap->device_caps = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  	return 0;
>  }
>  
> diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
> index 1e40eafec284..a61ac426853a 100644
> --- a/drivers/media/platform/ti-vpe/vpe.c
> +++ b/drivers/media/platform/ti-vpe/vpe.c
> @@ -1495,8 +1495,6 @@ static int vpe_querycap(struct file *file, void *priv,
>  	strscpy(cap->card, VPE_MODULE_NAME, sizeof(cap->card));
>  	snprintf(cap->bus_info, sizeof(cap->bus_info), "platform:%s",
>  		VPE_MODULE_NAME);
> -	cap->device_caps  = V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING;
> -	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
>  	return 0;
>  }
>  
> @@ -2411,6 +2409,7 @@ static const struct video_device vpe_videodev = {
>  	.minor		= -1,
>  	.release	= video_device_release_empty,
>  	.vfl_dir	= VFL_DIR_M2M,
> +	.device_caps	= V4L2_CAP_VIDEO_M2M_MPLANE | V4L2_CAP_STREAMING,
>  };
>  
>  static const struct v4l2_m2m_ops m2m_ops = {
> -- 
> 2.20.1
> 

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps
  2019-06-04  7:06 ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Boris Brezillon
  2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
  2019-06-04 12:33   ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Laurent Pinchart
@ 2019-06-04 13:10   ` Sylwester Nawrocki
  2 siblings, 0 replies; 6+ messages in thread
From: Sylwester Nawrocki @ 2019-06-04 13:10 UTC (permalink / raw)
  To: Boris Brezillon, Hans Verkuil
  Cc: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	linux-media, kernel, Tomasz Figa, Hirokazu Honda,
	Nicolas Dufresne

On 6/4/19 09:06, Boris Brezillon wrote:
> This is needed if we want the core to be able to check _MPLANE support
> without having to call the ->vdioc_querycap() hook.
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>

For:
 drivers/media/platform/exynos-gsc
 drivers/media/platform/exynos4-is
 drivers/media/platform/s5p-mfc

Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

-- 
Thanks,
Sylwester

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane
  2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
@ 2019-06-04 13:13     ` Sylwester Nawrocki
  2019-06-04 13:34     ` Boris Brezillon
  1 sibling, 0 replies; 6+ messages in thread
From: Sylwester Nawrocki @ 2019-06-04 13:13 UTC (permalink / raw)
  To: Boris Brezillon, Hans Verkuil
  Cc: Mauro Carvalho Chehab, Laurent Pinchart, Sakari Ailus,
	linux-media, kernel, Tomasz Figa, Hirokazu Honda,
	Nicolas Dufresne

On 6/4/19 09:06, Boris Brezillon wrote:
> Support for multiplanar and singleplanar formats is mutually exclusive,
> at least in practice. In our attempt to unify support for support for
> mplane and !mplane in v4l, let's get rid of the
> ->vidioc_enum_fmt_{vid,out}_cap_mplane() hooks and call
> ->vidioc_enum_fmt_{vid,out}_cap() instead.
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>

For:
 drivers/media/platform/exynos-gsc
 drivers/media/platform/exynos4-is
 drivers/media/platform/s5p-mfc

Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

-- 
Regards,
Sylwester

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane
  2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
  2019-06-04 13:13     ` Sylwester Nawrocki
@ 2019-06-04 13:34     ` Boris Brezillon
  1 sibling, 0 replies; 6+ messages in thread
From: Boris Brezillon @ 2019-06-04 13:34 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Hans Verkuil, Laurent Pinchart,
	Sakari Ailus, linux-media
  Cc: kernel, Tomasz Figa, Hirokazu Honda, Nicolas Dufresne,
	Sylwester Nawrocki

On Tue,  4 Jun 2019 09:06:25 +0200
Boris Brezillon <boris.brezillon@collabora.com> wrote:

> Support for multiplanar and singleplanar formats is mutually exclusive,
> at least in practice. In our attempt to unify support for support for

				s/support for support for/support for/

> mplane and !mplane in v4l, let's get rid of the
> ->vidioc_enum_fmt_{vid,out}_cap_mplane() hooks and call
> ->vidioc_enum_fmt_{vid,out}_cap() instead.  
> 
> Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
> ---
> Changes in v6:
> - Add missing parens in a test
> 
> Changes in v5:
> - None
> 
> Changes in v4:
> - None
> 
> Changes in v3:
> - Send this patch separately (was previously part of the EXT_BUF/FMT
>   rework)
> 
> Changes in v2:
> - None
> ---
>  drivers/media/pci/intel/ipu3/ipu3-cio2.c      |  2 +-
>  drivers/media/platform/exynos-gsc/gsc-core.c  |  2 +-
>  drivers/media/platform/exynos-gsc/gsc-core.h  |  2 +-
>  drivers/media/platform/exynos-gsc/gsc-m2m.c   | 10 ++++-----
>  .../media/platform/exynos4-is/fimc-capture.c  |  6 +++---
>  .../platform/exynos4-is/fimc-isp-video.c      |  6 +++---
>  drivers/media/platform/exynos4-is/fimc-lite.c |  6 +++---
>  drivers/media/platform/exynos4-is/fimc-m2m.c  |  8 +++----
>  .../media/platform/mtk-jpeg/mtk_jpeg_core.c   |  4 ++--
>  drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c  | 18 ++++++++--------
>  .../platform/mtk-vcodec/mtk_vcodec_dec.c      | 12 +++++------
>  .../platform/mtk-vcodec/mtk_vcodec_enc.c      | 12 +++++------
>  .../media/platform/qcom/camss/camss-video.c   |  2 +-
>  drivers/media/platform/qcom/venus/vdec.c      |  4 ++--
>  drivers/media/platform/qcom/venus/venc.c      |  4 ++--
>  drivers/media/platform/rcar_fdp1.c            |  4 ++--
>  drivers/media/platform/rcar_jpu.c             |  4 ++--
>  drivers/media/platform/renesas-ceu.c          |  2 +-
>  drivers/media/platform/s5p-mfc/s5p_mfc_dec.c  | 12 +++++------
>  drivers/media/platform/s5p-mfc/s5p_mfc_enc.c  | 12 +++++------
>  drivers/media/platform/ti-vpe/vpe.c           |  4 ++--
>  drivers/media/platform/vicodec/vicodec-core.c |  2 --
>  drivers/media/platform/vivid/vivid-core.c     |  6 ++----
>  .../media/platform/vivid/vivid-vid-common.c   | 20 ------------------
>  .../media/platform/vivid/vivid-vid-common.h   |  2 --
>  drivers/media/v4l2-core/v4l2-dev.c            |  2 --
>  drivers/media/v4l2-core/v4l2-ioctl.c          | 21 ++++++++++---------
>  drivers/staging/media/ipu3/ipu3-v4l2.c        |  4 ++--
>  .../media/rockchip/vpu/rockchip_vpu_v4l2.c    | 12 +++++------
>  include/media/v4l2-ioctl.h                    | 14 ++-----------
>  30 files changed, 91 insertions(+), 128 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> index 2a52a393fe74..c1d133e17e4b 100644
> --- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
> @@ -1174,7 +1174,7 @@ static const struct v4l2_file_operations cio2_v4l2_fops = {
>  
>  static const struct v4l2_ioctl_ops cio2_v4l2_ioctl_ops = {
>  	.vidioc_querycap = cio2_v4l2_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = cio2_v4l2_enum_fmt,
> +	.vidioc_enum_fmt_vid_cap = cio2_v4l2_enum_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane = cio2_v4l2_g_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane = cio2_v4l2_s_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane = cio2_v4l2_try_fmt,
> diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
> index 0fa3ec04ab7b..f1d555f47ce3 100644
> --- a/drivers/media/platform/exynos-gsc/gsc-core.c
> +++ b/drivers/media/platform/exynos-gsc/gsc-core.c
> @@ -331,7 +331,7 @@ void gsc_check_src_scale_info(struct gsc_variant *var,
>  	}
>  }
>  
> -int gsc_enum_fmt_mplane(struct v4l2_fmtdesc *f)
> +int gsc_enum_fmt(struct v4l2_fmtdesc *f)
>  {
>  	const struct gsc_fmt *fmt;
>  
> diff --git a/drivers/media/platform/exynos-gsc/gsc-core.h b/drivers/media/platform/exynos-gsc/gsc-core.h
> index c81f0a17d286..8ea49ca004fd 100644
> --- a/drivers/media/platform/exynos-gsc/gsc-core.h
> +++ b/drivers/media/platform/exynos-gsc/gsc-core.h
> @@ -387,7 +387,7 @@ void gsc_m2m_job_finish(struct gsc_ctx *ctx, int vb_state);
>  u32 get_plane_size(struct gsc_frame *fr, unsigned int plane);
>  const struct gsc_fmt *get_format(int index);
>  const struct gsc_fmt *find_fmt(u32 *pixelformat, u32 *mbus_code, u32 index);
> -int gsc_enum_fmt_mplane(struct v4l2_fmtdesc *f);
> +int gsc_enum_fmt(struct v4l2_fmtdesc *f);
>  int gsc_try_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f);
>  void gsc_set_frame_size(struct gsc_frame *frame, int width, int height);
>  int gsc_g_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f);
> diff --git a/drivers/media/platform/exynos-gsc/gsc-m2m.c b/drivers/media/platform/exynos-gsc/gsc-m2m.c
> index cd02e3c233fc..6346694f7de8 100644
> --- a/drivers/media/platform/exynos-gsc/gsc-m2m.c
> +++ b/drivers/media/platform/exynos-gsc/gsc-m2m.c
> @@ -301,10 +301,10 @@ static int gsc_m2m_querycap(struct file *file, void *fh,
>  	return 0;
>  }
>  
> -static int gsc_m2m_enum_fmt_mplane(struct file *file, void *priv,
> -				struct v4l2_fmtdesc *f)
> +static int gsc_m2m_enum_fmt(struct file *file, void *priv,
> +			    struct v4l2_fmtdesc *f)
>  {
> -	return gsc_enum_fmt_mplane(f);
> +	return gsc_enum_fmt(f);
>  }
>  
>  static int gsc_m2m_g_fmt_mplane(struct file *file, void *fh,
> @@ -560,8 +560,8 @@ static int gsc_m2m_s_selection(struct file *file, void *fh,
>  
>  static const struct v4l2_ioctl_ops gsc_m2m_ioctl_ops = {
>  	.vidioc_querycap		= gsc_m2m_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= gsc_m2m_enum_fmt_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane	= gsc_m2m_enum_fmt_mplane,
> +	.vidioc_enum_fmt_vid_cap	= gsc_m2m_enum_fmt,
> +	.vidioc_enum_fmt_vid_out	= gsc_m2m_enum_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane	= gsc_m2m_g_fmt_mplane,
>  	.vidioc_g_fmt_vid_out_mplane	= gsc_m2m_g_fmt_mplane,
>  	.vidioc_try_fmt_vid_cap_mplane	= gsc_m2m_try_fmt_mplane,
> diff --git a/drivers/media/platform/exynos4-is/fimc-capture.c b/drivers/media/platform/exynos4-is/fimc-capture.c
> index ecfa6ab4a19d..84b91e248c5a 100644
> --- a/drivers/media/platform/exynos4-is/fimc-capture.c
> +++ b/drivers/media/platform/exynos4-is/fimc-capture.c
> @@ -732,8 +732,8 @@ static int fimc_cap_querycap(struct file *file, void *priv,
>  	return 0;
>  }
>  
> -static int fimc_cap_enum_fmt_mplane(struct file *file, void *priv,
> -				    struct v4l2_fmtdesc *f)
> +static int fimc_cap_enum_fmt(struct file *file, void *priv,
> +			     struct v4l2_fmtdesc *f)
>  {
>  	struct fimc_fmt *fmt;
>  
> @@ -1360,7 +1360,7 @@ static int fimc_cap_s_selection(struct file *file, void *fh,
>  static const struct v4l2_ioctl_ops fimc_capture_ioctl_ops = {
>  	.vidioc_querycap		= fimc_cap_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane	= fimc_cap_enum_fmt_mplane,
> +	.vidioc_enum_fmt_vid_cap	= fimc_cap_enum_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= fimc_cap_try_fmt_mplane,
>  	.vidioc_s_fmt_vid_cap_mplane	= fimc_cap_s_fmt_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane	= fimc_cap_g_fmt_mplane,
> diff --git a/drivers/media/platform/exynos4-is/fimc-isp-video.c b/drivers/media/platform/exynos4-is/fimc-isp-video.c
> index ad8dd672d4a7..2226a13ac89b 100644
> --- a/drivers/media/platform/exynos4-is/fimc-isp-video.c
> +++ b/drivers/media/platform/exynos4-is/fimc-isp-video.c
> @@ -353,8 +353,8 @@ static int isp_video_querycap(struct file *file, void *priv,
>  	return 0;
>  }
>  
> -static int isp_video_enum_fmt_mplane(struct file *file, void *priv,
> -					struct v4l2_fmtdesc *f)
> +static int isp_video_enum_fmt(struct file *file, void *priv,
> +			      struct v4l2_fmtdesc *f)
>  {
>  	const struct fimc_fmt *fmt;
>  
> @@ -551,7 +551,7 @@ static int isp_video_reqbufs(struct file *file, void *priv,
>  
>  static const struct v4l2_ioctl_ops isp_video_ioctl_ops = {
>  	.vidioc_querycap		= isp_video_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= isp_video_enum_fmt_mplane,
> +	.vidioc_enum_fmt_vid_cap	= isp_video_enum_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= isp_video_try_fmt_mplane,
>  	.vidioc_s_fmt_vid_cap_mplane	= isp_video_s_fmt_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane	= isp_video_g_fmt_mplane,
> diff --git a/drivers/media/platform/exynos4-is/fimc-lite.c b/drivers/media/platform/exynos4-is/fimc-lite.c
> index a16b5bed59bb..e71342756d88 100644
> --- a/drivers/media/platform/exynos4-is/fimc-lite.c
> +++ b/drivers/media/platform/exynos4-is/fimc-lite.c
> @@ -661,8 +661,8 @@ static int fimc_lite_querycap(struct file *file, void *priv,
>  	return 0;
>  }
>  
> -static int fimc_lite_enum_fmt_mplane(struct file *file, void *priv,
> -				     struct v4l2_fmtdesc *f)
> +static int fimc_lite_enum_fmt(struct file *file, void *priv,
> +			      struct v4l2_fmtdesc *f)
>  {
>  	const struct fimc_fmt *fmt;
>  
> @@ -951,7 +951,7 @@ static int fimc_lite_s_selection(struct file *file, void *fh,
>  
>  static const struct v4l2_ioctl_ops fimc_lite_ioctl_ops = {
>  	.vidioc_querycap		= fimc_lite_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= fimc_lite_enum_fmt_mplane,
> +	.vidioc_enum_fmt_vid_cap	= fimc_lite_enum_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= fimc_lite_try_fmt_mplane,
>  	.vidioc_s_fmt_vid_cap_mplane	= fimc_lite_s_fmt_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane	= fimc_lite_g_fmt_mplane,
> diff --git a/drivers/media/platform/exynos4-is/fimc-m2m.c b/drivers/media/platform/exynos4-is/fimc-m2m.c
> index 17e5bf4810f4..0d1d8b717d9a 100644
> --- a/drivers/media/platform/exynos4-is/fimc-m2m.c
> +++ b/drivers/media/platform/exynos4-is/fimc-m2m.c
> @@ -241,8 +241,8 @@ static int fimc_m2m_querycap(struct file *file, void *fh,
>  	return 0;
>  }
>  
> -static int fimc_m2m_enum_fmt_mplane(struct file *file, void *priv,
> -				    struct v4l2_fmtdesc *f)
> +static int fimc_m2m_enum_fmt(struct file *file, void *priv,
> +			     struct v4l2_fmtdesc *f)
>  {
>  	struct fimc_fmt *fmt;
>  
> @@ -532,8 +532,8 @@ static int fimc_m2m_s_selection(struct file *file, void *fh,
>  
>  static const struct v4l2_ioctl_ops fimc_m2m_ioctl_ops = {
>  	.vidioc_querycap		= fimc_m2m_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= fimc_m2m_enum_fmt_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane	= fimc_m2m_enum_fmt_mplane,
> +	.vidioc_enum_fmt_vid_cap	= fimc_m2m_enum_fmt,
> +	.vidioc_enum_fmt_vid_out	= fimc_m2m_enum_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane	= fimc_m2m_g_fmt_mplane,
>  	.vidioc_g_fmt_vid_out_mplane	= fimc_m2m_g_fmt_mplane,
>  	.vidioc_try_fmt_vid_cap_mplane	= fimc_m2m_try_fmt_mplane,
> diff --git a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
> index f761e4d8bf2a..3b199662cb34 100644
> --- a/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
> +++ b/drivers/media/platform/mtk-jpeg/mtk_jpeg_core.c
> @@ -536,8 +536,8 @@ static int mtk_jpeg_qbuf(struct file *file, void *priv, struct v4l2_buffer *buf)
>  
>  static const struct v4l2_ioctl_ops mtk_jpeg_ioctl_ops = {
>  	.vidioc_querycap                = mtk_jpeg_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = mtk_jpeg_enum_fmt_vid_cap,
> -	.vidioc_enum_fmt_vid_out_mplane = mtk_jpeg_enum_fmt_vid_out,
> +	.vidioc_enum_fmt_vid_cap	= mtk_jpeg_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out	= mtk_jpeg_enum_fmt_vid_out,
>  	.vidioc_try_fmt_vid_cap_mplane	= mtk_jpeg_try_fmt_vid_cap_mplane,
>  	.vidioc_try_fmt_vid_out_mplane	= mtk_jpeg_try_fmt_vid_out_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane    = mtk_jpeg_g_fmt_vid_mplane,
> diff --git a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
> index 7d15c06e9db9..365d3f92fd9e 100644
> --- a/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
> +++ b/drivers/media/platform/mtk-mdp/mtk_mdp_m2m.c
> @@ -620,7 +620,7 @@ static int mtk_mdp_m2m_querycap(struct file *file, void *fh,
>  	return 0;
>  }
>  
> -static int mtk_mdp_enum_fmt_mplane(struct v4l2_fmtdesc *f, u32 type)
> +static int mtk_mdp_enum_fmt(struct v4l2_fmtdesc *f, u32 type)
>  {
>  	const struct mtk_mdp_fmt *fmt;
>  
> @@ -633,16 +633,16 @@ static int mtk_mdp_enum_fmt_mplane(struct v4l2_fmtdesc *f, u32 type)
>  	return 0;
>  }
>  
> -static int mtk_mdp_m2m_enum_fmt_mplane_vid_cap(struct file *file, void *priv,
> -				       struct v4l2_fmtdesc *f)
> +static int mtk_mdp_m2m_enum_fmt_vid_cap(struct file *file, void *priv,
> +					struct v4l2_fmtdesc *f)
>  {
> -	return mtk_mdp_enum_fmt_mplane(f, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
> +	return mtk_mdp_enum_fmt(f, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
>  }
>  
> -static int mtk_mdp_m2m_enum_fmt_mplane_vid_out(struct file *file, void *priv,
> -				       struct v4l2_fmtdesc *f)
> +static int mtk_mdp_m2m_enum_fmt_vid_out(struct file *file, void *priv,
> +					struct v4l2_fmtdesc *f)
>  {
> -	return mtk_mdp_enum_fmt_mplane(f, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
> +	return mtk_mdp_enum_fmt(f, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE);
>  }
>  
>  static int mtk_mdp_m2m_g_fmt_mplane(struct file *file, void *fh,
> @@ -935,8 +935,8 @@ static int mtk_mdp_m2m_s_selection(struct file *file, void *fh,
>  
>  static const struct v4l2_ioctl_ops mtk_mdp_m2m_ioctl_ops = {
>  	.vidioc_querycap		= mtk_mdp_m2m_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= mtk_mdp_m2m_enum_fmt_mplane_vid_cap,
> -	.vidioc_enum_fmt_vid_out_mplane	= mtk_mdp_m2m_enum_fmt_mplane_vid_out,
> +	.vidioc_enum_fmt_vid_cap	= mtk_mdp_m2m_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out	= mtk_mdp_m2m_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_cap_mplane	= mtk_mdp_m2m_g_fmt_mplane,
>  	.vidioc_g_fmt_vid_out_mplane	= mtk_mdp_m2m_g_fmt_mplane,
>  	.vidioc_try_fmt_vid_cap_mplane	= mtk_mdp_m2m_try_fmt_mplane,
> diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
> index 851903867bc9..af25189306bb 100644
> --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
> +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c
> @@ -957,14 +957,14 @@ static int vidioc_enum_fmt(struct v4l2_fmtdesc *f, bool output_queue)
>  	return 0;
>  }
>  
> -static int vidioc_vdec_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
> -					       struct v4l2_fmtdesc *f)
> +static int vidioc_vdec_enum_fmt_vid_cap(struct file *file, void *pirv,
> +					struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(f, false);
>  }
>  
> -static int vidioc_vdec_enum_fmt_vid_out_mplane(struct file *file, void *priv,
> -					       struct v4l2_fmtdesc *f)
> +static int vidioc_vdec_enum_fmt_vid_out(struct file *file, void *priv,
> +					struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(f, true);
>  }
> @@ -1461,8 +1461,8 @@ const struct v4l2_ioctl_ops mtk_vdec_ioctl_ops = {
>  
>  	.vidioc_create_bufs		= v4l2_m2m_ioctl_create_bufs,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane	= vidioc_vdec_enum_fmt_vid_cap_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane	= vidioc_vdec_enum_fmt_vid_out_mplane,
> +	.vidioc_enum_fmt_vid_cap	= vidioc_vdec_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out	= vidioc_vdec_enum_fmt_vid_out,
>  	.vidioc_enum_framesizes	= vidioc_enum_framesizes,
>  
>  	.vidioc_querycap		= vidioc_vdec_querycap,
> diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
> index 50351adafc47..c3c7aeba543c 100644
> --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
> +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
> @@ -207,14 +207,14 @@ static int vidioc_enum_framesizes(struct file *file, void *fh,
>  	return -EINVAL;
>  }
>  
> -static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(f, false);
>  }
>  
> -static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *prov,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_out(struct file *file, void *prov,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(f, true);
>  }
> @@ -725,8 +725,8 @@ const struct v4l2_ioctl_ops mtk_venc_ioctl_ops = {
>  	.vidioc_dqbuf			= vidioc_venc_dqbuf,
>  
>  	.vidioc_querycap		= vidioc_venc_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
> +	.vidioc_enum_fmt_vid_cap	= vidioc_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out	= vidioc_enum_fmt_vid_out,
>  	.vidioc_enum_framesizes		= vidioc_enum_framesizes,
>  
>  	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap_mplane,
> diff --git a/drivers/media/platform/qcom/camss/camss-video.c b/drivers/media/platform/qcom/camss/camss-video.c
> index 58aebe7114cd..1d50dfbbb762 100644
> --- a/drivers/media/platform/qcom/camss/camss-video.c
> +++ b/drivers/media/platform/qcom/camss/camss-video.c
> @@ -703,7 +703,7 @@ static int video_s_input(struct file *file, void *fh, unsigned int input)
>  
>  static const struct v4l2_ioctl_ops msm_vid_ioctl_ops = {
>  	.vidioc_querycap		= video_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane	= video_enum_fmt,
> +	.vidioc_enum_fmt_vid_cap	= video_enum_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane	= video_g_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane	= video_s_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= video_try_fmt,
> diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
> index 282de21cf2e1..2a47b9b8c5bc 100644
> --- a/drivers/media/platform/qcom/venus/vdec.c
> +++ b/drivers/media/platform/qcom/venus/vdec.c
> @@ -491,8 +491,8 @@ vdec_decoder_cmd(struct file *file, void *fh, struct v4l2_decoder_cmd *cmd)
>  
>  static const struct v4l2_ioctl_ops vdec_ioctl_ops = {
>  	.vidioc_querycap = vdec_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = vdec_enum_fmt,
> -	.vidioc_enum_fmt_vid_out_mplane = vdec_enum_fmt,
> +	.vidioc_enum_fmt_vid_cap = vdec_enum_fmt,
> +	.vidioc_enum_fmt_vid_out = vdec_enum_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane = vdec_s_fmt,
>  	.vidioc_s_fmt_vid_out_mplane = vdec_s_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane = vdec_g_fmt,
> diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c
> index 32cff294582f..406a47923996 100644
> --- a/drivers/media/platform/qcom/venus/venc.c
> +++ b/drivers/media/platform/qcom/venus/venc.c
> @@ -616,8 +616,8 @@ static int venc_enum_frameintervals(struct file *file, void *fh,
>  
>  static const struct v4l2_ioctl_ops venc_ioctl_ops = {
>  	.vidioc_querycap = venc_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = venc_enum_fmt,
> -	.vidioc_enum_fmt_vid_out_mplane = venc_enum_fmt,
> +	.vidioc_enum_fmt_vid_cap = venc_enum_fmt,
> +	.vidioc_enum_fmt_vid_out = venc_enum_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane = venc_s_fmt,
>  	.vidioc_s_fmt_vid_out_mplane = venc_s_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane = venc_g_fmt,
> diff --git a/drivers/media/platform/rcar_fdp1.c b/drivers/media/platform/rcar_fdp1.c
> index 6a90bc4c476e..6f9a4c69f620 100644
> --- a/drivers/media/platform/rcar_fdp1.c
> +++ b/drivers/media/platform/rcar_fdp1.c
> @@ -1730,8 +1730,8 @@ static const char * const fdp1_ctrl_deint_menu[] = {
>  static const struct v4l2_ioctl_ops fdp1_ioctl_ops = {
>  	.vidioc_querycap	= fdp1_vidioc_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane = fdp1_enum_fmt_vid_cap,
> -	.vidioc_enum_fmt_vid_out_mplane = fdp1_enum_fmt_vid_out,
> +	.vidioc_enum_fmt_vid_cap	= fdp1_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out	= fdp1_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_cap_mplane	= fdp1_g_fmt,
>  	.vidioc_g_fmt_vid_out_mplane	= fdp1_g_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= fdp1_try_fmt,
> diff --git a/drivers/media/platform/rcar_jpu.c b/drivers/media/platform/rcar_jpu.c
> index 9b6eadef6858..1c3f507acfc9 100644
> --- a/drivers/media/platform/rcar_jpu.c
> +++ b/drivers/media/platform/rcar_jpu.c
> @@ -946,8 +946,8 @@ static int jpu_streamon(struct file *file, void *priv, enum v4l2_buf_type type)
>  static const struct v4l2_ioctl_ops jpu_ioctl_ops = {
>  	.vidioc_querycap		= jpu_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane = jpu_enum_fmt_cap,
> -	.vidioc_enum_fmt_vid_out_mplane = jpu_enum_fmt_out,
> +	.vidioc_enum_fmt_vid_cap	= jpu_enum_fmt_cap,
> +	.vidioc_enum_fmt_vid_out	= jpu_enum_fmt_out,
>  	.vidioc_g_fmt_vid_cap_mplane	= jpu_g_fmt,
>  	.vidioc_g_fmt_vid_out_mplane	= jpu_g_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= jpu_try_fmt,
> diff --git a/drivers/media/platform/renesas-ceu.c b/drivers/media/platform/renesas-ceu.c
> index 150196f7cf96..57d0c0f9fa4b 100644
> --- a/drivers/media/platform/renesas-ceu.c
> +++ b/drivers/media/platform/renesas-ceu.c
> @@ -1339,7 +1339,7 @@ static int ceu_enum_frameintervals(struct file *file, void *fh,
>  static const struct v4l2_ioctl_ops ceu_ioctl_ops = {
>  	.vidioc_querycap		= ceu_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane	= ceu_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_cap	= ceu_enum_fmt_vid_cap,
>  	.vidioc_try_fmt_vid_cap_mplane	= ceu_try_fmt_vid_cap,
>  	.vidioc_s_fmt_vid_cap_mplane	= ceu_s_fmt_vid_cap,
>  	.vidioc_g_fmt_vid_cap_mplane	= ceu_g_fmt_vid_cap,
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> index d29e5bc73651..51ab2e38a270 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_dec.c
> @@ -306,14 +306,14 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
>  	return 0;
>  }
>  
> -static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
> -							struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, f, false);
>  }
>  
> -static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *priv,
> -							struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, f, true);
>  }
> @@ -880,8 +880,8 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
>  /* v4l2_ioctl_ops */
>  static const struct v4l2_ioctl_ops s5p_mfc_dec_ioctl_ops = {
>  	.vidioc_querycap = vidioc_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
> +	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
>  	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane = vidioc_try_fmt,
> diff --git a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> index 5ab1231b4189..7485eded5c5d 100644
> --- a/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_enc.c
> @@ -1347,14 +1347,14 @@ static int vidioc_enum_fmt(struct file *file, struct v4l2_fmtdesc *f,
>  	return -EINVAL;
>  }
>  
> -static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *pirv,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_cap(struct file *file, void *pirv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, f, false);
>  }
>  
> -static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *prov,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_out(struct file *file, void *prov,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, f, true);
>  }
> @@ -2336,8 +2336,8 @@ static int vidioc_subscribe_event(struct v4l2_fh *fh,
>  
>  static const struct v4l2_ioctl_ops s5p_mfc_enc_ioctl_ops = {
>  	.vidioc_querycap = vidioc_querycap,
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
> +	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt,
>  	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane = vidioc_try_fmt,
> diff --git a/drivers/media/platform/ti-vpe/vpe.c b/drivers/media/platform/ti-vpe/vpe.c
> index a61ac426853a..3f90f9413da1 100644
> --- a/drivers/media/platform/ti-vpe/vpe.c
> +++ b/drivers/media/platform/ti-vpe/vpe.c
> @@ -1971,12 +1971,12 @@ static const struct v4l2_ctrl_ops vpe_ctrl_ops = {
>  static const struct v4l2_ioctl_ops vpe_ioctl_ops = {
>  	.vidioc_querycap		= vpe_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane	= vpe_enum_fmt,
> +	.vidioc_enum_fmt_vid_cap	= vpe_enum_fmt,
>  	.vidioc_g_fmt_vid_cap_mplane	= vpe_g_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane	= vpe_try_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane	= vpe_s_fmt,
>  
> -	.vidioc_enum_fmt_vid_out_mplane	= vpe_enum_fmt,
> +	.vidioc_enum_fmt_vid_out	= vpe_enum_fmt,
>  	.vidioc_g_fmt_vid_out_mplane	= vpe_g_fmt,
>  	.vidioc_try_fmt_vid_out_mplane	= vpe_try_fmt,
>  	.vidioc_s_fmt_vid_out_mplane	= vpe_s_fmt,
> diff --git a/drivers/media/platform/vicodec/vicodec-core.c b/drivers/media/platform/vicodec/vicodec-core.c
> index 89961257f03f..03acdf86176e 100644
> --- a/drivers/media/platform/vicodec/vicodec-core.c
> +++ b/drivers/media/platform/vicodec/vicodec-core.c
> @@ -1297,7 +1297,6 @@ static const struct v4l2_ioctl_ops vicodec_ioctl_ops = {
>  	.vidioc_try_fmt_vid_cap	= vidioc_try_fmt_vid_cap,
>  	.vidioc_s_fmt_vid_cap	= vidioc_s_fmt_vid_cap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap,
>  	.vidioc_g_fmt_vid_cap_mplane	= vidioc_g_fmt_vid_cap,
>  	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap,
>  	.vidioc_s_fmt_vid_cap_mplane	= vidioc_s_fmt_vid_cap,
> @@ -1307,7 +1306,6 @@ static const struct v4l2_ioctl_ops vicodec_ioctl_ops = {
>  	.vidioc_try_fmt_vid_out	= vidioc_try_fmt_vid_out,
>  	.vidioc_s_fmt_vid_out	= vidioc_s_fmt_vid_out,
>  
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_out_mplane	= vidioc_g_fmt_vid_out,
>  	.vidioc_try_fmt_vid_out_mplane	= vidioc_try_fmt_vid_out,
>  	.vidioc_s_fmt_vid_out_mplane	= vidioc_s_fmt_vid_out,
> diff --git a/drivers/media/platform/vivid/vivid-core.c b/drivers/media/platform/vivid/vivid-core.c
> index 7047df6f0e0e..beb2e566a43c 100644
> --- a/drivers/media/platform/vivid/vivid-core.c
> +++ b/drivers/media/platform/vivid/vivid-core.c
> @@ -500,20 +500,18 @@ static const struct v4l2_file_operations vivid_radio_fops = {
>  static const struct v4l2_ioctl_ops vivid_ioctl_ops = {
>  	.vidioc_querycap		= vidioc_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap	= vidioc_enum_fmt_vid,
> +	.vidioc_enum_fmt_vid_cap	= vivid_enum_fmt_vid,
>  	.vidioc_g_fmt_vid_cap		= vidioc_g_fmt_vid_cap,
>  	.vidioc_try_fmt_vid_cap		= vidioc_try_fmt_vid_cap,
>  	.vidioc_s_fmt_vid_cap		= vidioc_s_fmt_vid_cap,
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane	= vidioc_g_fmt_vid_cap_mplane,
>  	.vidioc_try_fmt_vid_cap_mplane	= vidioc_try_fmt_vid_cap_mplane,
>  	.vidioc_s_fmt_vid_cap_mplane	= vidioc_s_fmt_vid_cap_mplane,
>  
> -	.vidioc_enum_fmt_vid_out	= vidioc_enum_fmt_vid,
> +	.vidioc_enum_fmt_vid_out	= vivid_enum_fmt_vid,
>  	.vidioc_g_fmt_vid_out		= vidioc_g_fmt_vid_out,
>  	.vidioc_try_fmt_vid_out		= vidioc_try_fmt_vid_out,
>  	.vidioc_s_fmt_vid_out		= vidioc_s_fmt_vid_out,
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_mplane,
>  	.vidioc_g_fmt_vid_out_mplane	= vidioc_g_fmt_vid_out_mplane,
>  	.vidioc_try_fmt_vid_out_mplane	= vidioc_try_fmt_vid_out_mplane,
>  	.vidioc_s_fmt_vid_out_mplane	= vidioc_s_fmt_vid_out_mplane,
> diff --git a/drivers/media/platform/vivid/vivid-vid-common.c b/drivers/media/platform/vivid/vivid-vid-common.c
> index 74b83bcc6119..9307ce1cdd16 100644
> --- a/drivers/media/platform/vivid/vivid-vid-common.c
> +++ b/drivers/media/platform/vivid/vivid-vid-common.c
> @@ -797,26 +797,6 @@ int vivid_enum_fmt_vid(struct file *file, void  *priv,
>  	return 0;
>  }
>  
> -int vidioc_enum_fmt_vid_mplane(struct file *file, void  *priv,
> -					struct v4l2_fmtdesc *f)
> -{
> -	struct vivid_dev *dev = video_drvdata(file);
> -
> -	if (!dev->multiplanar)
> -		return -ENOTTY;
> -	return vivid_enum_fmt_vid(file, priv, f);
> -}
> -
> -int vidioc_enum_fmt_vid(struct file *file, void  *priv,
> -					struct v4l2_fmtdesc *f)
> -{
> -	struct vivid_dev *dev = video_drvdata(file);
> -
> -	if (dev->multiplanar)
> -		return -ENOTTY;
> -	return vivid_enum_fmt_vid(file, priv, f);
> -}
> -
>  int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id)
>  {
>  	struct vivid_dev *dev = video_drvdata(file);
> diff --git a/drivers/media/platform/vivid/vivid-vid-common.h b/drivers/media/platform/vivid/vivid-vid-common.h
> index 29b6c0b40a1b..d908d9725283 100644
> --- a/drivers/media/platform/vivid/vivid-vid-common.h
> +++ b/drivers/media/platform/vivid/vivid-vid-common.h
> @@ -28,8 +28,6 @@ void vivid_send_source_change(struct vivid_dev *dev, unsigned type);
>  int vivid_vid_adjust_sel(unsigned flags, struct v4l2_rect *r);
>  
>  int vivid_enum_fmt_vid(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
> -int vidioc_enum_fmt_vid_mplane(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
> -int vidioc_enum_fmt_vid(struct file *file, void  *priv, struct v4l2_fmtdesc *f);
>  int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *id);
>  int vidioc_g_dv_timings(struct file *file, void *_fh, struct v4l2_dv_timings *timings);
>  int vidioc_enum_dv_timings(struct file *file, void *_fh, struct v4l2_enum_dv_timings *timings);
> diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
> index d7528f82a66a..29946a2b2752 100644
> --- a/drivers/media/v4l2-core/v4l2-dev.c
> +++ b/drivers/media/v4l2-core/v4l2-dev.c
> @@ -593,11 +593,9 @@ static void determine_valid_ioctls(struct video_device *vdev)
>  	if (is_vid || is_tch) {
>  		/* video and metadata specific ioctls */
>  		if ((is_rx && (ops->vidioc_enum_fmt_vid_cap ||
> -			       ops->vidioc_enum_fmt_vid_cap_mplane ||
>  			       ops->vidioc_enum_fmt_vid_overlay ||
>  			       ops->vidioc_enum_fmt_meta_cap)) ||
>  		    (is_tx && (ops->vidioc_enum_fmt_vid_out ||
> -			       ops->vidioc_enum_fmt_vid_out_mplane ||
>  			       ops->vidioc_enum_fmt_meta_out)))
>  			set_bit(_IOC_NR(VIDIOC_ENUM_FMT), valid_ioctls);
>  		if ((is_rx && (ops->vidioc_g_fmt_vid_cap ||
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> index 0fbee3caef5d..b4c73e8f23c5 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -1382,6 +1382,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
>  static int v4l_enum_fmt(const struct v4l2_ioctl_ops *ops,
>  				struct file *file, void *fh, void *arg)
>  {
> +	struct video_device *vdev = video_devdata(file);
>  	struct v4l2_fmtdesc *p = arg;
>  	int ret = check_fmt(file, p->type);
>  
> @@ -1391,30 +1392,30 @@ static int v4l_enum_fmt(const struct v4l2_ioctl_ops *ops,
>  
>  	switch (p->type) {
>  	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
> +	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
> +		if (!!(vdev->device_caps & V4L2_CAP_VIDEO_CAPTURE_MPLANE) !=
> +		    (p->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE))
> +			break;
> +
>  		if (unlikely(!ops->vidioc_enum_fmt_vid_cap))
>  			break;
>  		ret = ops->vidioc_enum_fmt_vid_cap(file, fh, arg);
>  		break;
> -	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
> -		if (unlikely(!ops->vidioc_enum_fmt_vid_cap_mplane))
> -			break;
> -		ret = ops->vidioc_enum_fmt_vid_cap_mplane(file, fh, arg);
> -		break;
>  	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
>  		if (unlikely(!ops->vidioc_enum_fmt_vid_overlay))
>  			break;
>  		ret = ops->vidioc_enum_fmt_vid_overlay(file, fh, arg);
>  		break;
>  	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
> +	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
> +		if (!!(vdev->device_caps & V4L2_CAP_VIDEO_OUTPUT_MPLANE) !=
> +		    (p->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE))
> +			break;
> +
>  		if (unlikely(!ops->vidioc_enum_fmt_vid_out))
>  			break;
>  		ret = ops->vidioc_enum_fmt_vid_out(file, fh, arg);
>  		break;
> -	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
> -		if (unlikely(!ops->vidioc_enum_fmt_vid_out_mplane))
> -			break;
> -		ret = ops->vidioc_enum_fmt_vid_out_mplane(file, fh, arg);
> -		break;
>  	case V4L2_BUF_TYPE_SDR_CAPTURE:
>  		if (unlikely(!ops->vidioc_enum_fmt_sdr_cap))
>  			break;
> diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c
> index a7bc22040ed8..3c7ad1eed434 100644
> --- a/drivers/staging/media/ipu3/ipu3-v4l2.c
> +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c
> @@ -955,12 +955,12 @@ static const struct v4l2_file_operations imgu_v4l2_fops = {
>  static const struct v4l2_ioctl_ops imgu_v4l2_ioctl_ops = {
>  	.vidioc_querycap = imgu_vidioc_querycap,
>  
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap,
> +	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
>  	.vidioc_g_fmt_vid_cap_mplane = imgu_vidioc_g_fmt,
>  	.vidioc_s_fmt_vid_cap_mplane = imgu_vidioc_s_fmt,
>  	.vidioc_try_fmt_vid_cap_mplane = imgu_vidioc_try_fmt,
>  
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out,
> +	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
>  	.vidioc_g_fmt_vid_out_mplane = imgu_vidioc_g_fmt,
>  	.vidioc_s_fmt_vid_out_mplane = imgu_vidioc_s_fmt,
>  	.vidioc_try_fmt_vid_out_mplane = imgu_vidioc_try_fmt,
> diff --git a/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c b/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
> index 1b80a45df8fe..8bc709ab13be 100644
> --- a/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
> +++ b/drivers/staging/media/rockchip/vpu/rockchip_vpu_v4l2.c
> @@ -153,14 +153,14 @@ static int vidioc_enum_fmt(struct file *file, void *priv,
>  	return -EINVAL;
>  }
>  
> -static int vidioc_enum_fmt_vid_cap_mplane(struct file *file, void *priv,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, priv, f, true);
>  }
>  
> -static int vidioc_enum_fmt_vid_out_mplane(struct file *file, void *priv,
> -					  struct v4l2_fmtdesc *f)
> +static int vidioc_enum_fmt_vid_out(struct file *file, void *priv,
> +				   struct v4l2_fmtdesc *f)
>  {
>  	return vidioc_enum_fmt(file, priv, f, false);
>  }
> @@ -494,8 +494,8 @@ const struct v4l2_ioctl_ops rockchip_vpu_ioctl_ops = {
>  	.vidioc_s_fmt_vid_cap_mplane = vidioc_s_fmt_cap_mplane,
>  	.vidioc_g_fmt_vid_out_mplane = vidioc_g_fmt_out_mplane,
>  	.vidioc_g_fmt_vid_cap_mplane = vidioc_g_fmt_cap_mplane,
> -	.vidioc_enum_fmt_vid_out_mplane = vidioc_enum_fmt_vid_out_mplane,
> -	.vidioc_enum_fmt_vid_cap_mplane = vidioc_enum_fmt_vid_cap_mplane,
> +	.vidioc_enum_fmt_vid_out = vidioc_enum_fmt_vid_out,
> +	.vidioc_enum_fmt_vid_cap = vidioc_enum_fmt_vid_cap,
>  
>  	.vidioc_reqbufs = v4l2_m2m_ioctl_reqbufs,
>  	.vidioc_querybuf = v4l2_m2m_ioctl_querybuf,
> diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
> index 8533ece5026e..400f2e46c108 100644
> --- a/include/media/v4l2-ioctl.h
> +++ b/include/media/v4l2-ioctl.h
> @@ -26,19 +26,13 @@ struct v4l2_fh;
>   *	:ref:`VIDIOC_QUERYCAP <vidioc_querycap>` ioctl
>   * @vidioc_enum_fmt_vid_cap: pointer to the function that implements
>   *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
> - *	for video capture in single plane mode
> + *	for video capture in single and multi plane mode
>   * @vidioc_enum_fmt_vid_overlay: pointer to the function that implements
>   *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
>   *	for video overlay
>   * @vidioc_enum_fmt_vid_out: pointer to the function that implements
>   *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
> - *	for video output in single plane mode
> - * @vidioc_enum_fmt_vid_cap_mplane: pointer to the function that implements
> - *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
> - *	for video capture in multiplane mode
> - * @vidioc_enum_fmt_vid_out_mplane: pointer to the function that implements
> - *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
> - *	for video output in multiplane mode
> + *	for video output in single and multi plane mode
>   * @vidioc_enum_fmt_sdr_cap: pointer to the function that implements
>   *	:ref:`VIDIOC_ENUM_FMT <vidioc_enum_fmt>` ioctl logic
>   *	for Software Defined Radio capture
> @@ -313,10 +307,6 @@ struct v4l2_ioctl_ops {
>  					   struct v4l2_fmtdesc *f);
>  	int (*vidioc_enum_fmt_vid_out)(struct file *file, void *fh,
>  				       struct v4l2_fmtdesc *f);
> -	int (*vidioc_enum_fmt_vid_cap_mplane)(struct file *file, void *fh,
> -					      struct v4l2_fmtdesc *f);
> -	int (*vidioc_enum_fmt_vid_out_mplane)(struct file *file, void *fh,
> -					      struct v4l2_fmtdesc *f);
>  	int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *fh,
>  				       struct v4l2_fmtdesc *f);
>  	int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *fh,


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-06-04 13:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <CGME20190604070638epcas2p32a4f7ec8c40822a1559bdcc2a918a502@epcas2p3.samsung.com>
2019-06-04  7:06 ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Boris Brezillon
2019-06-04  7:06   ` [PATCH v6 2/2] media: v4l2: Get rid of ->vidioc_enum_fmt_vid_{cap,out}_mplane Boris Brezillon
2019-06-04 13:13     ` Sylwester Nawrocki
2019-06-04 13:34     ` Boris Brezillon
2019-06-04 12:33   ` [PATCH v6 1/2] media: v4l2: Make sure all drivers set _MPLANE caps in vdev->device_caps Laurent Pinchart
2019-06-04 13:10   ` Sylwester Nawrocki

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.