Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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/types.h>
13
14struct dma_heap;
15
16/**
17 * struct dma_heap_ops - ops to operate on a given heap
18 * @allocate: allocate dmabuf and return struct dma_buf ptr
19 *
20 * allocate returns dmabuf on success, ERR_PTR(-errno) on error.
21 */
22struct dma_heap_ops {
23 struct dma_buf *(*allocate)(struct dma_heap *heap,
24 unsigned long len,
25 u32 fd_flags,
26 u64 heap_flags);
27};
28
29/**
30 * struct dma_heap_export_info - information needed to export a new dmabuf heap
31 * @name: used for debugging/device-node name
32 * @ops: ops struct for this heap
33 * @priv: heap exporter private data
34 *
35 * Information needed to export a new dmabuf heap.
36 */
37struct dma_heap_export_info {
38 const char *name;
39 const struct dma_heap_ops *ops;
40 void *priv;
41};
42
43void *dma_heap_get_drvdata(struct dma_heap *heap);
44
45const char *dma_heap_get_name(struct dma_heap *heap);
46
47struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info);
48
49#endif /* _DMA_HEAPS_H */