All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Jacopo Mondi <jacopo@jmondi.org>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	Jacopo Mondi <jacopo+renesas@jmondi.org>,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 2/3] media: rcar-vin: Breakout media link creation
Date: Sat, 27 Nov 2021 16:49:41 +0100	[thread overview]
Message-ID: <YaJTlR9DXTxe7tQe@bismarck.dyn.berto.se> (raw)
In-Reply-To: <YYwG8/4qeOuV7cDG@pendragon.ideasonboard.com>

Hello Laurent,

Thanks for your review.

On 2021-11-10 19:52:51 +0200, Laurent Pinchart wrote:
> Hello,
> 
> On Thu, Nov 04, 2021 at 05:43:06PM +0100, Jacopo Mondi wrote:
> > On Wed, Oct 20, 2021 at 10:02:24PM +0200, Niklas Söderlund wrote:
> > > In preparation of creating more links to allow for full Virtual Channel
> > > routing within the CSI-2 block break out the link creation logic to a
> > > helper function as the logic will grow in future work.
> 
> Are links the right option, should we switch to subdev internal routing
> configuration ?

That is an interesting question I thought about it but decided against 
it, at lest for now. The design we have is that each source pad of the 
R-Car CSI-2 subdevice is fixed to a specific VC (source pad 0 -> VC0, 
source pad 1 - > VC1, etc). And with this patch we preserve this 
behavior.

Once we have the internal routing and multiplexed stream API upstream we 
can evolve this and still keep the API consistent. As a first step we 
expose the internal routing true the new API, read-only as that how it 
is implemented today and then on-top of that we can decide if we want to 
make it configurable from user-space, or not.

> 
> > > There is no functional change.
> > >
> > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> > > ---
> > >  drivers/media/platform/rcar-vin/rcar-core.c | 38 ++++++++++-----------
> > >  1 file changed, 18 insertions(+), 20 deletions(-)
> > >
> > > diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c
> > > index bd960c348ba5228c..65ab66a072e9d635 100644
> > > --- a/drivers/media/platform/rcar-vin/rcar-core.c
> > > +++ b/drivers/media/platform/rcar-vin/rcar-core.c
> > > @@ -909,6 +909,22 @@ static const struct media_device_ops rvin_csi2_media_ops = {
> > >  	.link_notify = rvin_csi2_link_notify,
> > >  };
> > >
> > > +static int rvin_csi2_add_route(struct rvin_group *group,
> > 
> > How about rvin_csi2_create_link() ?
> >
> > > +			       const struct rvin_group_route *route)
> > > +
> > > +{
> > > +	struct media_entity *source = &group->remotes[route->csi].subdev->entity;
> > > +	unsigned int source_idx = rvin_group_csi_channel_to_pad(route->channel);
> > > +	struct media_entity *sink = &group->vin[route->vin]->vdev.entity;
> > > +	struct media_pad *source_pad = &source->pads[source_idx];
> > > +	struct media_pad *sink_pad = &sink->pads[0];
> > > +
> >
> > And keep the comment here to re-state that if the linke existed
> > already is not a fatal error
> > 
> > Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> 
> With those comments addressed,
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> > > +	if (media_entity_find_link(source_pad, sink_pad))
> > > +		return 0;
> > > +
> > > +	return media_create_pad_link(source, source_idx, sink, 0, 0);
> > > +}
> > > +
> > >  static int rvin_csi2_setup_links(struct rvin_dev *vin)
> > >  {
> > >  	const struct rvin_group_route *route;
> > > @@ -917,10 +933,6 @@ static int rvin_csi2_setup_links(struct rvin_dev *vin)
> > >  	/* Create all media device links between VINs and CSI-2's. */
> > >  	mutex_lock(&vin->group->lock);
> > >  	for (route = vin->info->routes; route->mask; route++) {
> > > -		struct media_pad *source_pad, *sink_pad;
> > > -		struct media_entity *source, *sink;
> > > -		unsigned int source_idx;
> > > -
> > >  		/* Check that VIN is part of the group. */
> > >  		if (!vin->group->vin[route->vin])
> > >  			continue;
> > > @@ -933,23 +945,9 @@ static int rvin_csi2_setup_links(struct rvin_dev *vin)
> > >  		if (!vin->group->remotes[route->csi].subdev)
> > >  			continue;
> > >
> > > -		source = &vin->group->remotes[route->csi].subdev->entity;
> > > -		source_idx = rvin_group_csi_channel_to_pad(route->channel);
> > > -		source_pad = &source->pads[source_idx];
> > > -
> > > -		sink = &vin->group->vin[route->vin]->vdev.entity;
> > > -		sink_pad = &sink->pads[0];
> > > -
> > > -		/* Skip if link already exists. */
> > > -		if (media_entity_find_link(source_pad, sink_pad))
> > > -			continue;
> > > -
> > > -		ret = media_create_pad_link(source, source_idx, sink, 0, 0);
> > > -		if (ret) {
> > > -			vin_err(vin, "Error adding link from %s to %s\n",
> > > -				source->name, sink->name);
> > > +		ret = rvin_csi2_add_route(vin->group, route);
> > > +		if (ret)
> > >  			break;
> > > -		}
> > >  	}
> > >  	mutex_unlock(&vin->group->lock);
> > >
> 
> -- 
> Regards,
> 
> Laurent Pinchart

-- 
Kind Regards,
Niklas Söderlund

  reply	other threads:[~2021-11-27 15:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-20 20:02 [PATCH 0/3] media: rcar-{csi2,vin}: Move to full Virtual Channel routing per CSI-2 IP Niklas Söderlund
2021-10-20 20:02 ` [PATCH 1/3] media: rcar-vin: Refactor link notify Niklas Söderlund
2021-11-04 16:36   ` Jacopo Mondi
2021-11-10 17:48     ` Laurent Pinchart
2021-11-27 15:40       ` Niklas Söderlund
2021-10-20 20:02 ` [PATCH 2/3] media: rcar-vin: Breakout media link creation Niklas Söderlund
2021-11-04 16:43   ` Jacopo Mondi
2021-11-10 17:52     ` Laurent Pinchart
2021-11-27 15:49       ` Niklas Söderlund [this message]
2021-10-20 20:02 ` [PATCH 3/3] media: rcar-{csi2,vin}: Move to full Virtual Channel routing per CSI-2 IP Niklas Söderlund
2021-11-04 17:29   ` Jacopo Mondi
2021-11-27 16:15     ` Niklas Söderlund
2021-11-04 18:05 ` [PATCH 0/3] " Jacopo Mondi
2021-11-10 15:25 ` Laurent Pinchart
2021-11-10 16:01   ` Niklas Söderlund
2021-11-10 16:57     ` Laurent Pinchart
2021-11-27 15:30       ` Niklas Söderlund

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=YaJTlR9DXTxe7tQe@bismarck.dyn.berto.se \
    --to=niklas.soderlund+renesas@ragnatech.se \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=jacopo+renesas@jmondi.org \
    --cc=jacopo@jmondi.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    /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.