OSDN Git Service

media: ti-vpe: cal: add mbus_code support to cal_mc_enum_fmt_vid_cap
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Mon, 14 Jun 2021 11:23:34 +0000 (13:23 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 12 Jul 2021 12:21:55 +0000 (14:21 +0200)
Commit e5b6b07a1b45 ("media: v4l2: Extend VIDIOC_ENUM_FMT to support
MC-centric devices") added support to enumerate formats based on
mbus-code.

Add this feature to cal driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/ti-vpe/cal-video.c

index cdbfdca..1099ef4 100644 (file)
@@ -437,13 +437,28 @@ static const struct v4l2_ioctl_ops cal_ioctl_video_ops = {
 static int cal_mc_enum_fmt_vid_cap(struct file *file, void  *priv,
                                   struct v4l2_fmtdesc *f)
 {
+       unsigned int i;
+       unsigned int idx;
+
        if (f->index >= cal_num_formats)
                return -EINVAL;
 
-       f->pixelformat = cal_formats[f->index].fourcc;
-       f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+       idx = 0;
 
-       return 0;
+       for (i = 0; i < cal_num_formats; ++i) {
+               if (f->mbus_code && cal_formats[i].code != f->mbus_code)
+                       continue;
+
+               if (idx == f->index) {
+                       f->pixelformat = cal_formats[i].fourcc;
+                       f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+                       return 0;
+               }
+
+               idx++;
+       }
+
+       return -EINVAL;
 }
 
 static void cal_mc_try_fmt(struct cal_ctx *ctx, struct v4l2_format *f,