From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@iki.fi>
Cc: linux-media@vger.kernel.org, sylwester.nawrocki@gmail.com,
a.hajda@samsung.com
Subject: Re: [PATCH v2.2 2/4] media: Check for active links on pads with MEDIA_PAD_FL_MUST_CONNECT flag
Date: Thu, 31 Oct 2013 15:46:37 +0100 [thread overview]
Message-ID: <3264775.K5zEZGYCNX@avalon> (raw)
In-Reply-To: <1381873697-5521-1-git-send-email-sakari.ailus@iki.fi>
Hi Sakari,
Thank you for the patch.
On Wednesday 16 October 2013 00:48:17 Sakari Ailus wrote:
> Do not allow streaming if a pad with MEDIA_PAD_FL_MUST_CONNECT flag is not
> connected by an active link.
>
> This patch makes it possible to avoid drivers having to check for the most
> common case of link state validation: a sink pad that must be connected.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
I've taken the whole series in my tree and will push it upstream for v3.14.
> ---
> drivers/media/media-entity.c | 41 ++++++++++++++++++++++++++++++++-------
> 1 file changed, 34 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/media/media-entity.c b/drivers/media/media-entity.c
> index 2c286c3..37c334e 100644
> --- a/drivers/media/media-entity.c
> +++ b/drivers/media/media-entity.c
> @@ -235,6 +235,8 @@ __must_check int media_entity_pipeline_start(struct
> media_entity *entity, media_entity_graph_walk_start(&graph, 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++;
> @@ -248,21 +250,46 @@ __must_check int media_entity_pipeline_start(struct
> media_entity *entity, if (!entity->ops || !entity->ops->link_validate)
> 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];
> -
> - /* Is this pad part of an enabled link? */
> - if (!(link->flags & MEDIA_LNK_FL_ENABLED))
> - continue;
> -
> - /* Are we the sink or not? */
> - if (link->sink->entity != entity)
> + struct media_pad *pad = link->sink->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.
> + */
> + if (!(pad->flags & MEDIA_PAD_FL_MUST_CONNECT) ||
> + link->flags & MEDIA_LNK_FL_ENABLED)
> + bitmap_set(active, pad->index, 1);
> +
> + /*
> + * Link validation will only take place for
> + * sink ends of the link that are enabled.
> + */
> + if (link->sink != pad ||
> + !(link->flags & MEDIA_LNK_FL_ENABLED))
> continue;
>
> ret = entity->ops->link_validate(link);
> if (ret < 0 && ret != -ENOIOCTLCMD)
> 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;
> + }
> }
>
> mutex_unlock(&mdev->graph_mutex);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2013-10-31 14:46 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-02 23:17 [PATCH v2 0/4] Add MEDIA_PAD_FL_MUST_CONNECT pad flag, check it Sakari Ailus
2013-10-02 23:17 ` [PATCH v2 1/4] media: Add pad flag MEDIA_PAD_FL_MUST_CONNECT Sakari Ailus
2013-10-02 23:29 ` Laurent Pinchart
2013-10-03 2:16 ` Sylwester Nawrocki
2013-10-03 8:43 ` Sakari Ailus
2013-10-03 9:40 ` Laurent Pinchart
2013-10-03 22:13 ` Sylwester Nawrocki
2013-10-13 10:58 ` [PATCH v2.1 " Sakari Ailus
2013-10-13 11:03 ` Sakari Ailus
2013-10-15 15:22 ` Laurent Pinchart
2013-10-15 21:41 ` Sakari Ailus
2013-10-15 21:46 ` [PATCH v2.2 " Sakari Ailus
2013-10-31 14:45 ` Laurent Pinchart
2013-10-13 11:00 ` [PATCH v2.1 2/4] media: Check for active links on pads with MEDIA_PAD_FL_MUST_CONNECT flag Sakari Ailus
2013-10-02 23:17 ` [PATCH v2 " Sakari Ailus
2013-10-15 21:48 ` [PATCH v2.2 " Sakari Ailus
2013-10-31 14:46 ` Laurent Pinchart [this message]
2013-10-02 23:17 ` [PATCH v2 3/4] omap3isp: Mark which pads must connect Sakari Ailus
2013-10-02 23:17 ` [PATCH v2 4/4] omap3isp: Add resizer data rate configuration to resizer_link_validate Sakari Ailus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3264775.K5zEZGYCNX@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=a.hajda@samsung.com \
--cc=linux-media@vger.kernel.org \
--cc=sakari.ailus@iki.fi \
--cc=sylwester.nawrocki@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.