Message ID | 20240424-enable-streams-impro-v6-0-5fb14c20147d@ideasonboard.com |
---|---|
Headers | show |
Series | media: subdev: Improve stream enable/disable machinery | expand |
Hi Tomi, On 24/04/24 9:09 pm, Tomi Valkeinen wrote: > Now that enable/disable_streams operations are available for > single-stream subdevices too, there's no reason to use the old s_stream > operation on new drivers. Extend the documentation reflecting this. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Umang Jain<umang.jain@ideasonboard.com> > --- > include/media/v4l2-subdev.h | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h > index 14a3c91cce93..99564a2ef71c 100644 > --- a/include/media/v4l2-subdev.h > +++ b/include/media/v4l2-subdev.h > @@ -450,6 +450,15 @@ enum v4l2_subdev_pre_streamon_flags { > * already started or stopped subdev. Also see call_s_stream wrapper in > * v4l2-subdev.c. > * > + * New drivers should instead implement &v4l2_subdev_pad_ops.enable_streams > + * and &v4l2_subdev_pad_ops.disable_streams operations, and use > + * v4l2_subdev_s_stream_helper for the &v4l2_subdev_video_ops.s_stream > + * operation to support legacy users. > + * > + * Drivers should also not call the .s_stream() subdev operation directly, > + * but use the v4l2_subdev_enable_streams() and > + * v4l2_subdev_disable_streams() helpers. > + * > * @g_pixelaspect: callback to return the pixelaspect ratio. > * > * @s_rx_buffer: set a host allocated memory buffer for the subdev. The subdev >
Hi Laurent, others, On Thu, Apr 25, 2024 at 02:08:54PM +0300, Laurent Pinchart wrote: > Hi Tomi, > > Thank you for the patch. > > On Wed, Apr 24, 2024 at 06:39:14PM +0300, Tomi Valkeinen wrote: > > Now that enable/disable_streams operations are available for > > single-stream subdevices too, there's no reason to use the old s_stream > > operation on new drivers. Extend the documentation reflecting this. > > > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> > > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks! If there are no further comments requiring changes, I'll send a PR on these with Umang's imx335 and my CCS driver patches tomorrow.
This series works on the .s_stream, .enable_streams, .disable_streams related code. The main feature introduced here, in the last two patchs, is adding support for .enable/disable_streams() for subdevs that do not implement full streams support. Additionally we add support for the privacy led when v4l2_subdev_enable/disable_streams() is used. I have tested this on RPi5. Tomi Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> --- Changes in v6: - v4l2_subdev_enable_streams() and v4l2_subdev_disable_streams() accidentally returned -EINVAL when a stream was already enabled/disabled. Change it back to -EALREADY. - Add TODO note about privacy leds to "media: subdev: Support single-stream case in v4l2_subdev_enable/disable_streams()" - New commit "media: subdev: Improve s_stream documentation" - Link to v5: https://lore.kernel.org/r/20240416-enable-streams-impro-v5-0-bd5fcea49388@ideasonboard.com Changes in v5: - Fix issues with non-routing case: - Always set 'found_streams' variable instead of leaving it uninitialized in "Support single-stream case in v4l2_subdev_enable/disable_streams()" - Fix the "implicit" stream from bit 1 to bit 0 in "Support non-routing subdevs in v4l2_subdev_s_stream_helper()" - Link to v4: https://lore.kernel.org/r/20240416-enable-streams-impro-v4-0-1d370c9c2b6d@ideasonboard.com Changes in v4: - Added Rb tags - Rename 'streaming_enabled' to 's_stream_enabled' - Cosmetic changes (comments / patch descs) - Added new patch "media: subdev: Support non-routing subdevs in v4l2_subdev_s_stream_helper()". - Link to v3: https://lore.kernel.org/r/20240410-enable-streams-impro-v3-0-e5e7a5da7420@ideasonboard.com Changes in v3: - Rebased on top of "[PATCH v2 1/1] media: v4l: Don't turn on privacy LED if streamon fails" - Drop extra "!!" in "media: subdev: Fix use of sd->enabled_streams in call_s_stream()" - Enable privacy LED after a succesfull stream enable in "media: subdev: Support privacy led in v4l2_subdev_enable/disable_streams()" - Init 'cfg' variable when declaring in "media: subdev: Refactor v4l2_subdev_enable/disable_streams()" - Link to v2: https://lore.kernel.org/r/20240405-enable-streams-impro-v2-0-22bca967665d@ideasonboard.com Changes in v2: - New patches for privacy led - Use v4l2_subdev_has_op() - Use BITS_PER_BYTE instead of 8 - Fix 80+ line issues - Fix typos - Check for pad < 64 also in the non-routing .enable/disable_streams code path - Dropped "media: subdev: Support enable/disable_streams for non-streams subdevs", which is implemented in a different way in new patches in this series - Link to v1: https://lore.kernel.org/r/20240404-enable-streams-impro-v1-0-1017a35bbe07@ideasonboard.com --- Tomi Valkeinen (11): media: subdev: Add privacy led helpers media: subdev: Use v4l2_subdev_has_op() in v4l2_subdev_enable/disable_streams() media: subdev: Add checks for subdev features media: subdev: Fix use of sd->enabled_streams in call_s_stream() media: subdev: Improve v4l2_subdev_enable/disable_streams_fallback media: subdev: Add v4l2_subdev_is_streaming() media: subdev: Support privacy led in v4l2_subdev_enable/disable_streams() media: subdev: Refactor v4l2_subdev_enable/disable_streams() media: subdev: Support single-stream case in v4l2_subdev_enable/disable_streams() media: subdev: Support non-routing subdevs in v4l2_subdev_s_stream_helper() media: subdev: Improve s_stream documentation drivers/media/v4l2-core/v4l2-subdev.c | 385 ++++++++++++++++++++-------------- include/media/v4l2-subdev.h | 34 ++- 2 files changed, 261 insertions(+), 158 deletions(-) --- base-commit: e42a204f0519a2540f1507ac2798be2aeaa76bee change-id: 20240404-enable-streams-impro-db8bcd898471 Best regards,