Commit 40d8b766 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

[media] v4l: vb2-dma-contig: reorder functions



Group functions by buffer type.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 72f86bff
Loading
Loading
Loading
Loading
+54 −38
Original line number Original line Diff line number Diff line
@@ -25,14 +25,56 @@ struct vb2_dc_conf {
struct vb2_dc_buf {
struct vb2_dc_buf {
	struct device			*dev;
	struct device			*dev;
	void				*vaddr;
	void				*vaddr;
	dma_addr_t			dma_addr;
	unsigned long			size;
	unsigned long			size;
	struct vm_area_struct		*vma;
	dma_addr_t			dma_addr;
	atomic_t			refcount;

	/* MMAP related */
	struct vb2_vmarea_handler	handler;
	struct vb2_vmarea_handler	handler;
	atomic_t			refcount;

	/* USERPTR related */
	struct vm_area_struct		*vma;
};
};


static void vb2_dc_put(void *buf_priv);
/*********************************************/
/*         callbacks for all buffers         */
/*********************************************/

static void *vb2_dc_cookie(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	return &buf->dma_addr;
}

static void *vb2_dc_vaddr(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	return buf->vaddr;
}

static unsigned int vb2_dc_num_users(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	return atomic_read(&buf->refcount);
}

/*********************************************/
/*        callbacks for MMAP buffers         */
/*********************************************/

static void vb2_dc_put(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	if (!atomic_dec_and_test(&buf->refcount))
		return;

	dma_free_coherent(buf->dev, buf->size, buf->vaddr, buf->dma_addr);
	kfree(buf);
}


static void *vb2_dc_alloc(void *alloc_ctx, unsigned long size)
static void *vb2_dc_alloc(void *alloc_ctx, unsigned long size)
{
{
@@ -63,40 +105,6 @@ static void *vb2_dc_alloc(void *alloc_ctx, unsigned long size)
	return buf;
	return buf;
}
}


static void vb2_dc_put(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	if (atomic_dec_and_test(&buf->refcount)) {
		dma_free_coherent(buf->dev, buf->size, buf->vaddr,
				  buf->dma_addr);
		kfree(buf);
	}
}

static void *vb2_dc_cookie(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	return &buf->dma_addr;
}

static void *vb2_dc_vaddr(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;
	if (!buf)
		return NULL;

	return buf->vaddr;
}

static unsigned int vb2_dc_num_users(void *buf_priv)
{
	struct vb2_dc_buf *buf = buf_priv;

	return atomic_read(&buf->refcount);
}

static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
{
{
	struct vb2_dc_buf *buf = buf_priv;
	struct vb2_dc_buf *buf = buf_priv;
@@ -110,6 +118,10 @@ static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
				  &vb2_common_vm_ops, &buf->handler);
				  &vb2_common_vm_ops, &buf->handler);
}
}


/*********************************************/
/*       callbacks for USERPTR buffers       */
/*********************************************/

static void *vb2_dc_get_userptr(void *alloc_ctx, unsigned long vaddr,
static void *vb2_dc_get_userptr(void *alloc_ctx, unsigned long vaddr,
					unsigned long size, int write)
					unsigned long size, int write)
{
{
@@ -148,6 +160,10 @@ static void vb2_dc_put_userptr(void *mem_priv)
	kfree(buf);
	kfree(buf);
}
}


/*********************************************/
/*       DMA CONTIG exported functions       */
/*********************************************/

const struct vb2_mem_ops vb2_dma_contig_memops = {
const struct vb2_mem_ops vb2_dma_contig_memops = {
	.alloc		= vb2_dc_alloc,
	.alloc		= vb2_dc_alloc,
	.put		= vb2_dc_put,
	.put		= vb2_dc_put,