This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: s5p-mfc: Add support for DMABUF for encoder
Author:  Aakarsh Jain <[email protected]>
Date:    Wed Dec 13 13:41:02 2023 +0530

Add dmabuf support for mfc encoder

Cc: [email protected]
Signed-off-by: Smitha T Murthy <[email protected]>
Signed-off-by: Aakarsh Jain <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>

 drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c     |  4 ++--
 drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c | 20 +++++++++++---------
 2 files changed, 13 insertions(+), 11 deletions(-)

---

diff --git a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c 
b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
index dee9ef017997..bd055dea827e 100644
--- a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
@@ -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;
diff --git a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c 
b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c
index 67fe0302464f..ae3764969473 100644
--- a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c
@@ -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;
+                       }
                }
        }
 

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to