From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Steve Longerbeam <slongerbeam@gmail.com>
Cc: linux-media@vger.kernel.org,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
Hans Verkuil <hverkuil-cisco@xs4all.nl>,
Rui Miguel Silva <rmfrfs@gmail.com>,
Philipp Zabel <p.zabel@pengutronix.de>
Subject: Re: [PATCH v4 08/17] media: imx: Add imx_media_create_fwnode_pad_link()
Date: Wed, 15 Apr 2020 02:21:57 +0300 [thread overview]
Message-ID: <20200414232157.GA28533@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20200303234256.8928-9-slongerbeam@gmail.com>
Hi Steve,
Thank you for the patch.
On Tue, Mar 03, 2020 at 03:42:47PM -0800, Steve Longerbeam wrote:
> Add functions to create media links between a source and sink subdevice
> based on fwnode endpoint connections between them.
>
> Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
> ---
> drivers/staging/media/imx/imx-media-utils.c | 91 +++++++++++++++++++++
> drivers/staging/media/imx/imx-media.h | 4 +
> 2 files changed, 95 insertions(+)
>
> diff --git a/drivers/staging/media/imx/imx-media-utils.c b/drivers/staging/media/imx/imx-media-utils.c
> index 0788a1874557..87152bd9af22 100644
> --- a/drivers/staging/media/imx/imx-media-utils.c
> +++ b/drivers/staging/media/imx/imx-media-utils.c
> @@ -729,6 +729,97 @@ void imx_media_grp_id_to_sd_name(char *sd_name, int sz, u32 grp_id, int ipu_id)
> }
> EXPORT_SYMBOL_GPL(imx_media_grp_id_to_sd_name);
>
> +/*
> + * Look for and create a single fwnode link that connects a source
> + * subdevice to a sink pad.
> + */
> +int imx_media_create_fwnode_pad_link(struct v4l2_subdev *src_sd,
> + struct media_pad *sink)
> +{
> + struct fwnode_handle *endpoint;
> +
> + /* loop thru the source's fwnode endpoints */
> + fwnode_graph_for_each_endpoint(dev_fwnode(src_sd->dev), endpoint) {
> + struct fwnode_handle *remote_ep;
> + int src_idx, sink_idx, ret;
> + struct media_pad *src;
> +
> + remote_ep = fwnode_graph_get_remote_endpoint(endpoint);
> + if (!remote_ep)
> + continue;
> +
> + /*
> + * ask the sink entity to verify that this fwnode link
> + * actually does connect with the entity, and if so that
> + * it connects to its requested sink pad.
> + */
> + sink_idx = media_entity_get_fwnode_pad(sink->entity,
> + remote_ep,
> + MEDIA_PAD_FL_SINK);
> + fwnode_handle_put(remote_ep);
> +
> + if (sink_idx < 0 || sink_idx != sink->index)
> + continue;
> +
> + src_idx = media_entity_get_fwnode_pad(&src_sd->entity,
> + endpoint,
> + MEDIA_PAD_FL_SOURCE);
> + if (src_idx < 0)
> + continue;
> +
> + /*
> + * found the fwnode link that works, create the media
> + * link for it.
> + */
> +
> + fwnode_handle_put(endpoint);
> +
> + src = &src_sd->entity.pads[src_idx];
> +
> + /* success if it already exists */
> + if (media_entity_find_link(src, sink))
> + return 0;
> +
> + dev_dbg(src_sd->dev, "%s:%d -> %s:%d\n",
> + src_sd->entity.name, src_idx,
> + sink->entity->name, sink_idx);
> +
> + ret = media_create_pad_link(&src_sd->entity, src_idx,
> + sink->entity, sink_idx, 0);
> + if (ret)
> + dev_err(src_sd->dev,
> + "%s:%d -> %s:%d failed with %d\n",
> + src_sd->entity.name, src_idx,
> + sink->entity->name, sink_idx, ret);
> +
> + return ret;
> + }
> +
> + return -ENXIO;
> +}
> +EXPORT_SYMBOL_GPL(imx_media_create_fwnode_pad_link);
> +
> +int imx_media_create_fwnode_pad_links(struct v4l2_subdev *src_sd,
> + struct v4l2_subdev *sink_sd)
> +{
> + int i;
> +
> + for (i = 0; i < sink_sd->entity.num_pads; i++) {
> + struct media_pad *pad = &sink_sd->entity.pads[i];
> + int ret;
> +
> + if (!(pad->flags & MEDIA_PAD_FL_SINK))
> + continue;
> +
> + ret = imx_media_create_fwnode_pad_link(src_sd, pad);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +EXPORT_SYMBOL_GPL(imx_media_create_fwnode_pad_links);
As commented in 09/17, I think these should be core helpers.
> +
> struct v4l2_subdev *
> imx_media_find_subdev_by_fwnode(struct imx_media_dev *imxmd,
> struct fwnode_handle *fwnode)
> diff --git a/drivers/staging/media/imx/imx-media.h b/drivers/staging/media/imx/imx-media.h
> index 11861191324a..f90a65ba4ced 100644
> --- a/drivers/staging/media/imx/imx-media.h
> +++ b/drivers/staging/media/imx/imx-media.h
> @@ -183,6 +183,10 @@ int imx_media_ipu_image_to_mbus_fmt(struct v4l2_mbus_framefmt *mbus,
> struct ipu_image *image);
> void imx_media_grp_id_to_sd_name(char *sd_name, int sz,
> u32 grp_id, int ipu_id);
> +int imx_media_create_fwnode_pad_link(struct v4l2_subdev *src_sd,
> + struct media_pad *sink);
> +int imx_media_create_fwnode_pad_links(struct v4l2_subdev *src_sd,
> + struct v4l2_subdev *sink_sd);
> struct v4l2_subdev *
> imx_media_find_subdev_by_fwnode(struct imx_media_dev *imxmd,
> struct fwnode_handle *fwnode);
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2020-04-14 23:22 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-03 23:42 [PATCH v4 00/17] media: imx: Create media links in bound notifiers Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 01/17] media: entity: Pass entity to get_fwnode_pad operation Steve Longerbeam
2020-04-14 22:58 ` Laurent Pinchart
2020-03-03 23:42 ` [PATCH v4 02/17] media: video-mux: Parse information from firmware without using callbacks Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 03/17] media: imx: " Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 04/17] Revert "media: v4l2-fwnode: Add a convenience function for registering subdevs with notifiers" Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 05/17] media: imx: csi: Implement get_fwnode_pad op Steve Longerbeam
2020-04-14 23:02 ` Laurent Pinchart
2020-03-03 23:42 ` [PATCH v4 06/17] media: imx: mipi csi-2: " Steve Longerbeam
2020-04-14 23:07 ` Laurent Pinchart
2020-04-14 23:20 ` Sakari Ailus
2020-04-14 23:27 ` Laurent Pinchart
2020-04-14 23:56 ` Sakari Ailus
2020-04-14 23:50 ` Steve Longerbeam
2020-04-15 0:43 ` Laurent Pinchart
2020-04-14 23:29 ` Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 07/17] media: video-mux: " Steve Longerbeam
2020-04-14 23:08 ` Laurent Pinchart
2020-04-15 0:17 ` Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 08/17] media: imx: Add imx_media_create_fwnode_pad_link() Steve Longerbeam
2020-04-14 23:21 ` Laurent Pinchart [this message]
2020-03-03 23:42 ` [PATCH v4 09/17] media: video-mux: Create media links in bound notifier Steve Longerbeam
2020-04-14 23:16 ` Laurent Pinchart
2020-04-14 23:47 ` Steve Longerbeam
2020-04-18 0:56 ` Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 10/17] media: imx: mipi csi-2: " Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 11/17] media: imx7: mipi csis: " Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 12/17] media: imx7: csi: " Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 13/17] media: imx: " Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 14/17] media: imx: csi: Lookup upstream endpoint with imx_media_get_pad_fwnode Steve Longerbeam
2020-04-14 23:24 ` Laurent Pinchart
2020-03-03 23:42 ` [PATCH v4 15/17] media: imx: Create missing links from CSI-2 receiver Steve Longerbeam
2020-04-14 23:32 ` Laurent Pinchart
2020-04-15 0:10 ` Steve Longerbeam
2020-03-03 23:42 ` [PATCH v4 16/17] media: imx: silence a couple debug messages Steve Longerbeam
2020-04-14 23:33 ` Laurent Pinchart
2020-03-03 23:42 ` [PATCH v4 17/17] media: imx: TODO: Remove media link creation todos Steve Longerbeam
2020-03-25 18:09 ` [PATCH v4 00/17] media: imx: Create media links in bound notifiers Steve Longerbeam
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=20200414232157.GA28533@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=hverkuil-cisco@xs4all.nl \
--cc=linux-media@vger.kernel.org \
--cc=mchehab+huawei@kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=rmfrfs@gmail.com \
--cc=sakari.ailus@linux.intel.com \
--cc=slongerbeam@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.