1*437bfbebSnyanmisaka /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*437bfbebSnyanmisaka /* 3*437bfbebSnyanmisaka * Framework for buffer objects that can be shared across devices/subsystems. 4*437bfbebSnyanmisaka * 5*437bfbebSnyanmisaka * Copyright(C) 2015 Intel Ltd 6*437bfbebSnyanmisaka * 7*437bfbebSnyanmisaka * This program is free software; you can redistribute it and/or modify it 8*437bfbebSnyanmisaka * under the terms of the GNU General Public License version 2 as published by 9*437bfbebSnyanmisaka * the Free Software Foundation. 10*437bfbebSnyanmisaka * 11*437bfbebSnyanmisaka * This program is distributed in the hope that it will be useful, but WITHOUT 12*437bfbebSnyanmisaka * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13*437bfbebSnyanmisaka * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 14*437bfbebSnyanmisaka * more details. 15*437bfbebSnyanmisaka * 16*437bfbebSnyanmisaka * You should have received a copy of the GNU General Public License along with 17*437bfbebSnyanmisaka * this program. If not, see <http://www.gnu.org/licenses/>. 18*437bfbebSnyanmisaka */ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #ifndef _DMA_BUF_UAPI_H_ 21*437bfbebSnyanmisaka #define _DMA_BUF_UAPI_H_ 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #include <linux/types.h> 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka /* begin/end dma-buf functions used for userspace mmap. */ 26*437bfbebSnyanmisaka struct dma_buf_sync { 27*437bfbebSnyanmisaka __u64 flags; 28*437bfbebSnyanmisaka }; 29*437bfbebSnyanmisaka 30*437bfbebSnyanmisaka #define DMA_BUF_SYNC_READ (1 << 0) 31*437bfbebSnyanmisaka #define DMA_BUF_SYNC_WRITE (2 << 0) 32*437bfbebSnyanmisaka #define DMA_BUF_SYNC_RW (DMA_BUF_SYNC_READ | DMA_BUF_SYNC_WRITE) 33*437bfbebSnyanmisaka #define DMA_BUF_SYNC_START (0 << 2) 34*437bfbebSnyanmisaka #define DMA_BUF_SYNC_END (1 << 2) 35*437bfbebSnyanmisaka #define DMA_BUF_SYNC_VALID_FLAGS_MASK \ 36*437bfbebSnyanmisaka (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END) 37*437bfbebSnyanmisaka 38*437bfbebSnyanmisaka #define DMA_BUF_NAME_LEN 32 39*437bfbebSnyanmisaka 40*437bfbebSnyanmisaka #define DMA_BUF_BASE 'b' 41*437bfbebSnyanmisaka #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) 42*437bfbebSnyanmisaka 43*437bfbebSnyanmisaka /* 32/64bitness of this uapi was botched in android, there's no difference 44*437bfbebSnyanmisaka * between them in actual uapi, they're just different numbers. 45*437bfbebSnyanmisaka */ 46*437bfbebSnyanmisaka #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *) 47*437bfbebSnyanmisaka #define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32) 48*437bfbebSnyanmisaka #define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64) 49*437bfbebSnyanmisaka 50*437bfbebSnyanmisaka struct dma_buf_sync_partial { 51*437bfbebSnyanmisaka __u64 flags; 52*437bfbebSnyanmisaka __u32 offset; 53*437bfbebSnyanmisaka __u32 len; 54*437bfbebSnyanmisaka }; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka #define DMA_BUF_IOCTL_SYNC_PARTIAL _IOW(DMA_BUF_BASE, 2, struct dma_buf_sync_partial) 57*437bfbebSnyanmisaka 58*437bfbebSnyanmisaka #endif 59