aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/arm/midgard/mali_kbase_uku.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/arm/midgard/mali_kbase_uku.h')
-rwxr-xr-xdrivers/gpu/arm/midgard/mali_kbase_uku.h335
1 files changed, 335 insertions, 0 deletions
diff --git a/drivers/gpu/arm/midgard/mali_kbase_uku.h b/drivers/gpu/arm/midgard/mali_kbase_uku.h
new file mode 100755
index 00000000000..a6c277176c2
--- /dev/null
+++ b/drivers/gpu/arm/midgard/mali_kbase_uku.h
@@ -0,0 +1,335 @@
+/*
+ *
+ * (C) COPYRIGHT ARM Limited. All rights reserved.
+ *
+ * This program is free software and is provided to you under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation, and any use by you of this program is subject to the terms
+ * of such GNU licence.
+ *
+ * A copy of the licence is included with the program, and can also be obtained
+ * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+
+
+
+
+#ifndef _KBASE_UKU_H_
+#define _KBASE_UKU_H_
+
+#include "mali_uk.h"
+#include <malisw/mali_malisw.h>
+#include "mali_base_kernel.h"
+
+/* This file needs to support being included from kernel and userside (which use different defines) */
+#if defined(CONFIG_MALI_ERROR_INJECT)
+#define SUPPORT_MALI_ERROR_INJECT
+#elif defined(MALI_ERROR_INJECT)
+#if MALI_ERROR_INJECT
+#define SUPPORT_MALI_ERROR_INJECT
+#endif
+#endif
+#if defined(CONFIG_MALI_NO_MALI)
+#define SUPPORT_MALI_NO_MALI
+#elif defined(MALI_NO_MALI)
+#if MALI_NO_MALI
+#define SUPPORT_MALI_NO_MALI
+#endif
+#endif
+
+#if defined(SUPPORT_MALI_NO_MALI) || defined(SUPPORT_MALI_ERROR_INJECT)
+#include "mali_kbase_model_dummy.h"
+#endif
+
+#include "mali_kbase_gpuprops_types.h"
+
+#define BASE_UK_VERSION_MAJOR 6
+#define BASE_UK_VERSION_MINOR 0
+
+typedef struct kbase_uk_mem_alloc {
+ uk_header header;
+ /* IN */
+ u64 va_pages;
+ u64 commit_pages;
+ u64 extent;
+ /* IN/OUT */
+ u64 flags;
+ /* OUT */
+ u64 gpu_va;
+ u16 va_alignment;
+ u8 padding[6];
+} kbase_uk_mem_alloc;
+
+typedef struct kbase_uk_mem_free {
+ uk_header header;
+ /* IN */
+ mali_addr64 gpu_addr;
+ /* OUT */
+} kbase_uk_mem_free;
+
+/* used by both aliasing and importing */
+#define KBASE_MEM_NEED_MMAP (1UL << BASE_MEM_FLAGS_NR_BITS)
+
+typedef struct kbase_uk_mem_alias {
+ uk_header header;
+ /* IN/OUT */
+ u64 flags;
+ /* IN */
+ u64 stride;
+ u64 nents;
+ kbase_pointer ai;
+ /* OUT */
+ u64 gpu_va;
+ u64 va_pages;
+} kbase_uk_mem_alias;
+
+typedef struct kbase_uk_mem_import {
+ uk_header header;
+ /* IN */
+ kbase_pointer phandle;
+ u32 type;
+ u32 padding;
+ /* IN/OUT */
+#define KBASE_MEM_IMPORT_HAVE_PAGES (1UL << (BASE_MEM_FLAGS_NR_BITS + 1))
+ u64 flags;
+ /* OUT */
+ mali_addr64 gpu_va;
+ u64 va_pages;
+} kbase_uk_mem_import;
+
+typedef struct kbase_uk_mem_flags_change {
+ uk_header header;
+ /* IN */
+ mali_addr64 gpu_va;
+ u64 flags;
+ u64 mask;
+} kbase_uk_mem_flags_change;
+
+typedef struct kbase_uk_job_submit {
+ uk_header header;
+ /* IN */
+ kbase_pointer addr;
+ u32 nr_atoms;
+ u32 stride; /* bytes between atoms, i.e. sizeof(base_jd_atom_v2) */
+ /* OUT */
+} kbase_uk_job_submit;
+
+typedef struct kbase_uk_post_term {
+ uk_header header;
+} kbase_uk_post_term;
+
+typedef struct kbase_uk_sync_now {
+ uk_header header;
+
+ /* IN */
+ base_syncset sset;
+
+ /* OUT */
+} kbase_uk_sync_now;
+
+typedef struct kbase_uk_hwcnt_setup {
+ uk_header header;
+
+ /* IN */
+ mali_addr64 dump_buffer;
+ u32 jm_bm;
+ u32 shader_bm;
+ u32 tiler_bm;
+ u32 l3_cache_bm;
+ u32 mmu_l2_bm;
+ u32 padding;
+ /* OUT */
+} kbase_uk_hwcnt_setup;
+
+typedef struct kbase_uk_hwcnt_dump {
+ uk_header header;
+} kbase_uk_hwcnt_dump;
+
+typedef struct kbase_uk_hwcnt_clear {
+ uk_header header;
+} kbase_uk_hwcnt_clear;
+
+typedef struct kbase_uk_fence_validate {
+ uk_header header;
+ /* IN */
+ s32 fd;
+ u32 padding;
+ /* OUT */
+} kbase_uk_fence_validate;
+
+typedef struct kbase_uk_stream_create {
+ uk_header header;
+ /* IN */
+ char name[32];
+ /* OUT */
+ s32 fd;
+ u32 padding;
+} kbase_uk_stream_create;
+
+typedef struct kbase_uk_cpuprops {
+ uk_header header;
+
+ /* IN */
+ struct base_cpu_props props;
+ /* OUT */
+} kbase_uk_cpuprops;
+
+typedef struct kbase_uk_gpuprops {
+ uk_header header;
+
+ /* IN */
+ struct mali_base_gpu_props props;
+ /* OUT */
+} kbase_uk_gpuprops;
+
+typedef struct kbase_uk_mem_query {
+ uk_header header;
+ /* IN */
+ mali_addr64 gpu_addr;
+#define KBASE_MEM_QUERY_COMMIT_SIZE 1
+#define KBASE_MEM_QUERY_VA_SIZE 2
+#define KBASE_MEM_QUERY_FLAGS 3
+ u64 query;
+ /* OUT */
+ u64 value;
+} kbase_uk_mem_query;
+
+typedef struct kbase_uk_mem_commit {
+ uk_header header;
+ /* IN */
+ mali_addr64 gpu_addr;
+ u64 pages;
+ /* OUT */
+ u32 result_subcode;
+ u32 padding;
+} kbase_uk_mem_commit;
+
+typedef struct kbase_uk_find_cpu_offset {
+ uk_header header;
+ /* IN */
+ mali_addr64 gpu_addr;
+ u64 cpu_addr;
+ u64 size;
+ /* OUT */
+ mali_size64 offset;
+} kbase_uk_find_cpu_offset;
+
+#define KBASE_GET_VERSION_BUFFER_SIZE 64
+typedef struct kbase_uk_get_ddk_version {
+ uk_header header;
+ /* OUT */
+ char version_buffer[KBASE_GET_VERSION_BUFFER_SIZE];
+ u32 version_string_size;
+ u32 padding;
+} kbase_uk_get_ddk_version;
+
+typedef struct kbase_uk_set_flags {
+ uk_header header;
+ /* IN */
+ u32 create_flags;
+ u32 padding;
+} kbase_uk_set_flags;
+
+#if MALI_UNIT_TEST
+#define TEST_ADDR_COUNT 4
+#define KBASE_TEST_BUFFER_SIZE 128
+typedef struct kbase_exported_test_data {
+ mali_addr64 test_addr[TEST_ADDR_COUNT]; /**< memory address */
+ u32 test_addr_pages[TEST_ADDR_COUNT]; /**< memory size in pages */
+ kbase_pointer kctx; /**< base context created by process */
+ kbase_pointer mm; /**< pointer to process address space */
+ u8 buffer1[KBASE_TEST_BUFFER_SIZE]; /**< unit test defined parameter */
+ u8 buffer2[KBASE_TEST_BUFFER_SIZE]; /**< unit test defined parameter */
+} kbase_exported_test_data;
+
+typedef struct kbase_uk_set_test_data {
+ uk_header header;
+ /* IN */
+ kbase_exported_test_data test_data;
+} kbase_uk_set_test_data;
+
+#endif /* MALI_UNIT_TEST */
+
+#ifdef SUPPORT_MALI_ERROR_INJECT
+typedef struct kbase_uk_error_params {
+ uk_header header;
+ /* IN */
+ kbase_error_params params;
+} kbase_uk_error_params;
+#endif /* SUPPORT_MALI_ERROR_INJECT */
+
+#ifdef SUPPORT_MALI_NO_MALI
+typedef struct kbase_uk_model_control_params {
+ uk_header header;
+ /* IN */
+ kbase_model_control_params params;
+} kbase_uk_model_control_params;
+#endif /* SUPPORT_MALI_NO_MALI */
+
+#define KBASE_MAXIMUM_EXT_RESOURCES 255
+
+typedef struct kbase_uk_ext_buff_kds_data {
+ uk_header header;
+ kbase_pointer external_resource;
+ kbase_pointer file_descriptor;
+ u32 num_res; /* limited to KBASE_MAXIMUM_EXT_RESOURCES */
+ u32 padding;
+} kbase_uk_ext_buff_kds_data;
+
+typedef struct kbase_uk_keep_gpu_powered {
+ uk_header header;
+ u32 enabled;
+ u32 padding;
+} kbase_uk_keep_gpu_powered;
+
+typedef struct kbase_uk_profiling_controls {
+ uk_header header;
+ u32 profiling_controls[FBDUMP_CONTROL_MAX];
+} kbase_uk_profiling_controls;
+
+typedef enum kbase_uk_function_id {
+ KBASE_FUNC_MEM_ALLOC = (UK_FUNC_ID + 0),
+ KBASE_FUNC_MEM_IMPORT,
+ KBASE_FUNC_MEM_COMMIT,
+ KBASE_FUNC_MEM_QUERY,
+ KBASE_FUNC_MEM_FREE,
+ KBASE_FUNC_MEM_FLAGS_CHANGE,
+ KBASE_FUNC_MEM_ALIAS,
+
+ KBASE_FUNC_JOB_SUBMIT,
+
+ KBASE_FUNC_SYNC,
+
+ KBASE_FUNC_POST_TERM,
+
+ KBASE_FUNC_HWCNT_SETUP,
+ KBASE_FUNC_HWCNT_DUMP,
+ KBASE_FUNC_HWCNT_CLEAR,
+
+ KBASE_FUNC_CPU_PROPS_REG_DUMP,
+ KBASE_FUNC_GPU_PROPS_REG_DUMP,
+
+ KBASE_FUNC_FIND_CPU_OFFSET,
+
+ KBASE_FUNC_GET_VERSION,
+ KBASE_FUNC_EXT_BUFFER_LOCK,
+ KBASE_FUNC_SET_FLAGS,
+
+ KBASE_FUNC_SET_TEST_DATA,
+ KBASE_FUNC_INJECT_ERROR,
+ KBASE_FUNC_MODEL_CONTROL,
+
+ KBASE_FUNC_KEEP_GPU_POWERED,
+
+ KBASE_FUNC_FENCE_VALIDATE,
+ KBASE_FUNC_STREAM_CREATE,
+ KBASE_FUNC_GET_PROFILING_CONTROLS,
+ KBASE_FUNC_SET_PROFILING_CONTROLS /* to be used only for testing
+ * purposes, otherwise these controls
+ * are set through gator API */
+} kbase_uk_function_id;
+
+#endif /* _KBASE_UKU_H_ */