OSDN Git Service

media: imx-pxp: Implement frame size enumeration
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Fri, 13 Jan 2023 09:54:19 +0000 (10:54 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Wed, 8 Feb 2023 08:20:25 +0000 (09:20 +0100)
Implement support for the VIDIOC_ENUM_FRAMESIZES ioctl.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/nxp/imx-pxp.c

index 4738d7a..a08e37b 100644 (file)
@@ -1379,6 +1379,26 @@ static int pxp_s_fmt_vid_out(struct file *file, void *priv,
        return 0;
 }
 
+static int pxp_enum_framesizes(struct file *file, void *fh,
+                              struct v4l2_frmsizeenum *fsize)
+{
+       if (fsize->index > 0)
+               return -EINVAL;
+
+       if (!find_format(fsize->pixel_format))
+               return -EINVAL;
+
+       fsize->type = V4L2_FRMSIZE_TYPE_STEPWISE;
+       fsize->stepwise.min_width = MIN_W;
+       fsize->stepwise.max_width = MAX_W;
+       fsize->stepwise.step_width = 1 << ALIGN_W;
+       fsize->stepwise.min_height = MIN_H;
+       fsize->stepwise.max_height = MAX_H;
+       fsize->stepwise.step_height = 1 << ALIGN_H;
+
+       return 0;
+}
+
 static u8 pxp_degrees_to_rot_mode(u32 degrees)
 {
        switch (degrees) {
@@ -1447,6 +1467,8 @@ static const struct v4l2_ioctl_ops pxp_ioctl_ops = {
        .vidioc_try_fmt_vid_out = pxp_try_fmt_vid_out,
        .vidioc_s_fmt_vid_out   = pxp_s_fmt_vid_out,
 
+       .vidioc_enum_framesizes = pxp_enum_framesizes,
+
        .vidioc_reqbufs         = v4l2_m2m_ioctl_reqbufs,
        .vidioc_querybuf        = v4l2_m2m_ioctl_querybuf,
        .vidioc_qbuf            = v4l2_m2m_ioctl_qbuf,