Message ID | 20200306163935.805333-4-niklas.soderlund@ragnatech.se (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Kieran Bingham |
Headers | show |
Series | v4l2-dev/ioctl: Add V4L2_CAP_IO_MC | expand |
Hi Niklas, On Fri, Mar 06, 2020 at 05:39:35PM +0100, Niklas Söderlund wrote: > From: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > > 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> > --- > drivers/staging/media/ipu3/ipu3-v4l2.c | 60 +------------------------- > 1 file changed, 2 insertions(+), 58 deletions(-) > > diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c > index 09c8ede1457cad96..2c42be3d995621e3 100644 > --- a/drivers/staging/media/ipu3/ipu3-v4l2.c > +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c > @@ -845,54 +845,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 = { > @@ -965,14 +917,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, > @@ -1062,7 +1006,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, > > switch (node) { > case IMGU_NODE_IN: > - cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE; > + cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE | V4L2_CAP_IO_MC; > f->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; > vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; > break; > @@ -1081,7 +1025,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, > imgu_css_meta_fmt_set(&f->fmt.meta); > break; > default: > - cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE; > + cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_IO_MC; So here, you'd add V4L2_CAP_IO_MC to all kinds of nodes. With that, Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> > f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; > vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; > }
Hello, On Mon, Mar 09, 2020 at 03:53:18PM +0200, Sakari Ailus wrote: > On Fri, Mar 06, 2020 at 05:39:35PM +0100, Niklas Söderlund wrote: > > From: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > > > > 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> > > --- > > drivers/staging/media/ipu3/ipu3-v4l2.c | 60 +------------------------- > > 1 file changed, 2 insertions(+), 58 deletions(-) > > > > diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c > > index 09c8ede1457cad96..2c42be3d995621e3 100644 > > --- a/drivers/staging/media/ipu3/ipu3-v4l2.c > > +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c > > @@ -845,54 +845,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 = { > > @@ -965,14 +917,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, > > @@ -1062,7 +1006,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, > > > > switch (node) { > > case IMGU_NODE_IN: > > - cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE; > > + cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE | V4L2_CAP_IO_MC; > > f->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; > > vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; > > break; > > @@ -1081,7 +1025,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, > > imgu_css_meta_fmt_set(&f->fmt.meta); > > break; > > default: > > - cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE; > > + cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_IO_MC; > > So here, you'd add V4L2_CAP_IO_MC to all kinds of nodes. > > With that, > > Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> I like that better too. With that change, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; > > vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; > > }
diff --git a/drivers/staging/media/ipu3/ipu3-v4l2.c b/drivers/staging/media/ipu3/ipu3-v4l2.c index 09c8ede1457cad96..2c42be3d995621e3 100644 --- a/drivers/staging/media/ipu3/ipu3-v4l2.c +++ b/drivers/staging/media/ipu3/ipu3-v4l2.c @@ -845,54 +845,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 = { @@ -965,14 +917,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, @@ -1062,7 +1006,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, switch (node) { case IMGU_NODE_IN: - cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE; + cap = V4L2_CAP_VIDEO_OUTPUT_MPLANE | V4L2_CAP_IO_MC; f->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; break; @@ -1081,7 +1025,7 @@ static void imgu_node_to_v4l2(u32 node, struct video_device *vdev, imgu_css_meta_fmt_set(&f->fmt.meta); break; default: - cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE; + cap = V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_IO_MC; f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; vdev->ioctl_ops = &imgu_v4l2_ioctl_ops; }