]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
media: atmel: atmel-isc: add checks for limiting frame sizes
authorEugen Hristev <eugen.hristev@microchip.com>
Tue, 13 Apr 2021 10:57:01 +0000 (12:57 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 8 Jun 2021 10:19:05 +0000 (12:19 +0200)
When calling the subdev, certain subdev drivers will overwrite the
frame size and adding sizes which are beyond the ISC's capabilities.
Thus we need to ensure the frame size is cropped to the maximum caps.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/atmel/atmel-isc-base.c

index d987a8891bd9ec8d2467c066f51c5c2b54a36a04..02f1d1c6b06efcb283e3b7a6e7600abf3e6e161f 100644 (file)
@@ -1338,6 +1338,12 @@ static int isc_try_fmt(struct isc_device *isc, struct v4l2_format *f,
 
        v4l2_fill_pix_format(pixfmt, &format.format);
 
+       /* Limit to Atmel ISC hardware capabilities */
+       if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
+               pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
+       if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
+               pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
+
        pixfmt->field = V4L2_FIELD_NONE;
        pixfmt->bytesperline = (pixfmt->width * isc->try_config.bpp) >> 3;
        pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
@@ -1373,6 +1379,12 @@ static int isc_set_fmt(struct isc_device *isc, struct v4l2_format *f)
        if (ret < 0)
                return ret;
 
+       /* Limit to Atmel ISC hardware capabilities */
+       if (pixfmt->width > ISC_MAX_SUPPORT_WIDTH)
+               pixfmt->width = ISC_MAX_SUPPORT_WIDTH;
+       if (pixfmt->height > ISC_MAX_SUPPORT_HEIGHT)
+               pixfmt->height = ISC_MAX_SUPPORT_HEIGHT;
+
        isc->fmt = *f;
 
        if (isc->try_config.sd_format && isc->config.sd_format &&