3 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
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.
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.
16 #ifndef _LINUX_ROCKCHIP_ION_H
17 #define _LINUX_ROCKCHIP_ION_H
20 #include "../../drivers/staging/android/ion/ion.h"
22 #include <linux/ion.h>
25 #define ROCKCHIP_ION_VERSION "v1.0"
35 ION_HEAP_ID_RESERVED = 31
38 #define ION_HEAP(bit) (1 << (bit))
40 #define ION_CMA_HEAP_NAME "cma"
41 #define ION_IOMMU_HEAP_NAME "iommu"
42 #define ION_VMALLOC_HEAP_NAME "vmalloc"
43 #define ION_DRM_HEAP_NAME "drm"
44 #define ION_CARVEOUT_HEAP_NAME "carveout"
46 #define ION_SET_CACHED(__cache) (__cache | ION_FLAG_CACHED)
47 #define ION_SET_UNCACHED(__cache) (__cache & ~ION_FLAG_CACHED)
48 #define ION_IS_CACHED(__flags) ((__flags) & ION_FLAG_CACHED)
50 /* struct ion_flush_data - data passed to ion for flushing caches
52 * @handle: handle with data to flush
54 * @vaddr: userspace virtual address mapped with mmap
55 * @offset: offset into the handle to flush
56 * @length: length of handle to flush
58 * Performs cache operations on the handle. If p is the start address
59 * of the handle, p + offset through p + offset + length will have
60 * the cache operations performed
62 struct ion_flush_data {
63 ion_user_handle_t handle;
70 struct ion_phys_data {
71 ion_user_handle_t handle;
76 struct ion_share_id_data {
81 #define ION_IOC_ROCKCHIP_MAGIC 'R'
84 * Clean the caches of the handle specified.
86 #define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 0, \
87 struct ion_flush_data)
89 * Invalidate the caches of the handle specified.
91 #define ION_IOC_INV_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 1, \
92 struct ion_flush_data)
94 * Clean and invalidate the caches of the handle specified.
96 #define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 2, \
97 struct ion_flush_data)
100 * Get phys addr of the handle specified.
102 #define ION_IOC_GET_PHYS _IOWR(ION_IOC_ROCKCHIP_MAGIC, 3, \
103 struct ion_phys_data)
106 * Get share object of the fd specified.
108 #define ION_IOC_GET_SHARE_ID _IOWR(ION_IOC_ROCKCHIP_MAGIC, 4, \
109 struct ion_share_id_data)
112 * Set share object and associate new fd.
114 #define ION_IOC_SHARE_BY_ID _IOWR(ION_IOC_ROCKCHIP_MAGIC, 5, \
115 struct ion_share_id_data)