[COMMON] media: mfc: move to the new dma-buf-container
authorCho KyongHo <pullip.cho@samsung.com>
Fri, 13 Apr 2018 05:02:46 +0000 (14:02 +0900)
committerSunyoung Kang <sy0816.kang@samsung.com>
Tue, 29 May 2018 06:59:18 +0000 (15:59 +0900)
The new, working dma-buf-container is introduced by the commit
ee1d9055d ('dma-buf: introduce dma-buf container'). It still supports
the same API functions but the contexts are slightly changed because
the design of dma-buf-container is changed.

Specifically, dmabuf_container_get_count() now returns -EINVAL instead
of 0 for the dma-bufs that is not a dma-buf-container. This change of
return value comes from the fact that dma-buf-container allows having
no dma-buf by its design although it is impossible to create an empty
dma-buf-container in practice.

Change-Id: I38b7534b2e0bb30e8ec331d019a089736d847dbe
Signed-off-by: Cho KyongHo <pullip.cho@samsung.com>
drivers/media/platform/exynos/mfc/s5p_mfc_common.h
drivers/media/platform/exynos/mfc/s5p_mfc_enc_vb2_ops.c

index ae107bf7bf7a7ec9c4640b457a265da9479d3836..927992ac5b89b3a2ae7580951a57c6b5ee14c555 100644 (file)
@@ -18,7 +18,7 @@
 #include <linux/slab.h>
 #include <linux/sched/clock.h>
 #include <linux/ion_exynos.h>
-#include <linux/dmabuf_container.h>
+#include <linux/dma-buf-container.h>
 #include <media/videobuf2-dma-sg.h>
 #include <asm/cacheflush.h>
 
index df3bfe47aba4e196b2acdb0ced62b6e67cfd056c..2917b444a2d00bc0d7a97779e2f543ee7f5897ce 100644 (file)
@@ -204,6 +204,15 @@ static int s5p_mfc_enc_buf_prepare(struct vb2_buffer *vb)
 
                        buf->num_bufs_in_vb = s5p_mfc_bufcon_get_buf_count(dmabuf);
                        mfc_debug(3, "bufcon count:%d\n", buf->num_bufs_in_vb);
+                       if (buf->num_bufs_in_vb == 0) {
+                               mfc_err_ctx("bufcon count couldn't be zero\n");
+                               s5p_mfc_mem_put_dmabuf(dmabuf);
+                               return -ENOMEM;
+                       }
+
+                       if (buf->num_bufs_in_vb < 0)
+                               buf->num_bufs_in_vb = 0;
+
                        if (!ctx->batch_mode && buf->num_bufs_in_vb > 0) {
                                ctx->batch_mode = 1;
                                mfc_debug(3, "buffer batch mode enabled\n");