@@ -332,17 +332,16 @@ EXPORT_SYMBOL_GPL(v4l_vb2q_enable_media_source);
/*
* pipeline_pm_use_count - Count the number of users of a pipeline
- * @entity: The entity
+ * @pad: Any pad along the pipeline
*
* Return the total number of users of all video device nodes in the pipeline.
*/
-static int pipeline_pm_use_count(struct media_entity *entity,
- struct media_graph *graph)
+static int pipeline_pm_use_count(struct media_pad *pad,
+ struct media_graph *graph)
{
- struct media_pad *pad;
int use = 0;
- media_graph_walk_start(graph, entity->pads);
+ media_graph_walk_start(graph, pad);
while ((pad = media_graph_walk_next(graph))) {
if (is_media_entity_v4l2_video_device(pad->entity))
@@ -388,7 +387,7 @@ static int pipeline_pm_power_one(struct media_entity *entity, int change)
/*
* pipeline_pm_power - Apply power change to all entities in a pipeline
- * @entity: The entity
+ * @pad: Any pad along the pipeline
* @change: Use count change
*
* Walk the pipeline to update the use count and the power state of all non-node
@@ -396,16 +395,16 @@ static int pipeline_pm_power_one(struct media_entity *entity, int change)
*
* Return 0 on success or a negative error code on failure.
*/
-static int pipeline_pm_power(struct media_entity *entity, int change,
- struct media_graph *graph)
+static int pipeline_pm_power(struct media_pad *pad, int change,
+ struct media_graph *graph)
{
- struct media_pad *tmp_pad, *pad;
+ struct media_pad *tmp_pad, *first = pad;
int ret = 0;
if (!change)
return 0;
- media_graph_walk_start(graph, entity->pads);
+ media_graph_walk_start(graph, pad);
while (!ret && (pad = media_graph_walk_next(graph)))
if (is_media_entity_v4l2_subdev(pad->entity))
@@ -414,7 +413,7 @@ static int pipeline_pm_power(struct media_entity *entity, int change,
if (!ret)
return ret;
- media_graph_walk_start(graph, entity->pads);
+ media_graph_walk_start(graph, first);
while ((tmp_pad = media_graph_walk_next(graph)) && tmp_pad != pad)
if (is_media_entity_v4l2_subdev(tmp_pad->entity))
@@ -436,7 +435,7 @@ int v4l2_pipeline_pm_use(struct media_entity *entity, int use)
WARN_ON(entity->use_count < 0);
/* Apply power change to connected non-nodes. */
- ret = pipeline_pm_power(entity, change, &mdev->pm_count_walk);
+ ret = pipeline_pm_power(entity->pads, change, &mdev->pm_count_walk);
if (ret < 0)
entity->use_count -= change;
@@ -450,8 +449,8 @@ int v4l2_pipeline_link_notify(struct media_link *link, u32 flags,
unsigned int notification)
{
struct media_graph *graph = &link->graph_obj.mdev->pm_count_walk;
- struct media_entity *source = link->source->entity;
- struct media_entity *sink = link->sink->entity;
+ struct media_pad *source = link->source;
+ struct media_pad *sink = link->sink;
int source_use;
int sink_use;
int ret = 0;