Re: [PATCH 2/3] media: rcar-vin: Breakout media link creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Niklas

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.
>
> There is no functional change.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>
> ---
>  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@xxxxxxxxxx>

Thanks
   j


> +	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);
>
> --
> 2.33.1
>



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux