xref: /linux/include/uapi/linux/dma-heap.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
1c02a81fbSAndrew F. Davis /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2c02a81fbSAndrew F. Davis /*
3c02a81fbSAndrew F. Davis  * DMABUF Heaps Userspace API
4c02a81fbSAndrew F. Davis  *
5c02a81fbSAndrew F. Davis  * Copyright (C) 2011 Google, Inc.
6c02a81fbSAndrew F. Davis  * Copyright (C) 2019 Linaro Ltd.
7c02a81fbSAndrew F. Davis  */
8c02a81fbSAndrew F. Davis #ifndef _UAPI_LINUX_DMABUF_POOL_H
9c02a81fbSAndrew F. Davis #define _UAPI_LINUX_DMABUF_POOL_H
10c02a81fbSAndrew F. Davis 
11c02a81fbSAndrew F. Davis #include <linux/ioctl.h>
12c02a81fbSAndrew F. Davis #include <linux/types.h>
13c02a81fbSAndrew F. Davis 
14c02a81fbSAndrew F. Davis /**
15c02a81fbSAndrew F. Davis  * DOC: DMABUF Heaps Userspace API
16c02a81fbSAndrew F. Davis  */
17c02a81fbSAndrew F. Davis 
18c02a81fbSAndrew F. Davis /* Valid FD_FLAGS are O_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR */
19c02a81fbSAndrew F. Davis #define DMA_HEAP_VALID_FD_FLAGS (O_CLOEXEC | O_ACCMODE)
20c02a81fbSAndrew F. Davis 
21c02a81fbSAndrew F. Davis /* Currently no heap flags */
22c02a81fbSAndrew F. Davis #define DMA_HEAP_VALID_HEAP_FLAGS (0)
23c02a81fbSAndrew F. Davis 
24c02a81fbSAndrew F. Davis /**
25c02a81fbSAndrew F. Davis  * struct dma_heap_allocation_data - metadata passed from userspace for
26c02a81fbSAndrew F. Davis  *                                      allocations
27c02a81fbSAndrew F. Davis  * @len:		size of the allocation
28c02a81fbSAndrew F. Davis  * @fd:			will be populated with a fd which provides the
29c02a81fbSAndrew F. Davis  *			handle to the allocated dma-buf
30c02a81fbSAndrew F. Davis  * @fd_flags:		file descriptor flags used when allocating
31c02a81fbSAndrew F. Davis  * @heap_flags:		flags passed to heap
32c02a81fbSAndrew F. Davis  *
33c02a81fbSAndrew F. Davis  * Provided by userspace as an argument to the ioctl
34c02a81fbSAndrew F. Davis  */
35c02a81fbSAndrew F. Davis struct dma_heap_allocation_data {
36c02a81fbSAndrew F. Davis 	__u64 len;
37c02a81fbSAndrew F. Davis 	__u32 fd;
38c02a81fbSAndrew F. Davis 	__u32 fd_flags;
39c02a81fbSAndrew F. Davis 	__u64 heap_flags;
40c02a81fbSAndrew F. Davis };
41c02a81fbSAndrew F. Davis 
42c02a81fbSAndrew F. Davis #define DMA_HEAP_IOC_MAGIC		'H'
43c02a81fbSAndrew F. Davis 
44c02a81fbSAndrew F. Davis /**
45*b3b43465SAndrew F. Davis  * DOC: DMA_HEAP_IOCTL_ALLOC - allocate memory from pool
46c02a81fbSAndrew F. Davis  *
47c02a81fbSAndrew F. Davis  * Takes a dma_heap_allocation_data struct and returns it with the fd field
48c02a81fbSAndrew F. Davis  * populated with the dmabuf handle of the allocation.
49c02a81fbSAndrew F. Davis  */
50*b3b43465SAndrew F. Davis #define DMA_HEAP_IOCTL_ALLOC	_IOWR(DMA_HEAP_IOC_MAGIC, 0x0,\
51c02a81fbSAndrew F. Davis 				      struct dma_heap_allocation_data)
52c02a81fbSAndrew F. Davis 
53c02a81fbSAndrew F. Davis #endif /* _UAPI_LINUX_DMABUF_POOL_H */
54