mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v16 00/20] v4l: routing and streams support
@ 2022-12-15 12:16 Tomi Valkeinen
  2022-12-15 12:16 ` [PATCH v16 01/20] media: v4l2-subdev: Sort includes Tomi Valkeinen
                   ` (19 more replies)
  0 siblings, 20 replies; 26+ messages in thread
From: Tomi Valkeinen @ 2022-12-15 12:16 UTC (permalink / raw)
  To: linux-media, linux-kernel, sakari.ailus, Jacopo Mondi,
	Laurent Pinchart, niklas.soderlund+renesas,
	Mauro Carvalho Chehab, Hans Verkuil, satish.nagireddy,
	Tomasz Figa
  Cc: Tomi Valkeinen

Hi,

This is v16 of the streams series. The v15 can be found from:

https://lore.kernel.org/all/20221003121852.616745-1-tomi.valkeinen@ideasonboard.com/

My work branch with additional drivers can be found from:

git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git streams/work-v16

And there's also the v4l-utils series v2 to add support to v4l2-ctl and
media-ctl:

https://lore.kernel.org/all/20220714132116.132498-1-tomi.valkeinen@ideasonboard.com/

(Note: the v4l-utils above has not been changed to accommodate the drop
of V4L2_SUBDEV_ROUTE_FL_SOURCE yet)

Changes in v16:
- v4l2_subdev_link_validate_get_format: Drop use of for_each_set_bit(),
  as the sink_streams_mask is not unsigned long.
- v4l2_subdev_set_routing: Cast parameters given to check_mul_overflow()
  to size_t to avoid compiler warnings.
- Drop V4L2_SUBDEV_ROUTE_FL_SOURCE
- Require a code change and kernel compilation to enable Streams API.

A bit more details for the last two changes:

V4L2_SUBDEV_ROUTE_FL_SOURCE felt somewhat hacky, and the whole question
of how sensors' streams in various cases should be handled was unclear.
Thus it was decided (me, Laurent, Sakari) that we should only support
the current single-stream sensors and work on multi-streams sensors on
top of this series. This should not hinder any use case that was
supportable in the v15, as most likely the second stream from a sensor
would be an embedded data stream, and embedded data is not (really)
supported upstream.

The routing and stream support has been worked on for years by multiple
persons, and has proven to be very complicated feature, or a set of
features. While this series has been used on multiple different
platforms for various use cases, we would still like to be on the safe
side, especially regarding the userspace APIs. Thus, we decided that it
would be good to get this series merged while still making it clear that
the uAPI is not quite stable yet, and to achieve that, there's a static
variable in v4l2-subdev.c that the user needs to set to enable the API.

 Tomi

Jacopo Mondi (2):
  media: Documentation: Add GS_ROUTING documentation
  media: subdev: Add for_each_active_route() macro

Laurent Pinchart (5):
  media: subdev: Add [GS]_ROUTING subdev ioctls and operations
  media: subdev: add v4l2_subdev_routing_validate() helper
  media: v4l2-subdev: Add v4l2_subdev_state_xlate_streams() helper
  media: v4l2-subdev: Add subdev .(enable|disable)_streams() operations
  media: v4l2-subdev: Add v4l2_subdev_s_stream_helper() function

Sakari Ailus (1):
  media: Add stream to frame descriptor

Tomi Valkeinen (12):
  media: v4l2-subdev: Sort includes
  media: add V4L2_SUBDEV_FL_STREAMS
  media: add V4L2_SUBDEV_CAP_STREAMS
  media: subdev: Require code change to enable [GS]_ROUTING
  media: subdev: add v4l2_subdev_has_pad_interdep()
  media: subdev: add v4l2_subdev_set_routing helper()
  media: Documentation: add multiplexed streams documentation
  media: subdev: add stream based configuration
  media: subdev: use streams in v4l2_subdev_link_validate()
  media: subdev: add "opposite" stream helper funcs
  media: subdev: add streams to v4l2_subdev_get_fmt() helper function
  media: subdev: add v4l2_subdev_set_routing_with_fmt() helper

 .clang-format                                 |    1 +
 .../driver-api/media/v4l2-subdev.rst          |    8 +
 .../userspace-api/media/v4l/dev-subdev.rst    |  140 +++
 .../userspace-api/media/v4l/user-func.rst     |    1 +
 .../v4l/vidioc-subdev-enum-frame-interval.rst |    5 +-
 .../v4l/vidioc-subdev-enum-frame-size.rst     |    5 +-
 .../v4l/vidioc-subdev-enum-mbus-code.rst      |    5 +-
 .../media/v4l/vidioc-subdev-g-crop.rst        |    5 +-
 .../media/v4l/vidioc-subdev-g-fmt.rst         |    5 +-
 .../v4l/vidioc-subdev-g-frame-interval.rst    |    5 +-
 .../media/v4l/vidioc-subdev-g-routing.rst     |  147 +++
 .../media/v4l/vidioc-subdev-g-selection.rst   |    5 +-
 drivers/media/v4l2-core/v4l2-ioctl.c          |   25 +-
 drivers/media/v4l2-core/v4l2-subdev.c         | 1000 ++++++++++++++++-
 include/media/v4l2-subdev.h                   |  377 +++++++
 include/uapi/linux/v4l2-subdev.h              |   74 +-
 16 files changed, 1758 insertions(+), 50 deletions(-)
 create mode 100644 Documentation/userspace-api/media/v4l/vidioc-subdev-g-routing.rst

-- 
2.34.1


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2023-01-15 15:35 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-15 12:16 [PATCH v16 00/20] v4l: routing and streams support Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 01/20] media: v4l2-subdev: Sort includes Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 02/20] media: add V4L2_SUBDEV_FL_STREAMS Tomi Valkeinen
2023-01-09 11:56   ` Laurent Pinchart
2022-12-15 12:16 ` [PATCH v16 03/20] media: add V4L2_SUBDEV_CAP_STREAMS Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 04/20] media: Documentation: Add GS_ROUTING documentation Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 05/20] media: subdev: Add [GS]_ROUTING subdev ioctls and operations Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 06/20] media: subdev: Require code change to enable [GS]_ROUTING Tomi Valkeinen
2023-01-12 13:35   ` Sakari Ailus
2023-01-15 12:40   ` [PATCH v16.1] " Tomi Valkeinen
2023-01-15 15:34     ` Laurent Pinchart
2023-01-15 15:34       ` Laurent Pinchart
2022-12-15 12:16 ` [PATCH v16 07/20] media: subdev: add v4l2_subdev_has_pad_interdep() Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 08/20] media: subdev: add v4l2_subdev_set_routing helper() Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 09/20] media: subdev: Add for_each_active_route() macro Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 10/20] media: Documentation: add multiplexed streams documentation Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 11/20] media: subdev: add stream based configuration Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 12/20] media: subdev: use streams in v4l2_subdev_link_validate() Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 13/20] media: subdev: add "opposite" stream helper funcs Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 14/20] media: subdev: add streams to v4l2_subdev_get_fmt() helper function Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 15/20] media: subdev: add v4l2_subdev_set_routing_with_fmt() helper Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 16/20] media: subdev: add v4l2_subdev_routing_validate() helper Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 17/20] media: v4l2-subdev: Add v4l2_subdev_state_xlate_streams() helper Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 18/20] media: v4l2-subdev: Add subdev .(enable|disable)_streams() operations Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 19/20] media: v4l2-subdev: Add v4l2_subdev_s_stream_helper() function Tomi Valkeinen
2022-12-15 12:16 ` [PATCH v16 20/20] media: Add stream to frame descriptor Tomi Valkeinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®