Message ID | 20211130141536.891878-20-tomi.valkeinen@ideasonboard.com |
---|---|
State | New |
Headers | show |
Series | v4l: subdev internal routing and streams | expand |
Hi Tomi and Sakari, Thank you for the patch. On Tue, Nov 30, 2021 at 04:15:17PM +0200, Tomi Valkeinen wrote: > From: Sakari Ailus <sakari.ailus@linux.intel.com> > > A single entity may contain multiple pipelines. Only add pads that were > connected to the pad through which the entity was reached to the pipeline. > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> > --- > drivers/media/mc/mc-entity.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c > index 072f017b399a..4eb4b94c09e2 100644 > --- a/drivers/media/mc/mc-entity.c > +++ b/drivers/media/mc/mc-entity.c > @@ -474,7 +474,7 @@ __must_check int __media_pipeline_start(struct media_pad *pad, Adding a bit more context: while ((pad = media_graph_walk_next(graph))) { struct media_entity *entity = pad->entity; bool skip_validation = pad->pipe != NULL; struct media_pad *iter; DECLARE_BITMAP(active, MEDIA_ENTITY_MAX_PADS); DECLARE_BITMAP(has_no_links, MEDIA_ENTITY_MAX_PADS); > > ret = 0; > > - media_entity_for_each_pad(entity, iter) { > + media_entity_for_each_routed_pad(pad, iter) { > if (iter->pipe && iter->pipe != pipe) { > pr_err("Pipe active for %s. Can't start for %s\n", > entity->name, iter->entity->name); So here 'iter' is a pad that is reached using an internal route from the pad 'pad'. 'pad' and 'iter' thus belong to the same entity. 'entity' is pad->entity, so, unless I'm mistaken, entity->name and iter->entity->name are the same. I think the message should be reworked. > @@ -563,10 +563,9 @@ __must_check int __media_pipeline_start(struct media_pad *pad, > media_graph_walk_start(graph, pad_err); > > while ((pad_err = media_graph_walk_next(graph))) { > - struct media_entity *entity = pad_err->entity; > struct media_pad *iter; > > - media_entity_for_each_pad(entity, iter) { > + media_entity_for_each_routed_pad(pad_err, iter) { > /* Sanity check for negative stream_count */ > if (!WARN_ON_ONCE(iter->stream_count <= 0)) { > --iter->stream_count; > @@ -619,10 +618,9 @@ void __media_pipeline_stop(struct media_pad *pad) > media_graph_walk_start(graph, pad); > > while ((pad = media_graph_walk_next(graph))) { > - struct media_entity *entity = pad->entity; > struct media_pad *iter; > > - media_entity_for_each_pad(entity, iter) { > + media_entity_for_each_routed_pad(pad, iter) { > /* Sanity check for negative stream_count */ > if (!WARN_ON_ONCE(iter->stream_count <= 0)) { > iter->stream_count--;
diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index 072f017b399a..4eb4b94c09e2 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -474,7 +474,7 @@ __must_check int __media_pipeline_start(struct media_pad *pad, ret = 0; - media_entity_for_each_pad(entity, iter) { + media_entity_for_each_routed_pad(pad, iter) { if (iter->pipe && iter->pipe != pipe) { pr_err("Pipe active for %s. Can't start for %s\n", entity->name, iter->entity->name); @@ -563,10 +563,9 @@ __must_check int __media_pipeline_start(struct media_pad *pad, media_graph_walk_start(graph, pad_err); while ((pad_err = media_graph_walk_next(graph))) { - struct media_entity *entity = pad_err->entity; struct media_pad *iter; - media_entity_for_each_pad(entity, iter) { + media_entity_for_each_routed_pad(pad_err, iter) { /* Sanity check for negative stream_count */ if (!WARN_ON_ONCE(iter->stream_count <= 0)) { --iter->stream_count; @@ -619,10 +618,9 @@ void __media_pipeline_stop(struct media_pad *pad) media_graph_walk_start(graph, pad); while ((pad = media_graph_walk_next(graph))) { - struct media_entity *entity = pad->entity; struct media_pad *iter; - media_entity_for_each_pad(entity, iter) { + media_entity_for_each_routed_pad(pad, iter) { /* Sanity check for negative stream_count */ if (!WARN_ON_ONCE(iter->stream_count <= 0)) { iter->stream_count--;