mirror of https://github.com/torvalds/linux.git
media: subdev: Add for_each_active_route() macro
Add a for_each_active_route() macro to replace the repeated pattern of iterating on the active routes of a routing table. Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
17bb9bf819
commit
837f92f070
|
|
@ -190,6 +190,7 @@ ForEachMacros:
|
||||||
- 'for_each_active_dev_scope'
|
- 'for_each_active_dev_scope'
|
||||||
- 'for_each_active_drhd_unit'
|
- 'for_each_active_drhd_unit'
|
||||||
- 'for_each_active_iommu'
|
- 'for_each_active_iommu'
|
||||||
|
- 'for_each_active_route'
|
||||||
- 'for_each_aggr_pgid'
|
- 'for_each_aggr_pgid'
|
||||||
- 'for_each_available_child_of_node'
|
- 'for_each_available_child_of_node'
|
||||||
- 'for_each_bench'
|
- 'for_each_bench'
|
||||||
|
|
|
||||||
|
|
@ -1239,6 +1239,26 @@ int v4l2_subdev_set_routing(struct v4l2_subdev *sd,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(v4l2_subdev_set_routing);
|
EXPORT_SYMBOL_GPL(v4l2_subdev_set_routing);
|
||||||
|
|
||||||
|
struct v4l2_subdev_route *
|
||||||
|
__v4l2_subdev_next_active_route(const struct v4l2_subdev_krouting *routing,
|
||||||
|
struct v4l2_subdev_route *route)
|
||||||
|
{
|
||||||
|
if (route)
|
||||||
|
++route;
|
||||||
|
else
|
||||||
|
route = &routing->routes[0];
|
||||||
|
|
||||||
|
for (; route < routing->routes + routing->num_routes; ++route) {
|
||||||
|
if (!(route->flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
return route;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(__v4l2_subdev_next_active_route);
|
||||||
|
|
||||||
#endif /* CONFIG_VIDEO_V4L2_SUBDEV_API */
|
#endif /* CONFIG_VIDEO_V4L2_SUBDEV_API */
|
||||||
|
|
||||||
#endif /* CONFIG_MEDIA_CONTROLLER */
|
#endif /* CONFIG_MEDIA_CONTROLLER */
|
||||||
|
|
|
||||||
|
|
@ -1440,6 +1440,19 @@ int v4l2_subdev_set_routing(struct v4l2_subdev *sd,
|
||||||
struct v4l2_subdev_state *state,
|
struct v4l2_subdev_state *state,
|
||||||
const struct v4l2_subdev_krouting *routing);
|
const struct v4l2_subdev_krouting *routing);
|
||||||
|
|
||||||
|
struct v4l2_subdev_route *
|
||||||
|
__v4l2_subdev_next_active_route(const struct v4l2_subdev_krouting *routing,
|
||||||
|
struct v4l2_subdev_route *route);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* for_each_active_route - iterate on all active routes of a routing table
|
||||||
|
* @routing: The routing table
|
||||||
|
* @route: The route iterator
|
||||||
|
*/
|
||||||
|
#define for_each_active_route(routing, route) \
|
||||||
|
for ((route) = NULL; \
|
||||||
|
((route) = __v4l2_subdev_next_active_route((routing), (route)));)
|
||||||
|
|
||||||
#endif /* CONFIG_VIDEO_V4L2_SUBDEV_API */
|
#endif /* CONFIG_VIDEO_V4L2_SUBDEV_API */
|
||||||
|
|
||||||
#endif /* CONFIG_MEDIA_CONTROLLER */
|
#endif /* CONFIG_MEDIA_CONTROLLER */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue