xref: /rockchip-linux_mpp/osal/linux/dma-buf.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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