Hi Sakari, Thank you for the patch. On Wed, Mar 13, 2024 at 09:25:09AM +0200, Sakari Ailus wrote: > Remove v4l2_subdev_enable_streams_api variable that was used to easily > enable streams API for development, and conditions that use the variable. > > This patch enables the streams API for V4L2 sub-device interface which > allows transporting multiple streams on a single MC link. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> The patch itself looks good, but I'll only send my Rb when I'll be confident the API is stable :-) > --- > drivers/media/v4l2-core/v4l2-subdev.c | 30 --------------------------- > 1 file changed, 30 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c > index c8c435df92c8..b3a697df4b66 100644 > --- a/drivers/media/v4l2-core/v4l2-subdev.c > +++ b/drivers/media/v4l2-core/v4l2-subdev.c > @@ -26,15 +26,6 @@ > #include <media/v4l2-fh.h> > #include <media/v4l2-ioctl.h> > > -#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API) > -/* > - * The Streams API is an experimental feature. To use the 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. > @@ -570,13 +561,6 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg, > V4L2_SUBDEV_CLIENT_CAP_STREAMS; > int rval; > > - /* > - * If the streams API is not enabled, remove V4L2_SUBDEV_CAP_STREAMS. > - * Remove this when the API is no longer experimental. > - */ > - if (!v4l2_subdev_enable_streams_api) > - streams_subdev = false; > - > switch (cmd) { > case VIDIOC_SUBDEV_QUERYCAP: { > struct v4l2_subdev_capability *cap = arg; > @@ -916,9 +900,6 @@ 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; > > @@ -989,9 +970,6 @@ 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; > > @@ -1019,14 +997,6 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg, > case VIDIOC_SUBDEV_S_CLIENT_CAP: { > struct v4l2_subdev_client_capability *client_cap = arg; > > - /* > - * Clear V4L2_SUBDEV_CLIENT_CAP_STREAMS if streams API is not > - * enabled. Remove this when streams API is no longer > - * experimental. > - */ > - if (!v4l2_subdev_enable_streams_api) > - client_cap->capabilities &= ~V4L2_SUBDEV_CLIENT_CAP_STREAMS; > - > /* Filter out unsupported capabilities */ > client_cap->capabilities &= (V4L2_SUBDEV_CLIENT_CAP_STREAMS | > V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH); -- Regards, Laurent Pinchart