Do not require a connected link to a pad if a pad has no links connected to
it.

Signed-off-by: Sakari Ailus <sakari.ai...@iki.fi>
---
Hi Laurent,

This goes on top of patch 2/4. I can combine the two in the end but I think
this is cleaner as a separate change.

 drivers/media/media-entity.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
index a99396b..2ad291f 100644
--- a/drivers/media/media-entity.c
+++ b/drivers/media/media-entity.c
@@ -236,6 +236,7 @@ __must_check int media_entity_pipeline_start(struct 
media_entity *entity,
 
        while ((entity = media_entity_graph_walk_next(&graph))) {
                DECLARE_BITMAP(active, entity->num_pads);
+               DECLARE_BITMAP(has_no_links, entity->num_pads);
                unsigned int i;
 
                entity->stream_count++;
@@ -250,6 +251,7 @@ __must_check int media_entity_pipeline_start(struct 
media_entity *entity,
                        continue;
 
                bitmap_zero(active, entity->num_pads);
+               bitmap_fill(has_no_links, entity->num_pads);
 
                for (i = 0; i < entity->num_links; i++) {
                        struct media_link *link = &entity->links[i];
@@ -257,6 +259,11 @@ __must_check int media_entity_pipeline_start(struct 
media_entity *entity,
                                ? link->sink : link->source;
 
                        /*
+                        * Mark that a pad is connected by a link.
+                        */
+                       bitmap_clear(has_no_links, pad->index, 1);
+
+                       /*
                         * Pads that either do not need to connect or
                         * are connected through an enabled link are
                         * fine.
@@ -278,6 +285,9 @@ __must_check int media_entity_pipeline_start(struct 
media_entity *entity,
                                goto error;
                }
 
+               /* Either no links or validated links are fine. */
+               bitmap_or(active, active, has_no_links, entity->num_pads);
+
                if (!bitmap_full(active, entity->num_pads)) {
                        ret = -EPIPE;
                        goto error;
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to