|
@@ -366,8 +366,8 @@ EXPORT_SYMBOL_GPL(media_entity_graph_walk_next);
|
|
|
* Pipeline management
|
|
|
*/
|
|
|
|
|
|
-__must_check int media_entity_pipeline_start(struct media_entity *entity,
|
|
|
- struct media_pipeline *pipe)
|
|
|
+__must_check int __media_entity_pipeline_start(struct media_entity *entity,
|
|
|
+ struct media_pipeline *pipe)
|
|
|
{
|
|
|
struct media_device *mdev = entity->graph_obj.mdev;
|
|
|
struct media_entity_graph *graph = &pipe->graph;
|
|
@@ -375,8 +375,6 @@ __must_check int media_entity_pipeline_start(struct media_entity *entity,
|
|
|
struct media_link *link;
|
|
|
int ret;
|
|
|
|
|
|
- mutex_lock(&mdev->graph_mutex);
|
|
|
-
|
|
|
if (!pipe->streaming_count++) {
|
|
|
ret = media_entity_graph_walk_init(&pipe->graph, mdev);
|
|
|
if (ret)
|
|
@@ -457,8 +455,6 @@ __must_check int media_entity_pipeline_start(struct media_entity *entity,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- mutex_unlock(&mdev->graph_mutex);
|
|
|
-
|
|
|
return 0;
|
|
|
|
|
|
error:
|
|
@@ -488,19 +484,28 @@ error_graph_walk_start:
|
|
|
if (!--pipe->streaming_count)
|
|
|
media_entity_graph_walk_cleanup(graph);
|
|
|
|
|
|
- mutex_unlock(&mdev->graph_mutex);
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(__media_entity_pipeline_start);
|
|
|
|
|
|
+__must_check int media_entity_pipeline_start(struct media_entity *entity,
|
|
|
+ struct media_pipeline *pipe)
|
|
|
+{
|
|
|
+ struct media_device *mdev = entity->graph_obj.mdev;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ mutex_lock(&mdev->graph_mutex);
|
|
|
+ ret = __media_entity_pipeline_start(entity, pipe);
|
|
|
+ mutex_unlock(&mdev->graph_mutex);
|
|
|
return ret;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(media_entity_pipeline_start);
|
|
|
|
|
|
-void media_entity_pipeline_stop(struct media_entity *entity)
|
|
|
+void __media_entity_pipeline_stop(struct media_entity *entity)
|
|
|
{
|
|
|
- struct media_device *mdev = entity->graph_obj.mdev;
|
|
|
struct media_entity_graph *graph = &entity->pipe->graph;
|
|
|
struct media_pipeline *pipe = entity->pipe;
|
|
|
|
|
|
- mutex_lock(&mdev->graph_mutex);
|
|
|
|
|
|
WARN_ON(!pipe->streaming_count);
|
|
|
media_entity_graph_walk_start(graph, entity);
|
|
@@ -517,6 +522,15 @@ void media_entity_pipeline_stop(struct media_entity *entity)
|
|
|
if (!--pipe->streaming_count)
|
|
|
media_entity_graph_walk_cleanup(graph);
|
|
|
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(__media_entity_pipeline_stop);
|
|
|
+
|
|
|
+void media_entity_pipeline_stop(struct media_entity *entity)
|
|
|
+{
|
|
|
+ struct media_device *mdev = entity->graph_obj.mdev;
|
|
|
+
|
|
|
+ mutex_lock(&mdev->graph_mutex);
|
|
|
+ __media_entity_pipeline_stop(entity);
|
|
|
mutex_unlock(&mdev->graph_mutex);
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(media_entity_pipeline_stop);
|