media: v4l: subdev: Return routes set using S_ROUTING
Return the routes set using S_ROUTING back to the user. Also reflect this in documentation. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
83a22a07cd
commit
91e99e5a0b
|
@ -44,7 +44,8 @@ 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`.
|
||||
:c:type:`v4l2_subdev_route`. Similarly to ``VIDIOC_SUBDEV_G_ROUTING``, also
|
||||
``VIDIOC_SUBDEV_S_ROUTING`` returns the routes back to the user.
|
||||
|
||||
All stream configurations are reset when ``VIDIOC_SUBDEV_S_ROUTING`` is called.
|
||||
This means that the userspace must reconfigure all stream formats and selections
|
||||
|
@ -153,10 +154,6 @@ 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
|
||||
|
|
|
@ -1017,8 +1017,18 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg,
|
|||
krouting.len_routes = routing->len_routes;
|
||||
krouting.routes = routes;
|
||||
|
||||
return v4l2_subdev_call(sd, pad, set_routing, state,
|
||||
rval = v4l2_subdev_call(sd, pad, set_routing, state,
|
||||
routing->which, &krouting);
|
||||
if (rval < 0)
|
||||
return rval;
|
||||
|
||||
memcpy((struct v4l2_subdev_route *)(uintptr_t)routing->routes,
|
||||
state->routing.routes,
|
||||
min(state->routing.num_routes, routing->len_routes) *
|
||||
sizeof(*state->routing.routes));
|
||||
routing->num_routes = state->routing.num_routes;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
case VIDIOC_SUBDEV_G_CLIENT_CAP: {
|
||||
|
|
Loading…
Reference in New Issue