diff mbox series

[v4,3/3] staging/intel-ipu3: Make use of V4L2_CAP_IO_MC

Message ID 20200306163935.805333-4-niklas.soderlund@ragnatech.se (mailing list archive)
State New, archived
Headers show
Series v4l2-dev/ioctl: Add V4L2_CAP_IO_MC | expand

Commit Message

Niklas Söderlund March 6, 2020, 4:39 p.m. UTC
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(-)

Comments

Sakari Ailus March 9, 2020, 1:53 p.m. UTC | #1
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;
>  	}
Laurent Pinchart March 11, 2020, 1:12 a.m. UTC | #2
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 mbox series

Patch

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;
 	}