3 * (C) COPYRIGHT ARM Limited. All rights reserved.
5 * This program is free software and is provided to you under the terms of the
6 * GNU General Public License version 2 as published by the Free Software
7 * Foundation, and any use by you of this program is subject to the terms
10 * A copy of the licence is included with the program, and can also be obtained
11 * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
12 * Boston, MA 02110-1301, USA.
24 #include <malisw/mali_malisw.h>
25 #include "mali_base_kernel.h"
27 /* This file needs to support being included from kernel and userside (which use different defines) */
28 #if defined(CONFIG_MALI_ERROR_INJECT)
29 #define SUPPORT_MALI_ERROR_INJECT
30 #elif defined(MALI_ERROR_INJECT)
32 #define SUPPORT_MALI_ERROR_INJECT
35 #if defined(CONFIG_MALI_NO_MALI)
36 #define SUPPORT_MALI_NO_MALI
37 #elif defined(MALI_NO_MALI)
39 #define SUPPORT_MALI_NO_MALI
43 #if defined(SUPPORT_MALI_NO_MALI) || defined(SUPPORT_MALI_ERROR_INJECT)
44 #include "mali_kbase_model_dummy.h"
47 #include "mali_kbase_gpuprops_types.h"
49 #define BASE_UK_VERSION_MAJOR 6
50 #define BASE_UK_VERSION_MINOR 0
52 typedef struct kbase_uk_mem_alloc {
66 typedef struct kbase_uk_mem_free {
73 /* used by both aliasing and importing */
74 #define KBASE_MEM_NEED_MMAP (1UL << BASE_MEM_FLAGS_NR_BITS)
76 typedef struct kbase_uk_mem_alias {
89 typedef struct kbase_uk_mem_import {
92 kbase_pointer phandle;
96 #define KBASE_MEM_IMPORT_HAVE_PAGES (1UL << (BASE_MEM_FLAGS_NR_BITS + 1))
101 } kbase_uk_mem_import;
103 typedef struct kbase_uk_mem_flags_change {
109 } kbase_uk_mem_flags_change;
111 typedef struct kbase_uk_job_submit {
116 u32 stride; /* bytes between atoms, i.e. sizeof(base_jd_atom_v2) */
118 } kbase_uk_job_submit;
120 typedef struct kbase_uk_post_term {
122 } kbase_uk_post_term;
124 typedef struct kbase_uk_sync_now {
133 typedef struct kbase_uk_hwcnt_setup {
137 mali_addr64 dump_buffer;
145 } kbase_uk_hwcnt_setup;
147 typedef struct kbase_uk_hwcnt_dump {
149 } kbase_uk_hwcnt_dump;
151 typedef struct kbase_uk_hwcnt_clear {
153 } kbase_uk_hwcnt_clear;
155 typedef struct kbase_uk_fence_validate {
161 } kbase_uk_fence_validate;
163 typedef struct kbase_uk_stream_create {
170 } kbase_uk_stream_create;
172 typedef struct kbase_uk_cpuprops {
176 struct base_cpu_props props;
180 typedef struct kbase_uk_gpuprops {
184 struct mali_base_gpu_props props;
188 typedef struct kbase_uk_mem_query {
191 mali_addr64 gpu_addr;
192 #define KBASE_MEM_QUERY_COMMIT_SIZE 1
193 #define KBASE_MEM_QUERY_VA_SIZE 2
194 #define KBASE_MEM_QUERY_FLAGS 3
198 } kbase_uk_mem_query;
200 typedef struct kbase_uk_mem_commit {
203 mali_addr64 gpu_addr;
208 } kbase_uk_mem_commit;
210 typedef struct kbase_uk_find_cpu_offset {
213 mali_addr64 gpu_addr;
218 } kbase_uk_find_cpu_offset;
220 #define KBASE_GET_VERSION_BUFFER_SIZE 64
221 typedef struct kbase_uk_get_ddk_version {
224 char version_buffer[KBASE_GET_VERSION_BUFFER_SIZE];
225 u32 version_string_size;
227 } kbase_uk_get_ddk_version;
229 typedef struct kbase_uk_set_flags {
234 } kbase_uk_set_flags;
237 #define TEST_ADDR_COUNT 4
238 #define KBASE_TEST_BUFFER_SIZE 128
239 typedef struct kbase_exported_test_data {
240 mali_addr64 test_addr[TEST_ADDR_COUNT]; /**< memory address */
241 u32 test_addr_pages[TEST_ADDR_COUNT]; /**< memory size in pages */
242 kbase_pointer kctx; /**< base context created by process */
243 kbase_pointer mm; /**< pointer to process address space */
244 u8 buffer1[KBASE_TEST_BUFFER_SIZE]; /**< unit test defined parameter */
245 u8 buffer2[KBASE_TEST_BUFFER_SIZE]; /**< unit test defined parameter */
246 } kbase_exported_test_data;
248 typedef struct kbase_uk_set_test_data {
251 kbase_exported_test_data test_data;
252 } kbase_uk_set_test_data;
254 #endif /* MALI_UNIT_TEST */
256 #ifdef SUPPORT_MALI_ERROR_INJECT
257 typedef struct kbase_uk_error_params {
260 kbase_error_params params;
261 } kbase_uk_error_params;
262 #endif /* SUPPORT_MALI_ERROR_INJECT */
264 #ifdef SUPPORT_MALI_NO_MALI
265 typedef struct kbase_uk_model_control_params {
268 kbase_model_control_params params;
269 } kbase_uk_model_control_params;
270 #endif /* SUPPORT_MALI_NO_MALI */
272 #define KBASE_MAXIMUM_EXT_RESOURCES 255
274 typedef struct kbase_uk_ext_buff_kds_data {
276 kbase_pointer external_resource;
277 kbase_pointer file_descriptor;
278 u32 num_res; /* limited to KBASE_MAXIMUM_EXT_RESOURCES */
280 } kbase_uk_ext_buff_kds_data;
282 typedef struct kbase_uk_keep_gpu_powered {
286 } kbase_uk_keep_gpu_powered;
288 typedef struct kbase_uk_profiling_controls {
290 u32 profiling_controls[FBDUMP_CONTROL_MAX];
291 } kbase_uk_profiling_controls;
293 typedef enum kbase_uk_function_id {
294 KBASE_FUNC_MEM_ALLOC = (UK_FUNC_ID + 0),
295 KBASE_FUNC_MEM_IMPORT,
296 KBASE_FUNC_MEM_COMMIT,
297 KBASE_FUNC_MEM_QUERY,
299 KBASE_FUNC_MEM_FLAGS_CHANGE,
300 KBASE_FUNC_MEM_ALIAS,
302 KBASE_FUNC_JOB_SUBMIT,
306 KBASE_FUNC_POST_TERM,
308 KBASE_FUNC_HWCNT_SETUP,
309 KBASE_FUNC_HWCNT_DUMP,
310 KBASE_FUNC_HWCNT_CLEAR,
312 KBASE_FUNC_CPU_PROPS_REG_DUMP,
313 KBASE_FUNC_GPU_PROPS_REG_DUMP,
315 KBASE_FUNC_FIND_CPU_OFFSET,
317 KBASE_FUNC_GET_VERSION,
318 KBASE_FUNC_EXT_BUFFER_LOCK,
319 KBASE_FUNC_SET_FLAGS,
321 KBASE_FUNC_SET_TEST_DATA,
322 KBASE_FUNC_INJECT_ERROR,
323 KBASE_FUNC_MODEL_CONTROL,
325 KBASE_FUNC_KEEP_GPU_POWERED,
327 KBASE_FUNC_FENCE_VALIDATE,
328 KBASE_FUNC_STREAM_CREATE,
329 KBASE_FUNC_GET_PROFILING_CONTROLS,
330 KBASE_FUNC_SET_PROFILING_CONTROLS /* to be used only for testing
331 * purposes, otherwise these controls
332 * are set through gator API */
333 } kbase_uk_function_id;
335 #endif /* _KBASE_UKU_H_ */