diff options
Diffstat (limited to 'include/linux/dma-heap.h')
| -rw-r--r-- | include/linux/dma-heap.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/linux/dma-heap.h b/include/linux/dma-heap.h new file mode 100644 index 000000000000..27d15f60950a --- /dev/null +++ b/include/linux/dma-heap.h @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * DMABUF Heaps Allocation Infrastructure + * + * Copyright (C) 2011 Google, Inc. + * Copyright (C) 2019 Linaro Ltd. + */ + +#ifndef _DMA_HEAPS_H +#define _DMA_HEAPS_H + +#include <linux/types.h> + +struct dma_heap; + +/** + * struct dma_heap_ops - ops to operate on a given heap + * @allocate: allocate dmabuf and return struct dma_buf ptr + * + * allocate returns dmabuf on success, ERR_PTR(-errno) on error. + */ +struct dma_heap_ops { + struct dma_buf *(*allocate)(struct dma_heap *heap, + unsigned long len, + u32 fd_flags, + u64 heap_flags); +}; + +/** + * struct dma_heap_export_info - information needed to export a new dmabuf heap + * @name: used for debugging/device-node name + * @ops: ops struct for this heap + * @priv: heap exporter private data + * + * Information needed to export a new dmabuf heap. + */ +struct dma_heap_export_info { + const char *name; + const struct dma_heap_ops *ops; + void *priv; +}; + +void *dma_heap_get_drvdata(struct dma_heap *heap); + +const char *dma_heap_get_name(struct dma_heap *heap); + +struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info); + +#endif /* _DMA_HEAPS_H */ |
