media: staging: rkisp1: cap: simplify link validation by comparing media bus code
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Tue, 1 Sep 2020 11:16:11 +0000 (13:16 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Sun, 27 Sep 2020 09:15:45 +0000 (11:15 +0200)
The capture has a mapping of the mbus code needed for each pixelformat.
This can be used to simplify the link validation by comparing the mbus
code in the capture with the code in the resizer.

Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Acked-by: Helen Koike <helen.koike@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 53f49f00174e16ff17acd43678f4aa36f7266542..2ad46df6a75804afa2a57bd76c6c7130ae914f29 100644 (file)
@@ -1255,22 +1255,11 @@ static int rkisp1_capture_link_validate(struct media_link *link)
        struct v4l2_subdev *sd =
                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;
+       const struct rkisp1_capture_fmt_cfg *fmt =
+               rkisp1_find_fmt_cfg(cap, cap->pix.fmt.pixelformat);
        struct v4l2_subdev_format sd_fmt;
        int ret;
 
-       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,
-                       link->sink->entity->name, link->sink->index);
-               return -EPIPE;
-       }
-
        sd_fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        sd_fmt.pad = link->source->index;
        ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, &sd_fmt);
@@ -1278,7 +1267,8 @@ static int rkisp1_capture_link_validate(struct media_link *link)
                return ret;
 
        if (sd_fmt.format.height != cap->pix.fmt.height ||
-           sd_fmt.format.width != cap->pix.fmt.width)
+           sd_fmt.format.width != cap->pix.fmt.width ||
+           sd_fmt.format.code != fmt->mbus)
                return -EPIPE;
 
        return 0;