#define MALI_IOC_WAIT_FOR_NOTIFICATION _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_WAIT_FOR_NOTIFICATION, _mali_uk_wait_for_notification_s)
#define MALI_IOC_GET_API_VERSION _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_GET_API_VERSION, u32)
#define MALI_IOC_GET_API_VERSION_V2 _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_GET_API_VERSION, _mali_uk_get_api_version_v2_s)
+/* rk_ext. */
+#define MALI_IOC_GET_RK_KO_VERSION _IOWR(MALI_IOC_CORE_BASE, _MALI_GET_RK_KO_VERSION, _mali_rk_ko_version_s)
#define MALI_IOC_POST_NOTIFICATION _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_POST_NOTIFICATION, _mali_uk_post_notification_s)
#define MALI_IOC_GET_USER_SETTING _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_GET_USER_SETTING, _mali_uk_get_user_setting_s)
#define MALI_IOC_GET_USER_SETTINGS _IOWR(MALI_IOC_CORE_BASE, _MALI_UK_GET_USER_SETTINGS, _mali_uk_get_user_settings_s)
#define MALI_IOC_VSYNC_EVENT_REPORT _IOW (MALI_IOC_VSYNC_BASE, _MALI_UK_VSYNC_EVENT_REPORT, _mali_uk_vsync_event_report_s)
+/* rk_ext : 对 r5p0 集成之后, mali_so 不再使用下面的 ioctl, 而使用 MALI_IOC_GET_RK_KO_VERSION. */
+#if 0
#define MALI_IOC_GET_MALI_VERSION_IN_RK30 _IOWR(MALI_IOC_CORE_BASE,_MALI_UK_GET_MALI_VERSION_IN_RK30,_mali_uk_get_mali_version_in_rk30_s *)
+#endif
#ifdef __cplusplus
}
_MALI_UK_TIMELINE_CREATE_SYNC_FENCE, /**< _mali_ukk_timeline_create_sync_fence() */
_MALI_UK_SOFT_JOB_START, /**< _mali_ukk_soft_job_start() */
_MALI_UK_SOFT_JOB_SIGNAL, /**< _mali_ukk_soft_job_signal() */
+ _MALI_GET_RK_KO_VERSION, /* rk_ext */
_MALI_UK_GET_MALI_VERSION_IN_RK30,
-
/** Memory functions */
_MALI_UK_INIT_MEM = 0, /**< _mali_ukk_init_mem() */
_mali_uk_api_version version; /**< [in,out] API version of user-side interface. */
} _mali_uk_get_mali_version_in_rk30_s;
+/* rk_ext : rk_ko_ver_t. */
+typedef struct {
+ u64 ctx; /**< [in,out] user-kernel context (trashed on output) */
+ _mali_uk_api_version version; /**< [in,out] API version of user-side interface. */
+} _mali_rk_ko_version_s;
/** @} */ /* end group _mali_uk_getapiversion_s */
/** @defgroup _mali_uk_get_user_settings_s Get user space settings */
* Implementation of the Linux device driver entrypoints
*/
#include "../platform/rk30/custom_log.h"
+#include "../platform/rk30/rk_ext.h"
#include <linux/module.h> /* kernel module definitions */
#include <linux/fs.h> /* file system operations */
}
#endif
-/** rk_ext : version of rk_ext on mali_ko, aka. rk_ko_ver. */
-#define ROCKCHIP_VERSION (1)
-
int mali_module_init(void)
{
int err = 0;
I("arm_release_ver of this mali_ko is '%s', rk_ko_ver is '%d', built at '%s', on '%s'.",
SVN_REV_STRING,
- ROCKCHIP_VERSION,
+ RK_KO_VER,
__TIME__,
__DATE__);
err = post_notification_wrapper(session_data, (_mali_uk_post_notification_s __user *)arg);
break;
+ /* rk_ext : 从对 r5p0-01rel0 集成开始, 不再使用. */
+#if 0
case MALI_IOC_GET_MALI_VERSION_IN_RK30:
err = get_mali_version_in_rk30_wrapper(session_data, (_mali_uk_get_mali_version_in_rk30_s __user *)arg);
break;
-
+#else
+ case MALI_IOC_GET_RK_KO_VERSION:
+ err = get_rk_ko_version_wrapper(session_data, (_mali_rk_ko_version_s __user *)arg);
+ break;
+#endif
+
case MALI_IOC_GET_USER_SETTINGS:
BUILD_BUG_ON(!IS_ALIGNED(sizeof(_mali_uk_get_user_settings_s), sizeof(u64)));
err = get_user_settings_wrapper(session_data, (_mali_uk_get_user_settings_s __user *)arg);
return 0;
}
+/* rk_ext : 从对 r5p0-01rel0 集成开始, 不再使用. */
+#if 0
#define mali400_in_rk30_version 0x01
int get_mali_version_in_rk30_wrapper(struct mali_session_data *session_data, _mali_uk_get_mali_version_in_rk30_s __user *uargs)
{
if (0 != put_user(kargs.version, &uargs->version)) return -EFAULT;
return 0;
}
+#else
+#include "../platform/rk30/rk_ext.h"
+int get_rk_ko_version_wrapper(struct mali_session_data *session_data, _mali_rk_ko_version_s __user *uargs)
+{
+ _mali_rk_ko_version_s kargs;
+ MALI_CHECK_NON_NULL(uargs, -EINVAL);
+ kargs.ctx = (uintptr_t)session_data;
+ kargs.version = RK_KO_VER;
+ if (0 != put_user(kargs.version, &uargs->version)) return -EFAULT;
+ return 0;
+}
+#endif
int wait_for_notification_wrapper(struct mali_session_data *session_data, _mali_uk_wait_for_notification_s __user *uargs)
{
int get_user_settings_wrapper(struct mali_session_data *session_data, _mali_uk_get_user_settings_s __user *uargs);
int post_notification_wrapper(struct mali_session_data *session_data, _mali_uk_post_notification_s __user *uargs);
int request_high_priority_wrapper(struct mali_session_data *session_data, _mali_uk_request_high_priority_s __user *uargs);
+
+/* rk_ext : 从对 r5p0-01rel0 集成开始, 不再使用. */
+#if 0
int get_mali_version_in_rk30_wrapper(struct mali_session_data *session_data, _mali_uk_get_mali_version_in_rk30_s __user *uargs);
+#else
+int get_rk_ko_version_wrapper(struct mali_session_data *session_data, _mali_rk_ko_version_s __user *uargs);
+#endif
int mem_write_safe_wrapper(struct mali_session_data *session_data, _mali_uk_mem_write_safe_s __user *uargs);
int mem_map_ext_wrapper(struct mali_session_data *session_data, _mali_uk_map_external_mem_s __user *argument);
--- /dev/null
+/* --------------------------------------------------------------------------------------------------------\r
+ * File: rk_ext.h \r
+ *\r
+ * Desc: rk_ext_on_mali_ko 中的 通行定义等. \r
+ *\r
+ * Usage: \r
+ *\r
+ * Note:\r
+ *\r
+ * Author: ChenZhen\r
+ * \r
+ * Log:\r
+ * \r
+ * --------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+\r
+#ifndef __RK_EXT_H__\r
+#define __RK_EXT_H__\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/* ---------------------------------------------------------------------------------------------------------\r
+ * Include Files\r
+ * ---------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+\r
+/* ---------------------------------------------------------------------------------------------------------\r
+ * Macros Definition \r
+ * ---------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+/** version of rk_ext on mali_ko, aka. rk_ko_ver. */\r
+#define RK_KO_VER (2)\r
+\r
+/* ---------------------------------------------------------------------------------------------------------\r
+ * Types and Structures Definition\r
+ * ---------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+\r
+/* ---------------------------------------------------------------------------------------------------------\r
+ * Global Functions' Prototype\r
+ * ---------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+\r
+/* ---------------------------------------------------------------------------------------------------------\r
+ * Inline Functions Implementation \r
+ * ---------------------------------------------------------------------------------------------------------\r
+ */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __RK_EXT_H__ */\r
+\r