/* * iss_pipeline_pm_power - Apply power change to all entities in a pipeline * @entity: The entity * @change: Use count change * * Walk the pipeline to update the use count and the power state of all non-node * entities. * * Return 0 on success or a negative error code on failure. */ static int iss_pipeline_pm_power(struct media_entity *entity, int change, struct media_entity_graph *graph) { struct media_entity *first = entity; int ret = 0; if (!change) return 0; media_entity_graph_walk_start(graph, entity); while (!ret && (entity = media_entity_graph_walk_next(graph))) if (is_media_entity_v4l2_subdev(entity)) ret = iss_pipeline_pm_power_one(entity, change); if (!ret) return 0; media_entity_graph_walk_start(graph, first); while ((first = media_entity_graph_walk_next(graph)) && first != entity) if (is_media_entity_v4l2_subdev(first)) iss_pipeline_pm_power_one(first, -change); return ret; }
/* * iss_pipeline_pm_power - Apply power change to all entities in a pipeline * @entity: The entity * @change: Use count change * * Walk the pipeline to update the use count and the power state of all non-node * entities. * * Return 0 on success or a negative error code on failure. */ static int iss_pipeline_pm_power(struct media_entity *entity, int change) { struct media_entity_graph graph; struct media_entity *first = entity; int ret = 0; if (!change) return 0; media_entity_graph_walk_start(&graph, entity); while (!ret && (entity = media_entity_graph_walk_next(&graph))) if (media_entity_type(entity) != MEDIA_ENT_T_DEVNODE) ret = iss_pipeline_pm_power_one(entity, change); if (!ret) return 0; media_entity_graph_walk_start(&graph, first); while ((first = media_entity_graph_walk_next(&graph)) && first != entity) if (media_entity_type(first) != MEDIA_ENT_T_DEVNODE) iss_pipeline_pm_power_one(first, -change); return ret; }