| /* | |
| * MediaTek Controls Header | |
| * | |
| * Copyright (c) 2017 MediaTek Inc. | |
| * Author: Yunfei Dong <yunfei.dong@mediatek.com> | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| */ | |
| #ifndef __UAPI_MTK_VCU_CONTROLS_H__ | |
| #define __UAPI_MTK_VCU_CONTROLS_H__ | |
| #define SHARE_BUF_SIZE 48 | |
| #define VCUD_SET_OBJECT _IOW('v', 0, struct share_obj) | |
| #define VCUD_MVA_ALLOCATION _IOWR('v', 1, struct mem_obj) | |
| #define VCUD_MVA_FREE _IOWR('v', 2, struct mem_obj) | |
| #define VCUD_CACHE_FLUSH_ALL _IOWR('v', 3, struct mem_obj) | |
| #define VCUD_GET_OBJECT _IOWR('v', 4, struct share_obj) | |
| #define VCUD_GET_LOG_OBJECT _IOW('v', 5, struct log_test_nofuse) | |
| #define VCUD_MVA_MAP_CACHE _IOWR('v', 6, struct mem_obj) | |
| #define VCUD_SET_MMAP_TYPE _IOW('v', 8, struct map_obj) | |
| #define COMPAT_VCUD_SET_OBJECT _IOW('v', 0, struct share_obj) | |
| #define COMPAT_VCUD_MVA_ALLOCATION _IOWR('v', 1, struct compat_mem_obj) | |
| #define COMPAT_VCUD_MVA_FREE _IOWR('v', 2, struct compat_mem_obj) | |
| #define COMPAT_VCUD_CACHE_FLUSH_ALL _IOWR('v', 3, struct compat_mem_obj) | |
| #define COMPAT_VCUD_SET_MMAP_TYPE _IOWR('v', 4, struct map_obj) | |
| /** | |
| * struct mem_obj - memory buffer allocated in kernel | |
| * | |
| * @iova: iova of buffer | |
| * @len: buffer length | |
| * @va: kernel virtual address | |
| */ | |
| struct mem_obj { | |
| u64 iova; | |
| u64 len; | |
| u64 va; | |
| }; | |
| /** | |
| * struct map_obj - memory buffer mmaped in kernel | |
| * | |
| * @map_buf: iova of buffer | |
| * @map_type: the type of mmap | |
| * @reserved: reserved | |
| */ | |
| struct map_obj { | |
| unsigned long map_buf; | |
| unsigned long map_type; | |
| u64 reserved; | |
| }; | |
| #if IS_ENABLED(CONFIG_COMPAT) | |
| struct compat_mem_obj { | |
| compat_ulong_t iova; | |
| compat_ulong_t len; | |
| compat_u64 va; | |
| }; | |
| #endif | |
| /** | |
| * struct share_obj - DTCM (Data Tightly-Coupled Memory) buffer shared with | |
| * AP and VCU | |
| * | |
| * @id: IPI id | |
| * @len: share buffer length | |
| * @share_buf: share buffer data | |
| */ | |
| struct share_obj { | |
| s32 id; | |
| u32 len; | |
| unsigned char share_buf[SHARE_BUF_SIZE]; | |
| }; | |
| struct log_test_nofuse { | |
| char log_info[1024]; | |
| }; | |
| #endif |