mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	media: Documentation: Add GS_ROUTING documentation
Add documentation for VIDIOC_SUBDEV_G/S_ROUTING ioctl and add description of multiplexed media pads and internal routing to the V4L2-subdev documentation section. Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
		
							parent
							
								
									9a6b5bf4c1
								
							
						
					
					
						commit
						ea73eda508
					
				
					 3 changed files with 150 additions and 0 deletions
				
			
		| 
						 | 
					@ -29,6 +29,8 @@ will feature a character device node on which ioctls can be called to
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-  negotiate image formats on individual pads
 | 
					-  negotiate image formats on individual pads
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					-  inspect and modify internal data routing between pads of the same entity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Sub-device character device nodes, conventionally named
 | 
					Sub-device character device nodes, conventionally named
 | 
				
			||||||
``/dev/v4l-subdev*``, use major number 81.
 | 
					``/dev/v4l-subdev*``, use major number 81.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,6 +70,7 @@ Function Reference
 | 
				
			||||||
    vidioc-subdev-g-crop
 | 
					    vidioc-subdev-g-crop
 | 
				
			||||||
    vidioc-subdev-g-fmt
 | 
					    vidioc-subdev-g-fmt
 | 
				
			||||||
    vidioc-subdev-g-frame-interval
 | 
					    vidioc-subdev-g-frame-interval
 | 
				
			||||||
 | 
					    vidioc-subdev-g-routing
 | 
				
			||||||
    vidioc-subdev-g-selection
 | 
					    vidioc-subdev-g-selection
 | 
				
			||||||
    vidioc-subdev-querycap
 | 
					    vidioc-subdev-querycap
 | 
				
			||||||
    vidioc-subscribe-event
 | 
					    vidioc-subscribe-event
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,147 @@
 | 
				
			||||||
 | 
					.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
 | 
				
			||||||
 | 
					.. c:namespace:: V4L
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. _VIDIOC_SUBDEV_G_ROUTING:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					******************************************************
 | 
				
			||||||
 | 
					ioctl VIDIOC_SUBDEV_G_ROUTING, VIDIOC_SUBDEV_S_ROUTING
 | 
				
			||||||
 | 
					******************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Name
 | 
				
			||||||
 | 
					====
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					VIDIOC_SUBDEV_G_ROUTING - VIDIOC_SUBDEV_S_ROUTING - Get or set routing between streams of media pads in a media entity.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Synopsis
 | 
				
			||||||
 | 
					========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. c:macro:: VIDIOC_SUBDEV_G_ROUTING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``int ioctl(int fd, VIDIOC_SUBDEV_G_ROUTING, struct v4l2_subdev_routing *argp)``
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. c:macro:: VIDIOC_SUBDEV_S_ROUTING
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``int ioctl(int fd, VIDIOC_SUBDEV_S_ROUTING, struct v4l2_subdev_routing *argp)``
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Arguments
 | 
				
			||||||
 | 
					=========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``fd``
 | 
				
			||||||
 | 
					    File descriptor returned by :ref:`open() <func-open>`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					``argp``
 | 
				
			||||||
 | 
					    Pointer to struct :c:type:`v4l2_subdev_routing`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Description
 | 
				
			||||||
 | 
					===========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These ioctls are used to get and set the routing in a media entity.
 | 
				
			||||||
 | 
					The routing configuration determines the flows of data inside an entity.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Drivers report their current routing tables using the
 | 
				
			||||||
 | 
					``VIDIOC_SUBDEV_G_ROUTING`` ioctl and application may enable or disable routes
 | 
				
			||||||
 | 
					with the ``VIDIOC_SUBDEV_S_ROUTING`` ioctl, by adding or removing routes and
 | 
				
			||||||
 | 
					setting or clearing flags of the  ``flags`` field of a
 | 
				
			||||||
 | 
					struct :c:type:`v4l2_subdev_route`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All stream configurations are reset when ``VIDIOC_SUBDEV_S_ROUTING`` is called. This
 | 
				
			||||||
 | 
					means that the userspace must reconfigure all streams after calling the ioctl
 | 
				
			||||||
 | 
					with e.g. ``VIDIOC_SUBDEV_S_FMT``.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Only subdevices which have both sink and source pads can support routing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					When inspecting routes through ``VIDIOC_SUBDEV_G_ROUTING`` and the application
 | 
				
			||||||
 | 
					provided ``num_routes`` is not big enough to contain all the available routes
 | 
				
			||||||
 | 
					the subdevice exposes, drivers return the ENOSPC error code and adjust the
 | 
				
			||||||
 | 
					value of the ``num_routes`` field. Application should then reserve enough memory
 | 
				
			||||||
 | 
					for all the route entries and call ``VIDIOC_SUBDEV_G_ROUTING`` again.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. c:type:: v4l2_subdev_routing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. flat-table:: struct v4l2_subdev_routing
 | 
				
			||||||
 | 
					    :header-rows:  0
 | 
				
			||||||
 | 
					    :stub-columns: 0
 | 
				
			||||||
 | 
					    :widths:       1 1 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``which``
 | 
				
			||||||
 | 
					      - Format to modified, from enum
 | 
				
			||||||
 | 
					        :ref:`v4l2_subdev_format_whence <v4l2-subdev-format-whence>`.
 | 
				
			||||||
 | 
					    * - struct :c:type:`v4l2_subdev_route`
 | 
				
			||||||
 | 
					      - ``routes[]``
 | 
				
			||||||
 | 
					      - Array of struct :c:type:`v4l2_subdev_route` entries
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``num_routes``
 | 
				
			||||||
 | 
					      - Number of entries of the routes array
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``reserved``\ [5]
 | 
				
			||||||
 | 
					      - Reserved for future extensions. Applications and drivers must set
 | 
				
			||||||
 | 
						the array to zero.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. c:type:: v4l2_subdev_route
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. flat-table:: struct v4l2_subdev_route
 | 
				
			||||||
 | 
					    :header-rows:  0
 | 
				
			||||||
 | 
					    :stub-columns: 0
 | 
				
			||||||
 | 
					    :widths:       1 1 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``sink_pad``
 | 
				
			||||||
 | 
					      - Sink pad number.
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``sink_stream``
 | 
				
			||||||
 | 
					      - Sink pad stream number.
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``source_pad``
 | 
				
			||||||
 | 
					      - Source pad number.
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``source_stream``
 | 
				
			||||||
 | 
					      - Source pad stream number.
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``flags``
 | 
				
			||||||
 | 
					      - Route enable/disable flags
 | 
				
			||||||
 | 
						:ref:`v4l2_subdev_routing_flags <v4l2-subdev-routing-flags>`.
 | 
				
			||||||
 | 
					    * - __u32
 | 
				
			||||||
 | 
					      - ``reserved``\ [5]
 | 
				
			||||||
 | 
					      - Reserved for future extensions. Applications and drivers must set
 | 
				
			||||||
 | 
						the array to zero.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. _v4l2-subdev-routing-flags:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. flat-table:: enum v4l2_subdev_routing_flags
 | 
				
			||||||
 | 
					    :header-rows:  0
 | 
				
			||||||
 | 
					    :stub-columns: 0
 | 
				
			||||||
 | 
					    :widths:       3 1 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    * - V4L2_SUBDEV_ROUTE_FL_ACTIVE
 | 
				
			||||||
 | 
					      - 0
 | 
				
			||||||
 | 
					      - The route is enabled. Set by applications.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return Value
 | 
				
			||||||
 | 
					============
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					On success 0 is returned, on error -1 and the ``errno`` variable is set
 | 
				
			||||||
 | 
					appropriately. The generic error codes are described at the
 | 
				
			||||||
 | 
					:ref:`Generic Error Codes <gen-errors>` chapter.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ENOSPC
 | 
				
			||||||
 | 
					   The application provided ``num_routes`` is not big enough to contain
 | 
				
			||||||
 | 
					   all the available routes the subdevice exposes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EINVAL
 | 
				
			||||||
 | 
					   The sink or source pad identifiers reference a non-existing pad, or reference
 | 
				
			||||||
 | 
					   pads of different types (ie. the sink_pad identifiers refers to a source pad)
 | 
				
			||||||
 | 
					   or the sink or source stream identifiers reference a non-existing stream on
 | 
				
			||||||
 | 
					   the sink or source pad.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					E2BIG
 | 
				
			||||||
 | 
					   The application provided ``num_routes`` for ``VIDIOC_SUBDEV_S_ROUTING`` is
 | 
				
			||||||
 | 
					   larger than the number of routes the driver can handle.
 | 
				
			||||||
		Loading…
	
		Reference in a new issue