rk312x, mali_400_driver : support mali_so to get rk_ko_ver from mali_ko.
authorchenzhen <chenzhen@rock-chips.com>
Wed, 7 Jan 2015 06:13:36 +0000 (14:13 +0800)
committerchenzhen <chenzhen@rock-chips.com>
Wed, 7 Jan 2015 06:15:42 +0000 (14:15 +0800)
drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h
drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h
drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c
drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c
drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h
drivers/gpu/arm/mali400/mali/platform/rk30/rk_ext.h [new file with mode: 0755]

index 50189659f2bc8ecd66d5b7198478e855b05cefa6..d280dfdf640de255c1e4a7abb5b10908084b58ce 100755 (executable)
@@ -41,6 +41,8 @@ extern "C" {
 #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)
@@ -79,7 +81,10 @@ extern "C" {
 
 #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
 }
index cfbb492f4f1464904468d4835e7fc8cb8193e66a..fd55d5f920b487ed684863843fa46e3f2cef8824 100755 (executable)
@@ -81,8 +81,8 @@ typedef enum {
        _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() */
@@ -685,6 +685,11 @@ typedef struct
     _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 */
index 0a9ada95c52bfaf8f746a348fb3f68044a9585a4..aa581e0077515882c0334d7c9d472ffc53e18d1b 100755 (executable)
@@ -14,6 +14,7 @@
  * 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 */
@@ -366,9 +367,6 @@ void mali_init_cpu_time_counters_on_all_cpus(int print_only)
 }
 #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;
@@ -379,7 +377,7 @@ int mali_module_init(void)
     
     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__);
 
@@ -762,10 +760,17 @@ static int mali_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,
                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);
index 5a9f426552ea243e2951d396992c7ef8f2117ba2..e8f27201321d49e3bc1db15042e649037c280038 100755 (executable)
@@ -55,6 +55,8 @@ int get_api_version_v2_wrapper(struct mali_session_data *session_data, _mali_uk_
        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)
 {
@@ -65,6 +67,18 @@ int get_mali_version_in_rk30_wrapper(struct mali_session_data *session_data, _ma
        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)
 {
index 487348500ebf26a3b72616b4de43d26f9e78bec6..21b66774a156c26d992e639f336cc115fee74a1f 100755 (executable)
@@ -29,7 +29,13 @@ int get_api_version_v2_wrapper(struct mali_session_data *session_data, _mali_uk_
 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);
diff --git a/drivers/gpu/arm/mali400/mali/platform/rk30/rk_ext.h b/drivers/gpu/arm/mali400/mali/platform/rk30/rk_ext.h
new file mode 100755 (executable)
index 0000000..81a5fba
--- /dev/null
@@ -0,0 +1,61 @@
+/*  --------------------------------------------------------------------------------------------------------\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