Commit | Line | Data |
---|---|---|
c02a81fb AD |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* | |
3 | * DMABUF Heaps Allocation Infrastructure | |
4 | * | |
5 | * Copyright (C) 2011 Google, Inc. | |
6 | * Copyright (C) 2019 Linaro Ltd. | |
7 | */ | |
8 | ||
9 | #ifndef _DMA_HEAPS_H | |
10 | #define _DMA_HEAPS_H | |
11 | ||
12 | #include <linux/cdev.h> | |
13 | #include <linux/types.h> | |
14 | ||
15 | struct dma_heap; | |
16 | ||
17 | /** | |
18 | * struct dma_heap_ops - ops to operate on a given heap | |
c7f59e3d | 19 | * @allocate: allocate dmabuf and return struct dma_buf ptr |
c02a81fb | 20 | * |
c7f59e3d | 21 | * allocate returns dmabuf on success, ERR_PTR(-errno) on error. |
c02a81fb AD |
22 | */ |
23 | struct dma_heap_ops { | |
c7f59e3d JS |
24 | struct dma_buf *(*allocate)(struct dma_heap *heap, |
25 | unsigned long len, | |
26 | unsigned long fd_flags, | |
27 | unsigned long heap_flags); | |
c02a81fb AD |
28 | }; |
29 | ||
30 | /** | |
31 | * struct dma_heap_export_info - information needed to export a new dmabuf heap | |
32 | * @name: used for debugging/device-node name | |
33 | * @ops: ops struct for this heap | |
34 | * @priv: heap exporter private data | |
35 | * | |
36 | * Information needed to export a new dmabuf heap. | |
37 | */ | |
38 | struct dma_heap_export_info { | |
39 | const char *name; | |
40 | const struct dma_heap_ops *ops; | |
41 | void *priv; | |
42 | }; | |
43 | ||
44 | /** | |
45 | * dma_heap_get_drvdata() - get per-heap driver data | |
46 | * @heap: DMA-Heap to retrieve private data for | |
47 | * | |
48 | * Returns: | |
49 | * The per-heap data for the heap. | |
50 | */ | |
51 | void *dma_heap_get_drvdata(struct dma_heap *heap); | |
52 | ||
98cd02da JS |
53 | /** |
54 | * dma_heap_get_name() - get heap name | |
55 | * @heap: DMA-Heap to retrieve private data for | |
56 | * | |
57 | * Returns: | |
58 | * The char* for the heap name. | |
59 | */ | |
60 | const char *dma_heap_get_name(struct dma_heap *heap); | |
61 | ||
c02a81fb AD |
62 | /** |
63 | * dma_heap_add - adds a heap to dmabuf heaps | |
64 | * @exp_info: information needed to register this heap | |
65 | */ | |
66 | struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info); | |
67 | ||
68 | #endif /* _DMA_HEAPS_H */ |