Commit f2011e40 authored by Lucas Stach's avatar Lucas Stach Committed by Mauro Carvalho Chehab

[media] coda: use correct offset for mvcol buffer

The mvcol buffer needs to be placed behind the chroma plane(s), so
use the real offset including any required rounding.
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarHans Verkuil <hansverk@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 50058a9a
...@@ -427,14 +427,16 @@ static int coda_alloc_framebuffers(struct coda_ctx *ctx, ...@@ -427,14 +427,16 @@ static int coda_alloc_framebuffers(struct coda_ctx *ctx,
/* Register frame buffers in the parameter buffer */ /* Register frame buffers in the parameter buffer */
for (i = 0; i < ctx->num_internal_frames; i++) { for (i = 0; i < ctx->num_internal_frames; i++) {
u32 y, cb, cr; u32 y, cb, cr, mvcol;
/* Start addresses of Y, Cb, Cr planes */ /* Start addresses of Y, Cb, Cr planes */
y = ctx->internal_frames[i].paddr; y = ctx->internal_frames[i].paddr;
cb = y + ysize; cb = y + ysize;
cr = y + ysize + ysize/4; cr = y + ysize + ysize/4;
mvcol = y + ysize + ysize/4 + ysize/4;
if (ctx->tiled_map_type == GDI_TILED_FRAME_MB_RASTER_MAP) { if (ctx->tiled_map_type == GDI_TILED_FRAME_MB_RASTER_MAP) {
cb = round_up(cb, 4096); cb = round_up(cb, 4096);
mvcol = cb + ysize/2;
cr = 0; cr = 0;
/* Packed 20-bit MSB of base addresses */ /* Packed 20-bit MSB of base addresses */
/* YYYYYCCC, CCyyyyyc, cccc.... */ /* YYYYYCCC, CCyyyyyc, cccc.... */
...@@ -448,9 +450,7 @@ static int coda_alloc_framebuffers(struct coda_ctx *ctx, ...@@ -448,9 +450,7 @@ static int coda_alloc_framebuffers(struct coda_ctx *ctx,
/* mvcol buffer for h.264 */ /* mvcol buffer for h.264 */
if (ctx->codec->src_fourcc == V4L2_PIX_FMT_H264 && if (ctx->codec->src_fourcc == V4L2_PIX_FMT_H264 &&
dev->devtype->product != CODA_DX6) dev->devtype->product != CODA_DX6)
coda_parabuf_write(ctx, 96 + i, coda_parabuf_write(ctx, 96 + i, mvcol);
ctx->internal_frames[i].paddr +
ysize + ysize/4 + ysize/4);
} }
/* mvcol buffer for mpeg4 */ /* mvcol buffer for mpeg4 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment