@@ -167,7 +167,7 @@ Drivers initiate a graph traversal by calling
:c:func:`media_graph_walk_start()`
The graph structure, provided by the caller, is initialized to start graph
-traversal at the given entity.
+traversal at the given pad in an entity.
Drivers can then retrieve the next entity by calling
:c:func:`media_graph_walk_next()`
@@ -300,17 +300,16 @@ void media_graph_walk_cleanup(struct media_graph *graph)
}
EXPORT_SYMBOL_GPL(media_graph_walk_cleanup);
-void media_graph_walk_start(struct media_graph *graph,
- struct media_entity *entity)
+void media_graph_walk_start(struct media_graph *graph, struct media_pad *pad)
{
media_entity_enum_zero(&graph->ent_enum);
- media_entity_enum_set(&graph->ent_enum, entity);
+ media_entity_enum_set(&graph->ent_enum, pad->entity);
graph->top = 0;
graph->stack[graph->top].entity = NULL;
- stack_push(graph, entity);
- dev_dbg(entity->graph_obj.mdev->dev,
- "begin graph walk at '%s'\n", entity->name);
+ stack_push(graph, pad->entity);
+ dev_dbg(pad->graph_obj.mdev->dev,
+ "begin graph walk at '%s':%u\n", pad->entity->name, pad->index);
}
EXPORT_SYMBOL_GPL(media_graph_walk_start);
@@ -428,7 +427,7 @@ __must_check int __media_pipeline_start(struct media_entity *entity,
goto error_graph_walk_start;
}
- media_graph_walk_start(&pipe->graph, entity);
+ media_graph_walk_start(&pipe->graph, entity->pads);
while ((entity = media_graph_walk_next(graph))) {
DECLARE_BITMAP(active, MEDIA_ENTITY_MAX_PADS);
@@ -509,7 +508,7 @@ __must_check int __media_pipeline_start(struct media_entity *entity,
* Link validation on graph failed. We revert what we did and
* return the error.
*/
- media_graph_walk_start(graph, entity_err);
+ media_graph_walk_start(graph, entity_err->pads);
while ((entity_err = media_graph_walk_next(graph))) {
/* Sanity check for negative stream_count */
@@ -560,7 +559,7 @@ void __media_pipeline_stop(struct media_entity *entity)
if (WARN_ON(!pipe))
return;
- media_graph_walk_start(graph, entity);
+ media_graph_walk_start(graph, entity->pads);
while ((entity = media_graph_walk_next(graph))) {
/* Sanity check for negative stream_count */
@@ -1144,7 +1144,7 @@ static int __fimc_md_modify_pipelines(struct media_entity *entity, bool enable,
* through active links. This is needed as we cannot power on/off the
* subdevs in random order.
*/
- media_graph_walk_start(graph, entity);
+ media_graph_walk_start(graph, entity->pads);
while ((entity = media_graph_walk_next(graph))) {
if (!is_media_entity_v4l2_video_device(entity))
@@ -1159,7 +1159,7 @@ static int __fimc_md_modify_pipelines(struct media_entity *entity, bool enable,
return 0;
err:
- media_graph_walk_start(graph, entity_err);
+ media_graph_walk_start(graph, entity_err->pads);
while ((entity_err = media_graph_walk_next(graph))) {
if (!is_media_entity_v4l2_video_device(entity_err))
@@ -238,7 +238,7 @@ static int isp_video_get_graph_data(struct isp_video *video,
return ret;
}
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph))) {
struct isp_video *__video;
@@ -580,7 +580,7 @@ static int vsp1_video_pipeline_build(struct vsp1_pipeline *pipe,
if (ret)
return ret;
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph))) {
struct v4l2_subdev *subdev;
@@ -190,7 +190,7 @@ static int xvip_pipeline_validate(struct xvip_pipeline *pipe,
return ret;
}
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph))) {
struct xvip_dma *dma;
@@ -341,7 +341,7 @@ static int pipeline_pm_use_count(struct media_entity *entity,
{
int use = 0;
- media_graph_walk_start(graph, entity);
+ media_graph_walk_start(graph, entity->pads);
while ((entity = media_graph_walk_next(graph))) {
if (is_media_entity_v4l2_video_device(entity))
@@ -404,7 +404,7 @@ static int pipeline_pm_power(struct media_entity *entity, int change,
if (!change)
return 0;
- media_graph_walk_start(graph, entity);
+ media_graph_walk_start(graph, entity->pads);
while (!ret && (entity = media_graph_walk_next(graph)))
if (is_media_entity_v4l2_subdev(entity))
@@ -413,7 +413,7 @@ static int pipeline_pm_power(struct media_entity *entity, int change,
if (!ret)
return ret;
- media_graph_walk_start(graph, first);
+ media_graph_walk_start(graph, first->pads);
while ((first = media_graph_walk_next(graph))
&& first != entity)
@@ -147,7 +147,7 @@ static int vpfe_prepare_pipeline(struct vpfe_video_device *video)
mutex_unlock(&mdev->graph_mutex);
return -ENOMEM;
}
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph))) {
if (entity == &video->video_dev.entity)
continue;
@@ -300,7 +300,7 @@ static int vpfe_pipeline_enable(struct vpfe_pipeline *pipe)
ret = media_graph_walk_init(&pipe->graph, mdev);
if (ret)
goto out;
- media_graph_walk_start(&pipe->graph, entity);
+ media_graph_walk_start(&pipe->graph, entity->pads);
while ((entity = media_graph_walk_next(&pipe->graph))) {
if (!is_media_entity_v4l2_subdev(entity))
@@ -342,7 +342,7 @@ static int vpfe_pipeline_disable(struct vpfe_pipeline *pipe)
mdev = entity->graph_obj.mdev;
mutex_lock(&mdev->graph_mutex);
- media_graph_walk_start(&pipe->graph, entity);
+ media_graph_walk_start(&pipe->graph, entity->pads);
while ((entity = media_graph_walk_next(&pipe->graph))) {
@@ -217,7 +217,7 @@ iss_video_far_end(struct iss_video *video)
return NULL;
}
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph))) {
if (entity == &video->video.entity)
@@ -898,7 +898,7 @@ iss_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type)
if (ret < 0)
goto err_media_pipeline_start;
- media_graph_walk_start(&graph, entity);
+ media_graph_walk_start(&graph, entity->pads);
while ((entity = media_graph_walk_next(&graph)))
media_entity_enum_set(&pipe->ent_enum, entity);
@@ -928,22 +928,20 @@ void media_graph_walk_cleanup(struct media_graph *graph);
void media_entity_put(struct media_entity *entity);
/**
- * media_graph_walk_start - Start walking the media graph at a
- * given entity
+ * media_graph_walk_start - Start walking the media graph at a given pad
*
* @graph: Media graph structure that will be used to walk the graph
- * @entity: Starting entity
+ * @pad: Starting pad
*
* Before using this function, media_graph_walk_init() must be
* used to allocate resources used for walking the graph. This
* function initializes the graph traversal structure to walk the
- * entities graph starting at the given entity. The traversal
+ * entities graph starting at the given pad. The traversal
* structure must not be modified by the caller during graph
* traversal. After the graph walk, the resources must be released
* using media_graph_walk_cleanup().
*/
-void media_graph_walk_start(struct media_graph *graph,
- struct media_entity *entity);
+void media_graph_walk_start(struct media_graph *graph, struct media_pad *pad);
/**
* media_graph_walk_next - Get the next entity in the graph