rk: ion: modify the ION_IOC_XXX name easy to understand
[firefly-linux-kernel-4.4.55.git] / include / linux / rockchip_ion.h
1 /*
2  *
3  * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
4  *
5  * This software is licensed under the terms of the GNU General Public
6  * License version 2, as published by the Free Software Foundation, and
7  * may be copied, distributed, and modified under those terms.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  */
15
16 #ifndef _LINUX_ROCKCHIP_ION_H
17 #define _LINUX_ROCKCHIP_ION_H
18
19 #ifdef __KERNEL__
20 #include "../../drivers/staging/android/ion/ion.h"
21 #else
22 #include <linux/ion.h>
23 #endif
24
25 enum ion_heap_ids {
26         INVALID_HEAP_ID = -1,
27         ION_CMA_HEAP_ID = 1,
28         ION_IOMMU_HEAP_ID,
29         ION_SYSTEM_HEAP_ID,
30         ION_DRM_HEAP_ID,
31
32         ION_HEAP_ID_RESERVED = 31
33 };
34
35 #define ION_HEAP(bit) (1 << (bit))
36
37 #define ION_CMA_HEAP_NAME               "cma"
38 #define ION_IOMMU_HEAP_NAME             "iommu"
39 #define ION_SYSTEM_HEAP_NAME    "vmalloc"
40 #define ION_DRM_HEAP_NAME               "drm"
41
42 #define ION_SET_CACHED(__cache)         (__cache | ION_FLAG_CACHED)
43 #define ION_SET_UNCACHED(__cache)       (__cache & ~ION_FLAG_CACHED)
44
45 #define ION_IS_CACHED(__flags)  ((__flags) & ION_FLAG_CACHED)
46
47 /* struct ion_flush_data - data passed to ion for flushing caches
48  *
49  * @handle:     handle with data to flush
50  * @fd:         fd to flush
51  * @vaddr:      userspace virtual address mapped with mmap
52  * @offset:     offset into the handle to flush
53  * @length:     length of handle to flush
54  *
55  * Performs cache operations on the handle. If p is the start address
56  * of the handle, p + offset through p + offset + length will have
57  * the cache operations performed
58  */
59 struct ion_flush_data {
60         ion_user_handle_t handle;
61         int fd;
62         void *vaddr;
63         unsigned int offset;
64         unsigned int length;
65 };
66
67 struct ion_phys_data {
68         ion_user_handle_t handle;
69         unsigned long phys;
70         unsigned long size;
71 };
72
73 struct ion_share_id_data {
74         int fd;
75         unsigned int id;
76 };
77
78 #define ION_IOC_ROCKCHIP_MAGIC 'R'
79
80 /**
81  * Clean the caches of the handle specified.
82  */
83 #define ION_IOC_CLEAN_CACHES    _IOWR(ION_IOC_ROCKCHIP_MAGIC, 0, \
84                                                 struct ion_flush_data)
85 /**
86  * Invalidate the caches of the handle specified.
87  */
88 #define ION_IOC_INV_CACHES      _IOWR(ION_IOC_ROCKCHIP_MAGIC, 1, \
89                                                 struct ion_flush_data)
90 /**
91  * Clean and invalidate the caches of the handle specified.
92  */
93 #define ION_IOC_CLEAN_INV_CACHES        _IOWR(ION_IOC_ROCKCHIP_MAGIC, 2, \
94                                                 struct ion_flush_data)
95
96 /**
97  * Get phys addr of the handle specified.
98  */
99 #define ION_IOC_GET_PHYS        _IOWR(ION_IOC_ROCKCHIP_MAGIC, 3, \
100                                                 struct ion_phys_data)
101
102 /**
103  * Get share object of the fd specified.
104  */
105 #define ION_IOC_GET_SHARE_ID    _IOWR(ION_IOC_ROCKCHIP_MAGIC, 4, \
106                                                 struct ion_share_id_data)
107
108 /**
109  * Set share object and associate new fd.
110  */
111 #define ION_IOC_SHARE_BY_ID     _IOWR(ION_IOC_ROCKCHIP_MAGIC, 5, \
112                                                 struct ion_share_id_data)
113
114 #endif