lkml.org 
[lkml]   [2020]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v5 1/3] media: rcar-vin: Invalidate pipeline if conversion is not possible on input formats
Hi Lad,

Thanks for your work.

On 2020-05-27 13:16:48 +0100, Lad Prabhakar wrote:
> Up until now the VIN was capable to convert any of its supported input mbus
> formats to any of it's supported output pixel formats. With the addition of
> RAW formats this is no longer true.
>
> This patch invalidates the pipeline by adding a check if given vin input
> format can be converted to supported output pixel format.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

> ---
> drivers/media/platform/rcar-vin/rcar-dma.c | 6 +++++-
> drivers/media/platform/rcar-vin/rcar-v4l2.c | 11 ++++++++---
> 2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c
> index 1a30cd036371..2b26204910fd 100644
> --- a/drivers/media/platform/rcar-vin/rcar-dma.c
> +++ b/drivers/media/platform/rcar-vin/rcar-dma.c
> @@ -1110,11 +1110,15 @@ static int rvin_mc_validate_format(struct rvin_dev *vin, struct v4l2_subdev *sd,
> case MEDIA_BUS_FMT_UYVY8_2X8:
> case MEDIA_BUS_FMT_UYVY10_2X10:
> case MEDIA_BUS_FMT_RGB888_1X24:
> - vin->mbus_code = fmt.format.code;
> + break;
> + case MEDIA_BUS_FMT_SRGGB8_1X8:
> + if (vin->format.pixelformat != V4L2_PIX_FMT_SRGGB8)
> + return -EPIPE;
> break;
> default:
> return -EPIPE;
> }
> + vin->mbus_code = fmt.format.code;
>
> switch (fmt.format.field) {
> case V4L2_FIELD_TOP:
> diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c
> index f421e2584875..d3b6a992b4a2 100644
> --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
> +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
> @@ -350,9 +350,9 @@ static int rvin_enum_fmt_vid_cap(struct file *file, void *priv,
> * all of the related pixel formats. If mbus_code is not set enumerate
> * all possible pixelformats.
> *
> - * TODO: Once raw capture formats are added to the driver this needs
> - * to be extended so raw media bus codes only result in raw pixel
> - * formats.
> + * TODO: Once raw MEDIA_BUS_FMT_SRGGB12_1X12 format is added to the
> + * driver this needs to be extended so raw media bus code only result in
> + * raw pixel format.
> */
> switch (f->mbus_code) {
> case 0:
> @@ -362,6 +362,11 @@ static int rvin_enum_fmt_vid_cap(struct file *file, void *priv,
> case MEDIA_BUS_FMT_UYVY10_2X10:
> case MEDIA_BUS_FMT_RGB888_1X24:
> break;
> + case MEDIA_BUS_FMT_SRGGB8_1X8:
> + if (f->index)
> + return -EINVAL;
> + f->pixelformat = V4L2_PIX_FMT_SRGGB8;
> + return 0;
> default:
> return -EINVAL;
> }
> --
> 2.17.1
>

--
Regards,
Niklas Söderlund

\
 
 \ /
  Last update: 2020-06-10 15:00    [W:0.058 / U:0.516 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site