v4l/s5p-mfc: added DMABUF support for encoder

Message ID 1344936573-8164-1-git-send-email-a.hajda@samsung.com (mailing list archive)
State RFC, archived
Headers

Commit Message

Andrzej Hajda Aug. 14, 2012, 9:29 a.m. UTC
  Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
Patch cleanly applies after patch
http://patchwork.linuxtv.org/patch/13797/
---
 drivers/media/video/s5p-mfc/s5p_mfc.c     |    4 ++--
 drivers/media/video/s5p-mfc/s5p_mfc_enc.c |    3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)
  

Comments

Kamil Debski Aug. 14, 2012, 10:37 a.m. UTC | #1
Hi Andrzej,

Thank you for your patch.

Best wishes,
--
Kamil Debski
Linux Platform Group
Samsung Poland R&D Center


> From: Andrzej Hajda [mailto:a.hajda@samsung.com]
> Sent: 14 August 2012 11:30
> 
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>

Acked-by: Kamil Debski <k.debski@samsung.com>

> ---
> Patch cleanly applies after patch
> http://patchwork.linuxtv.org/patch/13797/
> ---
>  drivers/media/video/s5p-mfc/s5p_mfc.c     |    4 ++--
>  drivers/media/video/s5p-mfc/s5p_mfc_enc.c |    3 ++-
>  2 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/video/s5p-mfc/s5p_mfc.c
b/drivers/media/video/s5p-
> mfc/s5p_mfc.c
> index e5c2b80..ab7b74c 100644
> --- a/drivers/media/video/s5p-mfc/s5p_mfc.c
> +++ b/drivers/media/video/s5p-mfc/s5p_mfc.c
> @@ -801,7 +801,7 @@ static int s5p_mfc_open(struct file *file)
>  		q->io_modes = VB2_MMAP;
>  		q->ops = get_dec_queue_ops();
>  	} else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
> -		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;
> @@ -822,7 +822,7 @@ static int s5p_mfc_open(struct file *file)
>  		q->io_modes = VB2_MMAP;
>  		q->ops = get_dec_queue_ops();
>  	} else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
> -		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/video/s5p-mfc/s5p_mfc_enc.c
> b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
> index 53c305d..b1a5f85 100644
> --- a/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
> +++ b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
> @@ -1028,7 +1028,8 @@ static int vidioc_reqbufs(struct file *file, void
*priv,
> 
>  	/* if memory is not mmp or userptr 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 (ctx->capture_state != QUEUE_FREE) {
> --
> 1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/media/video/s5p-mfc/s5p_mfc.c b/drivers/media/video/s5p-mfc/s5p_mfc.c
index e5c2b80..ab7b74c 100644
--- a/drivers/media/video/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/video/s5p-mfc/s5p_mfc.c
@@ -801,7 +801,7 @@  static int s5p_mfc_open(struct file *file)
 		q->io_modes = VB2_MMAP;
 		q->ops = get_dec_queue_ops();
 	} else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
-		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;
@@ -822,7 +822,7 @@  static int s5p_mfc_open(struct file *file)
 		q->io_modes = VB2_MMAP;
 		q->ops = get_dec_queue_ops();
 	} else if (s5p_mfc_get_node_type(file) == MFCNODE_ENCODER) {
-		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/video/s5p-mfc/s5p_mfc_enc.c b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
index 53c305d..b1a5f85 100644
--- a/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
+++ b/drivers/media/video/s5p-mfc/s5p_mfc_enc.c
@@ -1028,7 +1028,8 @@  static int vidioc_reqbufs(struct file *file, void *priv,
 
 	/* if memory is not mmp or userptr 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 (ctx->capture_state != QUEUE_FREE) {