summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/exynos-gsc/gsc-core.c
diff options
context:
space:
mode:
authorHans Verkuil <hansverk@cisco.com>2017-05-08 11:35:05 -0300
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2017-06-23 09:20:42 -0300
commiteaec420f530d376d6bb6e547a741203344619f47 (patch)
tree4c6c59919d8ded592f354aa725e7defe20bb9bda /drivers/media/platform/exynos-gsc/gsc-core.c
parent0e8298e58839cb0bb6aafdbae38e5f8b03a8ff20 (diff)
downloadlinux-eaec420f530d376d6bb6e547a741203344619f47.tar.bz2
[media] v4l2-ioctl/exynos: fix G/S_SELECTION's type handling
The type field in struct v4l2_selection is supposed to never use the _MPLANE variants. E.g. if the driver supports V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, then userspace should still pass V4L2_BUF_TYPE_VIDEO_CAPTURE. The reasons for this are lost in the mists of time, but it is really annoying. In addition, the exynos drivers didn't follow this rule and instead expected the _MPLANE type. To fix that code is added to the v4l2 core that maps the _MPLANE buffer types to their regular equivalents before calling the driver. Effectively this allows for userspace to use either _MPLANE or the regular buffer type. This keeps backwards compatibility while making things easier for userspace. Since drivers now never see the _MPLANE buffer types the exynos drivers had to be adapted as well. Signed-off-by: Hans Verkuil <hansverk@cisco.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media/platform/exynos-gsc/gsc-core.c')
-rw-r--r--drivers/media/platform/exynos-gsc/gsc-core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c
index 0241168c85af..43801509dabb 100644
--- a/drivers/media/platform/exynos-gsc/gsc-core.c
+++ b/drivers/media/platform/exynos-gsc/gsc-core.c
@@ -568,9 +568,9 @@ int gsc_try_crop(struct gsc_ctx *ctx, struct v4l2_crop *cr)
}
pr_debug("user put w: %d, h: %d", cr->c.width, cr->c.height);
- if (cr->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+ if (cr->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
f = &ctx->d_frame;
- else if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
+ else if (cr->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
f = &ctx->s_frame;
else
return -EINVAL;