media: Revert "media: mtk-vcodec: Remove extra area allocation in an input buffer...
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Sun, 10 Nov 2019 13:30:18 +0000 (14:30 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 10 Nov 2019 17:10:11 +0000 (18:10 +0100)
This reverts commit 3192b2ca79b3f72fbc0eab9cd95432e3c317ab0d.

There are indications that this patch causes problems on some
platforms due to some hardware prefetch. Reverting this patch
for now until this is better understood.

Reported-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c

index 6aad53d..fd8de02 100644 (file)
@@ -332,12 +332,14 @@ static int vidioc_try_fmt(struct v4l2_format *f,
 
                pix_fmt_mp->num_planes = fmt->num_planes;
                pix_fmt_mp->plane_fmt[0].sizeimage =
-                       pix_fmt_mp->width * pix_fmt_mp->height;
+                               pix_fmt_mp->width * pix_fmt_mp->height +
+                               ((ALIGN(pix_fmt_mp->width, 16) * 2) * 16);
                pix_fmt_mp->plane_fmt[0].bytesperline = pix_fmt_mp->width;
 
                if (pix_fmt_mp->num_planes == 2) {
                        pix_fmt_mp->plane_fmt[1].sizeimage =
-                               (pix_fmt_mp->width * pix_fmt_mp->height) / 2;
+                               (pix_fmt_mp->width * pix_fmt_mp->height) / 2 +
+                               (ALIGN(pix_fmt_mp->width, 16) * 16);
                        pix_fmt_mp->plane_fmt[2].sizeimage = 0;
                        pix_fmt_mp->plane_fmt[1].bytesperline =
                                                        pix_fmt_mp->width;
@@ -345,7 +347,8 @@ static int vidioc_try_fmt(struct v4l2_format *f,
                } else if (pix_fmt_mp->num_planes == 3) {
                        pix_fmt_mp->plane_fmt[1].sizeimage =
                        pix_fmt_mp->plane_fmt[2].sizeimage =
-                               (pix_fmt_mp->width * pix_fmt_mp->height) / 4;
+                               (pix_fmt_mp->width * pix_fmt_mp->height) / 4 +
+                               ((ALIGN(pix_fmt_mp->width, 16) / 2) * 16);
                        pix_fmt_mp->plane_fmt[1].bytesperline =
                                pix_fmt_mp->plane_fmt[2].bytesperline =
                                pix_fmt_mp->width / 2;