mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
media: s5p-mfc: Add support for DMABUF for encoder
Add dmabuf support for mfc encoder Cc: linux-fsd@tesla.com Signed-off-by: Smitha T Murthy <smithatmurthy@gmail.com> Signed-off-by: Aakarsh Jain <aakarsh.jain@samsung.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
15fe06f7dc
commit
ff3f449062
@ -865,7 +865,7 @@ static int s5p_mfc_open(struct file *file)
|
||||
q->io_modes = VB2_MMAP;
|
||||
q->ops = get_dec_queue_ops();
|
||||
} else if (vdev == dev->vfd_enc) {
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
|
||||
q->ops = get_enc_queue_ops();
|
||||
} else {
|
||||
ret = -ENOENT;
|
||||
@ -892,7 +892,7 @@ static int s5p_mfc_open(struct file *file)
|
||||
q->io_modes = VB2_MMAP;
|
||||
q->ops = get_dec_queue_ops();
|
||||
} else if (vdev == dev->vfd_enc) {
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR;
|
||||
q->io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF;
|
||||
q->ops = get_enc_queue_ops();
|
||||
} else {
|
||||
ret = -ENOENT;
|
||||
|
@ -1538,9 +1538,10 @@ static int vidioc_reqbufs(struct file *file, void *priv,
|
||||
struct s5p_mfc_ctx *ctx = fh_to_ctx(priv);
|
||||
int ret = 0;
|
||||
|
||||
/* if memory is not mmp or userptr return error */
|
||||
/* if memory is not mmp or userptr or dmabuf return error */
|
||||
if ((reqbufs->memory != V4L2_MEMORY_MMAP) &&
|
||||
(reqbufs->memory != V4L2_MEMORY_USERPTR))
|
||||
(reqbufs->memory != V4L2_MEMORY_USERPTR) &&
|
||||
(reqbufs->memory != V4L2_MEMORY_DMABUF))
|
||||
return -EINVAL;
|
||||
if (reqbufs->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
|
||||
if (reqbufs->count == 0) {
|
||||
@ -1617,9 +1618,10 @@ static int vidioc_querybuf(struct file *file, void *priv,
|
||||
struct s5p_mfc_ctx *ctx = fh_to_ctx(priv);
|
||||
int ret = 0;
|
||||
|
||||
/* if memory is not mmp or userptr return error */
|
||||
/* if memory is not mmp or userptr or dmabuf return error */
|
||||
if ((buf->memory != V4L2_MEMORY_MMAP) &&
|
||||
(buf->memory != V4L2_MEMORY_USERPTR))
|
||||
(buf->memory != V4L2_MEMORY_USERPTR) &&
|
||||
(buf->memory != V4L2_MEMORY_DMABUF))
|
||||
return -EINVAL;
|
||||
if (buf->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) {
|
||||
if (ctx->state != MFCINST_GOT_INST) {
|
||||
@ -2581,11 +2583,11 @@ static int s5p_mfc_start_streaming(struct vb2_queue *q, unsigned int count)
|
||||
S5P_MFC_R2H_CMD_SEQ_DONE_RET,
|
||||
0);
|
||||
}
|
||||
|
||||
if (ctx->src_bufs_cnt < ctx->pb_count) {
|
||||
mfc_err("Need minimum %d OUTPUT buffers\n",
|
||||
ctx->pb_count);
|
||||
return -ENOBUFS;
|
||||
if (q->memory != V4L2_MEMORY_DMABUF) {
|
||||
if (ctx->src_bufs_cnt < ctx->pb_count) {
|
||||
mfc_err("Need minimum %d OUTPUT buffers\n", ctx->pb_count);
|
||||
return -ENOBUFS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user