All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Stanislawski <t.stanislaws@samsung.com>
To: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org
Cc: airlied@redhat.com, m.szyprowski@samsung.com,
	t.stanislaws@samsung.com, kyungmin.park@samsung.com,
	laurent.pinchart@ideasonboard.com, sumit.semwal@ti.com,
	daeinki@gmail.com, daniel.vetter@ffwll.ch, robdclark@gmail.com,
	pawel@osciak.com, linaro-mm-sig@lists.linaro.org,
	hverkuil@xs4all.nl, remi@remlab.net, subashrp@gmail.com,
	mchehab@redhat.com, zhangfei.gao@gmail.com,
	s.nawrocki@samsung.com, k.debski@samsung.com,
	Sumit Semwal <sumit.semwal@linaro.org>
Subject: [PATCHv10 01/26] v4l: Add DMABUF as a memory type
Date: Wed, 10 Oct 2012 16:46:20 +0200	[thread overview]
Message-ID: <1349880405-26049-2-git-send-email-t.stanislaws@samsung.com> (raw)
In-Reply-To: <1349880405-26049-1-git-send-email-t.stanislaws@samsung.com>

From: Sumit Semwal <sumit.semwal@ti.com>

Adds DMABUF memory type to v4l framework. Also adds the related file
descriptor in v4l2_plane and v4l2_buffer.

Signed-off-by: Tomasz Stanislawski <t.stanislaws@samsung.com>
   [original work in the PoC for buffer sharing]
Signed-off-by: Sumit Semwal <sumit.semwal@ti.com>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
---
 drivers/media/v4l2-core/v4l2-compat-ioctl32.c |   18 ++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ioctl.c          |    1 +
 include/linux/videodev2.h                     |    7 +++++++
 3 files changed, 26 insertions(+)

diff --git a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
index 83ffb64..cc5998b 100644
--- a/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
+++ b/drivers/media/v4l2-core/v4l2-compat-ioctl32.c
@@ -297,6 +297,7 @@ struct v4l2_plane32 {
 	union {
 		__u32		mem_offset;
 		compat_long_t	userptr;
+		__s32		fd;
 	} m;
 	__u32			data_offset;
 	__u32			reserved[11];
@@ -318,6 +319,7 @@ struct v4l2_buffer32 {
 		__u32           offset;
 		compat_long_t   userptr;
 		compat_caddr_t  planes;
+		__s32		fd;
 	} m;
 	__u32			length;
 	__u32			reserved2;
@@ -341,6 +343,9 @@ static int get_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
 		up_pln = compat_ptr(p);
 		if (put_user((unsigned long)up_pln, &up->m.userptr))
 			return -EFAULT;
+	} else if (memory == V4L2_MEMORY_DMABUF) {
+		if (copy_in_user(&up->m.fd, &up32->m.fd, sizeof(int)))
+			return -EFAULT;
 	} else {
 		if (copy_in_user(&up->m.mem_offset, &up32->m.mem_offset,
 					sizeof(__u32)))
@@ -364,6 +369,11 @@ static int put_v4l2_plane32(struct v4l2_plane *up, struct v4l2_plane32 *up32,
 		if (copy_in_user(&up32->m.mem_offset, &up->m.mem_offset,
 					sizeof(__u32)))
 			return -EFAULT;
+	/* For DMABUF, driver might've set up the fd, so copy it back. */
+	if (memory == V4L2_MEMORY_DMABUF)
+		if (copy_in_user(&up32->m.fd, &up->m.fd,
+					sizeof(int)))
+			return -EFAULT;
 
 	return 0;
 }
@@ -446,6 +456,10 @@ static int get_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
 			if (get_user(kp->m.offset, &up->m.offset))
 				return -EFAULT;
 			break;
+		case V4L2_MEMORY_DMABUF:
+			if (get_user(kp->m.fd, &up->m.fd))
+				return -EFAULT;
+			break;
 		}
 	}
 
@@ -510,6 +524,10 @@ static int put_v4l2_buffer32(struct v4l2_buffer *kp, struct v4l2_buffer32 __user
 			if (put_user(kp->m.offset, &up->m.offset))
 				return -EFAULT;
 			break;
+		case V4L2_MEMORY_DMABUF:
+			if (put_user(kp->m.fd, &up->m.fd))
+				return -EFAULT;
+			break;
 		}
 	}
 
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 8f388ff..530a67e 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -155,6 +155,7 @@ static const char *v4l2_memory_names[] = {
 	[V4L2_MEMORY_MMAP]    = "mmap",
 	[V4L2_MEMORY_USERPTR] = "userptr",
 	[V4L2_MEMORY_OVERLAY] = "overlay",
+	[V4L2_MEMORY_DMABUF] = "dmabuf",
 };
 
 #define prt_names(a, arr) (((unsigned)(a)) < ARRAY_SIZE(arr) ? arr[a] : "unknown")
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 873adbe..07bc5d6 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -188,6 +188,7 @@ enum v4l2_memory {
 	V4L2_MEMORY_MMAP             = 1,
 	V4L2_MEMORY_USERPTR          = 2,
 	V4L2_MEMORY_OVERLAY          = 3,
+	V4L2_MEMORY_DMABUF           = 4,
 };
 
 /* see also http://vektor.theorem.ca/graphics/ycbcr/ */
@@ -604,6 +605,8 @@ struct v4l2_requestbuffers {
  *			should be passed to mmap() called on the video node)
  * @userptr:		when memory is V4L2_MEMORY_USERPTR, a userspace pointer
  *			pointing to this plane
