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