[PATCH v8 36/55] [media] davinci_vbpe: stop MEDIA_ENT_T_V4L2_SUBDEV abuse

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Dec 6 01:52:01 UTC 2015


Hi Mauro,

Thank you for the patch.

On Sunday 30 August 2015 00:06:47 Mauro Carvalho Chehab wrote:
> This driver is abusing MEDIA_ENT_T_V4L2_SUBDEV:
> 
> - it uses a hack to check if the remote entity is a subdev;

Same comment as for "omap4iss: stop MEDIA_ENT_T_V4L2_SUBDEV abuse", this isn't 
a hack.

> - it still uses the legacy entity subtype check macro, that
>   will be removed soon.
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab at osg.samsung.com>
> 
> diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
> b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c index
> b89a057b8b7e..7fd78329e3e1 100644
> --- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
> +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c
> @@ -1711,8 +1711,11 @@ ipipe_link_setup(struct media_entity *entity, const
> struct media_pad *local, struct vpfe_device *vpfe_dev =
> to_vpfe_device(ipipe);
>  	u16 ipipeif_sink = vpfe_dev->vpfe_ipipeif.input;
> 
> -	switch (local->index | media_entity_type(remote->entity)) {
> -	case IPIPE_PAD_SINK | MEDIA_ENT_T_V4L2_SUBDEV:
> +	if (!is_media_entity_v4l2_subdev(remote->entity))
> +		return -EINVAL;

You can drop the check (even though the implementation in the switch looks 
dubious to me, but that's not your fault).

> +	switch (local->index) {
> +	case IPIPE_PAD_SINK:
>  		if (!(flags & MEDIA_LNK_FL_ENABLED)) {
>  			ipipe->input = IPIPE_INPUT_NONE;
>  			break;
> @@ -1725,7 +1728,7 @@ ipipe_link_setup(struct media_entity *entity, const
> struct media_pad *local, ipipe->input = IPIPE_INPUT_CCDC;
>  		break;
> 
> -	case IPIPE_PAD_SOURCE | MEDIA_ENT_T_V4L2_SUBDEV:
> +	case IPIPE_PAD_SOURCE:
>  		/* out to RESIZER */
>  		if (flags & MEDIA_LNK_FL_ENABLED)
>  			ipipe->output = IPIPE_OUTPUT_RESIZER;
> diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c
> b/drivers/staging/media/davinci_vpfe/vpfe_video.c index
> 9eef64e0f0ab..2dbf14b9bb5f 100644
> --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c
> +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c
> @@ -88,7 +88,7 @@ vpfe_video_remote_subdev(struct vpfe_video_device *video,
> u32 *pad) {
>  	struct media_pad *remote = media_entity_remote_pad(&video->pad);
> 
> -	if (remote == NULL || remote->entity->type != MEDIA_ENT_T_V4L2_SUBDEV)
> +	if (!remote || !is_media_entity_v4l2_subdev(remote->entity))
>  		return NULL;
>  	if (pad)
>  		*pad = remote->index;
> @@ -243,8 +243,7 @@ static int vpfe_video_validate_pipeline(struct
> vpfe_pipeline *pipe)
> 
>  		/* Retrieve the source format */
>  		pad = media_entity_remote_pad(pad);
> -		if (pad == NULL ||
> -			pad->entity->type != MEDIA_ENT_T_V4L2_SUBDEV)
> +		if (!pad || !is_media_entity_v4l2_subdev(pad->entity))
>  			break;
> 
>  		subdev = media_entity_to_v4l2_subdev(pad->entity);

-- 
Regards,

Laurent Pinchart



More information about the devel mailing list