+ * @fd:			when memory is V4L2_MEMORY_DMABUF, a userspace file
+ *			descriptor associated with this plane
  * @data_offset:	offset in the plane to the start of data; usually 0,
  *			unless there is a header in front of the data
  *
@@ -618,6 +621,7 @@ struct v4l2_plane {
 	union {
 		__u32		mem_offset;
 		unsigned long	userptr;
+		__s32		fd;
 	} m;
 	__u32			data_offset;
 	__u32			reserved[11];
@@ -642,6 +646,8 @@ struct v4l2_plane {
  *		(or a "cookie" that should be passed to mmap() as offset)
  * @userptr:	for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
  *		a userspace pointer pointing to this buffer
+ * @fd:		for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;
+ *		a userspace file descriptor associated with this buffer
  * @planes:	for multiplanar buffers; userspace pointer to the array of plane
  *		info structs for this buffer
  * @length:	size in bytes of the buffer (NOT its payload) for single-plane
@@ -668,6 +674,7 @@ struct v4l2_buffer {
 		__u32           offset;
 		unsigned long   userptr;
 		struct v4l2_plane *planes;
+		__s32		fd;
 	} m;
 	__u32			length;
 	__u32			reserved2;
-- 
1.7.9.5


  reply	other threads:[~2012-10-10 14:47 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-10 14:46 [PATCHv10 00/26] Integration of videobuf2 with DMABUF Tomasz Stanislawski
2012-10-10 14:46 ` Tomasz Stanislawski [this message]
2012-10-10 14:46 ` [PATCHv10 02/26] Documentation: media: description of DMABUF importing in V4L2 Tomasz Stanislawski
2012-10-15  7:53   ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 03/26] v4l: vb2: add support for shared buffer (dma_buf) Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 04/26] v4l: vb: remove warnings about MEMORY_DMABUF Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 05/26] v4l: vb2-dma-contig: shorten vb2_dma_contig prefix to vb2_dc Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 06/26] v4l: vb2-dma-contig: remove reference of alloc_ctx from a buffer Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 07/26] v4l: vb2-dma-contig: reorder functions Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 08/26] v4l: vb2-dma-contig: add support for scatterlist in userptr mode Tomasz Stanislawski
2012-10-26 16:24   ` Pawel Osciak
2012-10-30  6:43     ` Marek Szyprowski
2012-10-10 14:46 ` [PATCHv10 09/26] v4l: vb2: add prepare/finish callbacks to allocators Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 10/26] v4l: vb2-dma-contig: add prepare/finish to dma-contig allocator Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 11/26] v4l: vb2-dma-contig: add support for dma_buf importing Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 12/26] v4l: vb2-vmalloc: add support for dmabuf importing Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 13/26] v4l: vivi: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 14/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 15/26] v4l: s5p-fimc: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 16/26] v4l: vb2-dma-contig: let mmap method to use dma_mmap_coherent call Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 17/26] Documentation: media: description of DMABUF exporting in V4L2 Tomasz Stanislawski
2012-10-15  7:59   ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 18/26] v4l: add buffer exporting via dmabuf Tomasz Stanislawski
2012-10-15  8:01   ` Hans Verkuil
2012-10-10 14:46 ` [PATCHv10 19/26] v4l: vb2: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 20/26] v4l: vb2-dma-contig: add support for DMABUF exporting Tomasz Stanislawski
2012-10-11 21:46   ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 21/26] v4l: vb2-dma-contig: add reference counting for a device from allocator context Tomasz Stanislawski
2012-10-11 21:49   ` Laurent Pinchart
2012-10-12  6:28     ` Tomasz Stanislawski
2012-10-12  9:32       ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 22/26] v4l: vb2-dma-contig: fail if user ptr buffer is not correctly aligned Tomasz Stanislawski
2012-10-11 21:36   ` Laurent Pinchart
2012-10-12  7:44     ` Tomasz Stanislawski
2012-10-12  7:58       ` Hans Verkuil
2012-10-12  9:34       ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 23/26] v4l: vb2-dma-contig: align buffer size to PAGE_SIZE Tomasz Stanislawski
2012-10-11 21:31   ` Laurent Pinchart
2012-10-12  8:24     ` Tomasz Stanislawski
2012-10-16 12:22       ` Laurent Pinchart
2012-10-10 14:46 ` [PATCHv10 24/26] v4l: s5p-fimc: support for dmabuf exporting Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 25/26] v4l: s5p-tv: mixer: " Tomasz Stanislawski
2012-10-10 14:46 ` [PATCHv10 26/26] v4l: s5p-mfc: " Tomasz Stanislawski
2012-11-08 12:05 ` [PATCH 27/26] v4l: vb2: Set data_offset to 0 for single-plane buffers Laurent Pinchart
2012-11-08 12:13   ` Marek Szyprowski
2012-11-08 12:19     ` Laurent Pinchart
2012-11-08 15:28       ` Tomasz Stanislawski
2012-11-08 16:36         ` Laurent Pinchart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1349880405-26049-2-git-send-email-t.stanislaws@samsung.com \
    --to=t.stanislaws@samsung.com \
    --cc=airlied@redhat.com \
    --cc=daeinki@gmail.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hverkuil@xs4all.nl \
    --cc=k.debski@samsung.com \
    --cc=kyungmin.park@samsung.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-media@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=mchehab@redhat.com \
    --cc=pawel@osciak.com \
    --cc=remi@remlab.net \
    --cc=robdclark@gmail.com \
    --cc=s.nawrocki@samsung.com \
    --cc=subashrp@gmail.com \
    --cc=sumit.semwal@linaro.org \
    --cc=sumit.semwal@ti.com \
    --cc=zhangfei.gao@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.