media: staging: rkisp1: cap: enable RGB capture format with YUV media bus
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Sun, 12 Apr 2020 12:05:04 +0000 (14:05 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 5 May 2020 15:07:23 +0000 (17:07 +0200)
In selfpath, RGB capture formats are received in the sink pad as YUV
and are converted to RGB only when writing to memory. So the validation
function should accept YUV bus formats with RGB capture encoding.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/rkisp1/rkisp1-capture.c

index 21496fb2c4daa05b0eccb1bfdb44f6748306243d..f69235f82c4572774f5103a242d69f7d6b4e4216 100644 (file)
@@ -1227,6 +1227,8 @@ static int rkisp1_capture_link_validate(struct media_link *link)
                media_entity_to_v4l2_subdev(link->source->entity);
        struct rkisp1_capture *cap = video_get_drvdata(vdev);
        struct rkisp1_isp *isp = &cap->rkisp1->isp;
+       u8 isp_pix_enc = isp->src_fmt->pixel_enc;
+       u8 cap_pix_enc = cap->pix.info->pixel_enc;
        struct v4l2_subdev_format sd_fmt;
        int ret;
 
@@ -1237,7 +1239,9 @@ static int rkisp1_capture_link_validate(struct media_link *link)
                return -EPIPE;
        }
 
-       if (cap->pix.info->pixel_enc != isp->src_fmt->pixel_enc) {
+       if (cap_pix_enc != isp_pix_enc &&
+           !(isp_pix_enc == V4L2_PIXEL_ENC_YUV &&
+             cap_pix_enc == V4L2_PIXEL_ENC_RGB)) {
                dev_err(cap->rkisp1->dev,
                        "format type mismatch in link '%s:%d->%s:%d'\n",
                        link->source->entity->name, link->source->index,