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 6aad53d97d74ae75b3f362a1495946184a626d39..fd8de027e83e30a2b5fd7b3afc866dbb1e1f5426 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;