Re: [PATCH 1/1] v4l: subdev: Improve link format validation debug messages

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

 



Hi Sakari,

Thank you for the patch.

On Mon, Oct 12, 2020 at 11:37:19AM +0300, Sakari Ailus wrote:
> The existing link format validation failure debug message in media-entity.c
> helped to poinpoint the point of failure but provided no additional
> information what's wrong. Tell the user exactly why the validation failed.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>

Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>

> ---
> since v1:
> 
> - Print the link if there were mismatches
> 
>  drivers/media/v4l2-core/v4l2-subdev.c | 48 +++++++++++++++++++++++----
>  1 file changed, 41 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
> index a7d508e74d6b..956dafab43d4 100644
> --- a/drivers/media/v4l2-core/v4l2-subdev.c
> +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> @@ -792,21 +792,55 @@ int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
>  				      struct v4l2_subdev_format *source_fmt,
>  				      struct v4l2_subdev_format *sink_fmt)
>  {
> +	bool pass = true;
> +
>  	/* The width, height and code must match. */
> -	if (source_fmt->format.width != sink_fmt->format.width
> -	    || source_fmt->format.height != sink_fmt->format.height
> -	    || source_fmt->format.code != sink_fmt->format.code)
> -		return -EPIPE;
> +	if (source_fmt->format.width != sink_fmt->format.width) {
> +		dev_dbg(sd->entity.graph_obj.mdev->dev,
> +			"%s: width does not match (source %u, sink %u)\n",
> +			__func__,
> +			source_fmt->format.width, sink_fmt->format.width);
> +		pass = false;
> +	}
> +
> +	if (source_fmt->format.height != sink_fmt->format.height) {
> +		dev_dbg(sd->entity.graph_obj.mdev->dev,
> +			"%s: height does not match (source %u, sink %u)\n",
> +			__func__,
> +			source_fmt->format.height, sink_fmt->format.height);
> +		pass = false;
> +	}
> +
> +	if (source_fmt->format.code != sink_fmt->format.code) {
> +		dev_dbg(sd->entity.graph_obj.mdev->dev,
> +			"%s: media bus code does not match (source 0x%8.8x, sink 0x%8.8x)\n",
> +			__func__,
> +			source_fmt->format.code, sink_fmt->format.code);
> +		pass = false;
> +	}
>  
>  	/* The field order must match, or the sink field order must be NONE
>  	 * to support interlaced hardware connected to bridges that support
>  	 * progressive formats only.
>  	 */
>  	if (source_fmt->format.field != sink_fmt->format.field &&
> -	    sink_fmt->format.field != V4L2_FIELD_NONE)
> -		return -EPIPE;
> +	    sink_fmt->format.field != V4L2_FIELD_NONE) {
> +		dev_dbg(sd->entity.graph_obj.mdev->dev,
> +			"%s: field does not match (source %u, sink %u)\n",
> +			__func__,
> +			source_fmt->format.field, sink_fmt->format.field);
> +		pass = false;
> +	}
>  
> -	return 0;
> +	if (pass)
> +		return 0;
> +
> +	dev_dbg(sd->entity.graph_obj.mdev->dev,
> +		"%s: link was \"%s\":%u -> \"%s\":%u\n", __func__,
> +		link->source->entity->name, link->source->index,
> +		link->sink->entity->name, link->sink->index);
> +
> +	return -EPIPE;
>  }
>  EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate_default);
>  

-- 
Regards,

Laurent Pinchart



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux