diff options
author | Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> | 2020-04-21 15:57:42 +0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab+huawei@kernel.org> | 2020-05-06 12:09:55 +0200 |
commit | 148dd20602d5d9bab5de46fd8a6047ab285ce9c3 (patch) | |
tree | 48af506066fa88254e642b088596dd056cac6fc7 | |
parent | d5f74a1eff9aef3ba23673c8ef74719ba8a105f7 (diff) |
media: staging/intel-ipu3: Make use of V4L2_CAP_IO_MC
Set the V4L2_CAP_IO_MC capability flag and remove the driver specific
vidioc_enum_{input,output}, vidioc_g_{input,output} and
vidioc_s_{input,output} callbacks.
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
-rw-r--r-- | drivers/staging/media/ipu3/ipu3-v4l2.c | 64 |
1 files changed, 7 insertions, 57 deletions
diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c index afbb4636e714..4dc8d9165f63 100644 --- a/drivers/staging/media/ipu3/ipu3-v4l2.c +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c @@ -605,6 +605,9 @@ static int enum_fmts(struct v4l2_fmtdesc *f, u32 type) { unsigned int i, j; + if (f->mbus_code != 0 && f->mbus_code != MEDIA_BUS_FMT_FIXED) + return -EINVAL; + for (i = j = 0; i < ARRAY_SIZE(formats); ++i) { if (formats[i].type == type) { if (j == f->index) @@ -834,6 +837,9 @@ static int imgu_meta_enum_format(struct file *file, void *fh, if (fmt->index > 0 || fmt->type != node->vbq.type) return -EINVAL; + if (fmt->mbus_code != 0 && fmt->mbus_code != MEDIA_BUS_FMT_FIXED) + return -EINVAL; + strscpy(fmt->description, meta_fmts[i].name, sizeof(fmt->description)); fmt->pixelformat = meta_fmts[i].fourcc; @@ -853,54 +859,6 @@ static int imgu_vidioc_g_meta_fmt(struct file *file, void *fh, return 0; } -static int imgu_vidioc_enum_input(struct file *file, void *fh, - struct v4l2_input *input) -{ - if (input->index > 0) - return -EINVAL; - strscpy(input->name, "camera", sizeof(input->name)); - input->type = V4L2_INPUT_TYPE_CAMERA; - - return 0; -} - -static int imgu_vidioc_g_input(struct file *file, void *fh, unsigned int *input) -{ - *input = 0; - - return 0; -} - -static int imgu_vidioc_s_input(struct file *file, void *fh, unsigned int input) -{ - return input == 0 ? 0 : -EINVAL; -} - -static int imgu_vidioc_enum_output(struct file *file, void *fh, - struct v4l2_output *output) -{ - if (output->index > 0) - return -EINVAL; - strscpy(output->name, "camera", sizeof(output->name)); - output->type = V4L2_INPUT_TYPE_CAMERA; - - return 0; -} - -static int imgu_vidioc_g_output(struct file *file, void *fh, - unsigned int *output) -{ - *output = 0; - - return 0; -} - -static int imgu_vidioc_s_output(struct file *file, void *fh, - unsigned int output) -{ - return output == 0 ? 0 : -EINVAL; -} - /******************** function pointers ********************/ static struct v4l2_subdev_internal_ops imgu_subdev_internal_ops = { @@ -973,14 +931,6 @@ static const struct v4l2_ioctl_ops imgu_v4l2_ioctl_ops = { .vidioc_s_fmt_vid_out_mplane = imgu_vidioc_s_fmt, .vidioc_try_fmt_vid_out_mplane = imgu_vidioc_try_fmt, - .vidioc_enum_output = imgu_vidioc_enum_output, - .vidioc_g_output = imgu_vidioc_g_output, - .vidioc_s_output = imgu_vidioc_s_output, - - .vidioc_enum_input = imgu_vidioc_enum_input, - .vidioc_g_input = imgu_vidioc_g_input, - .vidioc_s_input = imgu_vidioc_s_input, - /* buffer queue management */ .vidioc_reqbufs = vb2_ioctl_reqbufs, .vidioc_create_bufs = vb2_ioctl_create_bufs, @@ -1094,7 +1044,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; } - vdev->device_caps = V4L2_CAP_STREAMING | cap; + vdev->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_IO_MC | cap; } static int imgu_v4l2_subdev_register(struct imgu_device *imgu, |