mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-10 21:35:08 +00:00
[media] coda: move parameter buffer in together with context buffer allocation
The parameter buffer is a per-context buffer, so we can allocate and free it together with the other context buffers during REQBUFS. Since this was the last context buffer allocated in coda-common.c, we can now move coda_alloc_context_buf into coda-bit.c. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Kamil Debski <k.debski@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
ad532d37b2
commit
650b939ecd
@ -31,6 +31,7 @@
|
||||
|
||||
#include "coda.h"
|
||||
|
||||
#define CODA_PARA_BUF_SIZE (10 * 1024)
|
||||
#define CODA7_PS_BUF_SIZE 0x28000
|
||||
#define CODA9_PS_SAVE_SIZE (512 * 1024)
|
||||
|
||||
@ -300,6 +301,14 @@ static void coda_parabuf_write(struct coda_ctx *ctx, int index, u32 value)
|
||||
p[index ^ 1] = value;
|
||||
}
|
||||
|
||||
static inline int coda_alloc_context_buf(struct coda_ctx *ctx,
|
||||
struct coda_aux_buf *buf, size_t size,
|
||||
const char *name)
|
||||
{
|
||||
return coda_alloc_aux_buf(ctx->dev, buf, size, name, ctx->debugfs_entry);
|
||||
}
|
||||
|
||||
|
||||
static void coda_free_framebuffers(struct coda_ctx *ctx)
|
||||
{
|
||||
int i;
|
||||
@ -380,6 +389,7 @@ static void coda_free_context_buffers(struct coda_ctx *ctx)
|
||||
coda_free_aux_buf(dev, &ctx->psbuf);
|
||||
if (dev->devtype->product != CODA_DX6)
|
||||
coda_free_aux_buf(dev, &ctx->workbuf);
|
||||
coda_free_aux_buf(dev, &ctx->parabuf);
|
||||
}
|
||||
|
||||
static int coda_alloc_context_buffers(struct coda_ctx *ctx,
|
||||
@ -389,6 +399,15 @@ static int coda_alloc_context_buffers(struct coda_ctx *ctx,
|
||||
size_t size;
|
||||
int ret;
|
||||
|
||||
if (!ctx->parabuf.vaddr) {
|
||||
ret = coda_alloc_context_buf(ctx, &ctx->parabuf,
|
||||
CODA_PARA_BUF_SIZE, "parabuf");
|
||||
if (ret < 0) {
|
||||
v4l2_err(&dev->v4l2_dev, "failed to allocate parabuf");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (dev->devtype->product == CODA_DX6)
|
||||
return 0;
|
||||
|
||||
@ -402,7 +421,7 @@ static int coda_alloc_context_buffers(struct coda_ctx *ctx,
|
||||
v4l2_err(&dev->v4l2_dev,
|
||||
"failed to allocate %d byte slice buffer",
|
||||
ctx->slicebuf.size);
|
||||
return ret;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,6 @@
|
||||
#define CODADX6_MAX_INSTANCES 4
|
||||
#define CODA_MAX_FORMATS 4
|
||||
|
||||
#define CODA_PARA_BUF_SIZE (10 * 1024)
|
||||
#define CODA_ISRAM_SIZE (2048 * 2)
|
||||
|
||||
#define MIN_W 176
|
||||
@ -1715,14 +1714,6 @@ static int coda_open(struct file *file)
|
||||
|
||||
ctx->fh.ctrl_handler = &ctx->ctrls;
|
||||
|
||||
if (ctx->use_bit) {
|
||||
ret = coda_alloc_context_buf(ctx, &ctx->parabuf,
|
||||
CODA_PARA_BUF_SIZE, "parabuf");
|
||||
if (ret < 0) {
|
||||
v4l2_err(&dev->v4l2_dev, "failed to allocate parabuf");
|
||||
goto err_dma_alloc;
|
||||
}
|
||||
}
|
||||
mutex_init(&ctx->bitstream_mutex);
|
||||
mutex_init(&ctx->buffer_mutex);
|
||||
INIT_LIST_HEAD(&ctx->buffer_meta_list);
|
||||
@ -1736,8 +1727,6 @@ static int coda_open(struct file *file)
|
||||
|
||||
return 0;
|
||||
|
||||
err_dma_alloc:
|
||||
v4l2_ctrl_handler_free(&ctx->ctrls);
|
||||
err_ctrls_setup:
|
||||
v4l2_m2m_ctx_release(ctx->fh.m2m_ctx);
|
||||
err_ctx_init:
|
||||
@ -1783,7 +1772,6 @@ static int coda_release(struct file *file)
|
||||
if (ctx->dev->devtype->product == CODA_DX6)
|
||||
coda_free_aux_buf(dev, &ctx->workbuf);
|
||||
|
||||
coda_free_aux_buf(dev, &ctx->parabuf);
|
||||
v4l2_ctrl_handler_free(&ctx->ctrls);
|
||||
clk_disable_unprepare(dev->clk_ahb);
|
||||
clk_disable_unprepare(dev->clk_per);
|
||||
|
@ -249,13 +249,6 @@ int coda_alloc_aux_buf(struct coda_dev *dev, struct coda_aux_buf *buf,
|
||||
size_t size, const char *name, struct dentry *parent);
|
||||
void coda_free_aux_buf(struct coda_dev *dev, struct coda_aux_buf *buf);
|
||||
|
||||
static inline int coda_alloc_context_buf(struct coda_ctx *ctx,
|
||||
struct coda_aux_buf *buf, size_t size,
|
||||
const char *name)
|
||||
{
|
||||
return coda_alloc_aux_buf(ctx->dev, buf, size, name, ctx->debugfs_entry);
|
||||
}
|
||||
|
||||
int coda_encoder_queue_init(void *priv, struct vb2_queue *src_vq,
|
||||
struct vb2_queue *dst_vq);
|
||||
int coda_decoder_queue_init(void *priv, struct vb2_queue *src_vq,
|
||||
|
Loading…
x
Reference in New Issue
Block a user