[v16.1] media: subdev: Require code change to enable [GS]_ROUTING

Message ID 20230115124008.293634-1-tomi.valkeinen@ideasonboard.com
State New
Headers
Series [v16.1] media: subdev: Require code change to enable [GS]_ROUTING |

Commit Message

Tomi Valkeinen Jan. 15, 2023, 12:40 p.m. UTC
  Streams API is an experimental feature. To use Streams API, the user
needs to change a variable in v4l2-subdev.c and recompile the kernel.

This commit should be reverted when the Streams API is deemed ready for
production use.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---

Here's a minor update to the patch:
- Fix unused var warning
- Don't initialize the static var to 0

 drivers/media/v4l2-core/v4l2-subdev.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
  

Comments

Laurent Pinchart Jan. 15, 2023, 3:34 p.m. UTC | #1
Hi Tomi,

Thank you for the patch.

On Sun, Jan 15, 2023 at 02:40:08PM +0200, Tomi Valkeinen wrote:
> Streams API is an experimental feature. To use Streams API, the user

Nitpicking, I'd write "The Streams API" and "To use the Streams API".

I'm sure Sakari can handle this in the second version of the pull
request.

> needs to change a variable in v4l2-subdev.c and recompile the kernel.
> 
> This commit should be reverted when the Streams API is deemed ready for
> production use.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>

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

> ---
> 
> Here's a minor update to the patch:
> - Fix unused var warning
> - Don't initialize the static var to 0
> 
>  drivers/media/v4l2-core/v4l2-subdev.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
> index 61b429016a2f..a576b22164b0 100644
> --- a/drivers/media/v4l2-core/v4l2-subdev.c
> +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> @@ -23,6 +23,15 @@
>  #include <media/v4l2-fh.h>
>  #include <media/v4l2-ioctl.h>
>  
> +#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
> +/*
> + * Streams API is an experimental feature. To use Streams API, set
> + * 'v4l2_subdev_enable_streams_api' to 1 below.
> + */
> +
> +static bool v4l2_subdev_enable_streams_api;
> +#endif
> +
>  /*
>   * Maximum stream ID is 63 for now, as we use u64 bitmask to represent a set
>   * of streams.
> @@ -751,6 +760,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
>  		struct v4l2_subdev_routing *routing = arg;
>  		struct v4l2_subdev_krouting *krouting;
>  
> +		if (!v4l2_subdev_enable_streams_api)
> +			return -ENOIOCTLCMD;
> +
>  		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
>  			return -ENOIOCTLCMD;
>  
> @@ -778,6 +790,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
>  		struct v4l2_subdev_krouting krouting = {};
>  		unsigned int i;
>  
> +		if (!v4l2_subdev_enable_streams_api)
> +			return -ENOIOCTLCMD;
> +
>  		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
>  			return -ENOIOCTLCMD;
>
  
Laurent Pinchart Jan. 15, 2023, 3:34 p.m. UTC | #2
On Sun, Jan 15, 2023 at 05:34:23PM +0200, Laurent Pinchart wrote:
> Hi Tomi,
> 
> Thank you for the patch.
> 
> On Sun, Jan 15, 2023 at 02:40:08PM +0200, Tomi Valkeinen wrote:
> > Streams API is an experimental feature. To use Streams API, the user
> 
> Nitpicking, I'd write "The Streams API" and "To use the Streams API".
> 
> I'm sure Sakari can handle this in the second version of the pull
> request.
> 
> > needs to change a variable in v4l2-subdev.c and recompile the kernel.
> > 
> > This commit should be reverted when the Streams API is deemed ready for
> > production use.
> > 
> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> > ---
> > 
> > Here's a minor update to the patch:
> > - Fix unused var warning
> > - Don't initialize the static var to 0
> > 
> >  drivers/media/v4l2-core/v4l2-subdev.c | 15 +++++++++++++++
> >  1 file changed, 15 insertions(+)
> > 
> > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
> > index 61b429016a2f..a576b22164b0 100644
> > --- a/drivers/media/v4l2-core/v4l2-subdev.c
> > +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> > @@ -23,6 +23,15 @@
> >  #include <media/v4l2-fh.h>
> >  #include <media/v4l2-ioctl.h>
> >  
> > +#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
> > +/*
> > + * Streams API is an experimental feature. To use Streams API, set

Oh, and here too.

> > + * 'v4l2_subdev_enable_streams_api' to 1 below.
> > + */
> > +
> > +static bool v4l2_subdev_enable_streams_api;
> > +#endif
> > +
> >  /*
> >   * Maximum stream ID is 63 for now, as we use u64 bitmask to represent a set
> >   * of streams.
> > @@ -751,6 +760,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
> >  		struct v4l2_subdev_routing *routing = arg;
> >  		struct v4l2_subdev_krouting *krouting;
> >  
> > +		if (!v4l2_subdev_enable_streams_api)
> > +			return -ENOIOCTLCMD;
> > +
> >  		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
> >  			return -ENOIOCTLCMD;
> >  
> > @@ -778,6 +790,9 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
> >  		struct v4l2_subdev_krouting krouting = {};
> >  		unsigned int i;
> >  
> > +		if (!v4l2_subdev_enable_streams_api)
> > +			return -ENOIOCTLCMD;
> > +
> >  		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
> >  			return -ENOIOCTLCMD;
> >
  

Patch

diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
index 61b429016a2f..a576b22164b0 100644
--- a/drivers/media/v4l2-core/v4l2-subdev.c
+++ b/drivers/media/v4l2-core/v4l2-subdev.c
@@ -23,6 +23,15 @@ 
 #include <media/v4l2-fh.h>
 #include <media/v4l2-ioctl.h>
 
+#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
+/*
+ * Streams API is an experimental feature. To use Streams API, set
+ * 'v4l2_subdev_enable_streams_api' to 1 below.
+ */
+
+static bool v4l2_subdev_enable_streams_api;
+#endif
+
 /*
  * Maximum stream ID is 63 for now, as we use u64 bitmask to represent a set
  * of streams.
@@ -751,6 +760,9 @@  static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
 		struct v4l2_subdev_routing *routing = arg;
 		struct v4l2_subdev_krouting *krouting;
 
+		if (!v4l2_subdev_enable_streams_api)
+			return -ENOIOCTLCMD;
+
 		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
 			return -ENOIOCTLCMD;
 
@@ -778,6 +790,9 @@  static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
 		struct v4l2_subdev_krouting krouting = {};
 		unsigned int i;
 
+		if (!v4l2_subdev_enable_streams_api)
+			return -ENOIOCTLCMD;
+
 		if (!(sd->flags & V4L2_SUBDEV_FL_STREAMS))
 			return -ENOIOCTLCMD;