dma-buf: rk_heaps: export some APIs to user
Change-Id: I2afab36157985623c8c54f65ed47e5acd363947e Signed-off-by: Simon Xue <xxm@rock-chips.com>
This commit is contained in:
@@ -143,6 +143,7 @@ int rk_dma_heap_set_dev(struct device *heap_dev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_set_dev);
|
||||
|
||||
struct rk_dma_heap *rk_dma_heap_find(const char *name)
|
||||
{
|
||||
@@ -159,11 +160,13 @@ struct rk_dma_heap *rk_dma_heap_find(const char *name)
|
||||
mutex_unlock(&rk_heap_list_lock);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_find);
|
||||
|
||||
void rk_dma_heap_buffer_free(struct dma_buf *dmabuf)
|
||||
{
|
||||
dma_buf_put(dmabuf);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_buffer_free);
|
||||
|
||||
struct dma_buf *rk_dma_heap_buffer_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
@@ -185,6 +188,7 @@ struct dma_buf *rk_dma_heap_buffer_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
|
||||
return heap->ops->allocate(heap, len, fd_flags, heap_flags, name);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_buffer_alloc);
|
||||
|
||||
int rk_dma_heap_bufferfd_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
@@ -208,6 +212,7 @@ int rk_dma_heap_bufferfd_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
return fd;
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_bufferfd_alloc);
|
||||
|
||||
struct page *rk_dma_heap_alloc_contig_pages(struct rk_dma_heap *heap,
|
||||
size_t len, const char *name)
|
||||
@@ -223,6 +228,7 @@ struct page *rk_dma_heap_alloc_contig_pages(struct rk_dma_heap *heap,
|
||||
|
||||
return heap->ops->alloc_contig_pages(heap, len, name);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_alloc_contig_pages);
|
||||
|
||||
void rk_dma_heap_free_contig_pages(struct rk_dma_heap *heap,
|
||||
struct page *pages, size_t len,
|
||||
@@ -235,6 +241,7 @@ void rk_dma_heap_free_contig_pages(struct rk_dma_heap *heap,
|
||||
|
||||
return heap->ops->free_contig_pages(heap, pages, len, name);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rk_dma_heap_free_contig_pages);
|
||||
|
||||
void rk_dma_heap_total_inc(struct rk_dma_heap *heap, size_t len)
|
||||
{
|
||||
|
||||
@@ -168,74 +168,6 @@ struct rk_dma_heap *rk_dma_heap_add(const struct rk_dma_heap_export_info *exp_in
|
||||
*/
|
||||
void rk_dma_heap_put(struct rk_dma_heap *heap);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_set_dev - set heap dev dma param
|
||||
* @heap: DMA-Heap to retrieve private data for
|
||||
*
|
||||
* Returns:
|
||||
* Zero on success, ERR_PTR(-errno) on error
|
||||
*/
|
||||
int rk_dma_heap_set_dev(struct device *heap_dev);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_find - Returns the registered dma_heap with the specified name
|
||||
* @name: Name of the heap to find
|
||||
*
|
||||
* NOTE: dma_heaps returned from this function MUST be released
|
||||
* using rk_dma_heap_put() when the user is done.
|
||||
*/
|
||||
struct rk_dma_heap *rk_dma_heap_find(const char *name);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_buffer_alloc - Allocate dma-buf from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @fd_flags: flags to set on returned dma-buf fd
|
||||
* @heap_flags: flags to pass to the dma heap
|
||||
*
|
||||
* This is for internal dma-buf allocations only.
|
||||
*/
|
||||
struct dma_buf *rk_dma_heap_buffer_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name);
|
||||
|
||||
/** rk_dma_heap_buffer_free - Free dma_buf allocated by rk_dma_heap_buffer_alloc
|
||||
* @dma_buf: dma_buf to free
|
||||
*
|
||||
* This is really only a simple wrapper to dma_buf_put()
|
||||
*/
|
||||
void rk_dma_heap_buffer_free(struct dma_buf *dmabuf);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_bufferfd_alloc - Allocate dma-buf fd from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @fd_flags: flags to set on returned dma-buf fd
|
||||
* @heap_flags: flags to pass to the dma heap
|
||||
*/
|
||||
int rk_dma_heap_bufferfd_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_alloc_contig_pages - Allocate contiguous pages from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @name: the name who allocate
|
||||
*/
|
||||
struct page *rk_dma_heap_alloc_contig_pages(struct rk_dma_heap *heap,
|
||||
size_t len, const char *name);
|
||||
/**
|
||||
* rk_dma_heap_free_contig_pages - Free contiguous pages to a dma_heap
|
||||
* @heap: dma_heap to free to
|
||||
* @pages: pages to free to
|
||||
* @len: size to free
|
||||
* @name: the name who allocate
|
||||
*/
|
||||
void rk_dma_heap_free_contig_pages(struct rk_dma_heap *heap,
|
||||
struct page *pages, size_t len, const char *name);
|
||||
/**
|
||||
* rk_vmap_contig_pfn - Map contiguous pfn to vm area
|
||||
* @pfn: indicate the first pfn of contig
|
||||
|
||||
+117
-2
@@ -8,15 +8,130 @@
|
||||
* Author: Simon Xue <xxm@rock-chips.com>
|
||||
*/
|
||||
|
||||
#ifndef _DMA_HEAPS_H
|
||||
#define _DMA_HEAPS_H
|
||||
#ifndef _RK_DMA_HEAPS_H_
|
||||
#define _RK_DMA_HEAPS_H_
|
||||
#include <linux/dma-buf.h>
|
||||
|
||||
struct rk_dma_heap;
|
||||
|
||||
#if defined(CONFIG_DMABUF_HEAPS_ROCKCHIP)
|
||||
int rk_dma_heap_cma_setup(void);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_set_dev - set heap dev dma param
|
||||
* @heap: DMA-Heap to retrieve private data for
|
||||
*
|
||||
* Returns:
|
||||
* Zero on success, ERR_PTR(-errno) on error
|
||||
*/
|
||||
int rk_dma_heap_set_dev(struct device *heap_dev);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_find - Returns the registered dma_heap with the specified name
|
||||
* @name: Name of the heap to find
|
||||
*
|
||||
* NOTE: dma_heaps returned from this function MUST be released
|
||||
* using rk_dma_heap_put() when the user is done.
|
||||
*/
|
||||
struct rk_dma_heap *rk_dma_heap_find(const char *name);
|
||||
|
||||
/** rk_dma_heap_buffer_free - Free dma_buf allocated by rk_dma_heap_buffer_alloc
|
||||
* @dma_buf: dma_buf to free
|
||||
*
|
||||
* This is really only a simple wrapper to dma_buf_put()
|
||||
*/
|
||||
void rk_dma_heap_buffer_free(struct dma_buf *dmabuf);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_buffer_alloc - Allocate dma-buf from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @fd_flags: flags to set on returned dma-buf fd
|
||||
* @heap_flags: flags to pass to the dma heap
|
||||
*
|
||||
* This is for internal dma-buf allocations only.
|
||||
*/
|
||||
struct dma_buf *rk_dma_heap_buffer_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_bufferfd_alloc - Allocate dma-buf fd from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @fd_flags: flags to set on returned dma-buf fd
|
||||
* @heap_flags: flags to pass to the dma heap
|
||||
*/
|
||||
int rk_dma_heap_bufferfd_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_alloc_contig_pages - Allocate contiguous pages from a dma_heap
|
||||
* @heap: dma_heap to allocate from
|
||||
* @len: size to allocate
|
||||
* @name: the name who allocate
|
||||
*/
|
||||
struct page *rk_dma_heap_alloc_contig_pages(struct rk_dma_heap *heap,
|
||||
size_t len, const char *name);
|
||||
|
||||
/**
|
||||
* rk_dma_heap_free_contig_pages - Free contiguous pages to a dma_heap
|
||||
* @heap: dma_heap to free to
|
||||
* @pages: pages to free to
|
||||
* @len: size to free
|
||||
* @name: the name who allocate
|
||||
*/
|
||||
void rk_dma_heap_free_contig_pages(struct rk_dma_heap *heap, struct page *pages,
|
||||
size_t len, const char *name);
|
||||
|
||||
#else
|
||||
static inline int rk_dma_heap_cma_setup(void)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline int rk_dma_heap_set_dev(struct device *heap_dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline struct rk_dma_heap *rk_dma_heap_find(const char *name)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void rk_dma_heap_buffer_free(struct dma_buf *dmabuf)
|
||||
{
|
||||
}
|
||||
|
||||
static inline struct dma_buf *rk_dma_heap_buffer_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int rk_dma_heap_bufferfd_alloc(struct rk_dma_heap *heap, size_t len,
|
||||
unsigned int fd_flags,
|
||||
unsigned int heap_flags,
|
||||
const char *name)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline struct page *rk_dma_heap_alloc_contig_pages(struct rk_dma_heap *heap,
|
||||
size_t len, const char *name)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void rk_dma_heap_free_contig_pages(struct rk_dma_heap *heap, struct page *pages,
|
||||
size_t len, const char *name)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif /* _DMA_HEAPS_H */
|
||||
|
||||
Reference in New Issue
Block a user