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>
32 ION_HEAP_ID_RESERVED = 31
35 #define ION_HEAP(bit) (1 << (bit))
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"
42 #define ION_SET_CACHED(__cache) (__cache | ION_FLAG_CACHED)
43 #define ION_SET_UNCACHED(__cache) (__cache & ~ION_FLAG_CACHED)
45 #define ION_IS_CACHED(__flags) ((__flags) & ION_FLAG_CACHED)
47 /* struct ion_flush_data - data passed to ion for flushing caches
49 * @handle: handle with data 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
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
59 struct ion_flush_data {
60 ion_user_handle_t handle;
67 struct ion_phys_data {
68 ion_user_handle_t handle;
73 struct ion_share_id_data {
78 #define ION_IOC_ROCKCHIP_MAGIC 'R'
81 * Clean the caches of the handle specified.
83 #define ION_IOC_CLEAN_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 0, \
84 struct ion_flush_data)
86 * Invalidate the caches of the handle specified.
88 #define ION_IOC_INV_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 1, \
89 struct ion_flush_data)
91 * Clean and invalidate the caches of the handle specified.
93 #define ION_IOC_CLEAN_INV_CACHES _IOWR(ION_IOC_ROCKCHIP_MAGIC, 2, \
94 struct ion_flush_data)
97 * Get phys addr of the handle specified.
99 #define ION_IOC_GET_PHYS _IOWR(ION_IOC_ROCKCHIP_MAGIC, 3, \
100 struct ion_phys_data)
103 * Get share object of the fd specified.
105 #define ION_IOC_GET_SHARE_ID _IOWR(ION_IOC_ROCKCHIP_MAGIC, 4, \
106 struct ion_share_id_data)
109 * Set share object and associate new fd.
111 #define ION_IOC_SHARE_BY_ID _IOWR(ION_IOC_ROCKCHIP_MAGIC, 5, \
112 struct ion_share_id_data)