| /* 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/cdev.h> | |
| #include <linux/types.h> | |
| struct dma_heap; | |
| /** | |
| * struct dma_heap_ops - ops to operate on a given heap | |
| * @allocate: allocate dmabuf and return fd | |
| * | |
| * allocate returns dmabuf fd on success, -errno on error. | |
| */ | |
| struct dma_heap_ops { | |
| int (*allocate)(struct dma_heap *heap, | |
| unsigned long len, | |
| unsigned long fd_flags, | |
| unsigned long 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; | |
| }; | |
| /** | |
| * dma_heap_get_drvdata() - get per-heap driver data | |
| * @heap: DMA-Heap to retrieve private data for | |
| * | |
| * Returns: | |
| * The per-heap data for the heap. | |
| */ | |
| void *dma_heap_get_drvdata(struct dma_heap *heap); | |
| /** | |
| * dma_heap_add - adds a heap to dmabuf heaps | |
| * @exp_info: information needed to register this heap | |
| */ | |
| struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info); | |
| #endif /* _DMA_HEAPS_H */ |