Hi Laurent, On Wed, Mar 20, 2024 at 02:33:16AM +0200, Laurent Pinchart wrote: > Hi Sakari, > > Thank you for the patch. > > On Wed, Mar 13, 2024 at 09:24:48AM +0200, Sakari Ailus wrote: > > Document S_ROUTING behaviour for different devices. > > > > Generally in devices that produce streams the streams are static and some > > can be enabled and disabled, whereas in devices that just transport them > > or write them to memory, more configurability is allowed. Document this. > > > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > > --- > > .../userspace-api/media/v4l/dev-subdev.rst | 24 +++++++++++++++++++ > > 1 file changed, 24 insertions(+) > > > > diff --git a/Documentation/userspace-api/media/v4l/dev-subdev.rst b/Documentation/userspace-api/media/v4l/dev-subdev.rst > > index 1808f40f63e3..08495cc6f4a6 100644 > > --- a/Documentation/userspace-api/media/v4l/dev-subdev.rst > > +++ b/Documentation/userspace-api/media/v4l/dev-subdev.rst > > @@ -593,6 +593,30 @@ Any configurations of a stream within a pad, such as format or selections, > > are independent of similar configurations on other streams. This is > > subject to change in the future. > > > > +Device types and routing setup > > +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > + > > +Different kinds of sub-devices have differing behaviour for route activation, > > +depending on the hardware. In all cases, however, only routes that have the > > +``V4L2_SUBDEV_STREAM_FL_ACTIVE`` flag set are active. > > + > > +Devices generating the streams may allow enabling and disabling some of the > > +routes or the configuration is fixed. If the routes can be disabled, not > > +declaring the routes (or declaring them without > > +``VIDIOC_SUBDEV_STREAM_FL_ACTIVE`` flag set) in ``VIDIOC_SUBDEV_S_ROUTING`` will > > +disable the routes while the sub-device driver retains the streams and their > > No idea what you mean by "retains the streams and their configuration". I'll add that this means format and selection configuration. > > > +configuration. The ``VIDIOC_SUBDEV_S_ROUTING`` will still return such routes > > +back to the user in the routes array, with the ``V4L2_SUBDEV_STREAM_FL_ACTIVE`` > > +flag unset. > > I find this quite confusing. There's no explanation as to why the API > behaves this way. I think you should rewrite this documentation, trying > to evaluate it from the point of view of someone who doesn't know about > the routing API. I wonder if this would be easier for the user if such routes had a flag that would tell they're always there. It could be called e.g. STATIC. Then the user would be able to expect certain behaviour before disabling a link. The purpose is really to avoid removing streams that the user would not know how to re-create in order to make the device function again. > > > + > > +Devices transporting the streams almost always have more configurability with > > +respect to routing. Typically any route between the sub-device's sink and source > > +pads is possible, and multiple routes (usually up to certain limited number) may > > +be active simultaneously. For such devices, no routes are created by the driver > > +and user-created routes are fully replaced when ``VIDIOC_SUBDEV_S_ROUTING`` is > > +called on the sub-device. Such newly created routes have the device's default > > +configuration for format and selection rectangles. > > + > > Configuring streams > > ^^^^^^^^^^^^^^^^^^^ > > > -- Regards, Sakari Ailus