rk312x, mali_400_driver : support mali_so to get rk_ko_ver from mali_ko.

This commit is contained in:
chenzhen
2015-01-07 14:13:36 +08:00
parent 38fe8ecc55
commit b8413842ff
6 changed files with 102 additions and 6 deletions

View File

@@ -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
}

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -0,0 +1,61 @@
/* --------------------------------------------------------------------------------------------------------
* File: rk_ext.h
*
* Desc: rk_ext_on_mali_ko 中的 通行定义等.
*
* Usage:
*
* Note:
*
* Author: ChenZhen
*
* Log:
*
* --------------------------------------------------------------------------------------------------------
*/
#ifndef __RK_EXT_H__
#define __RK_EXT_H__
#ifdef __cplusplus
extern "C" {
#endif
/* ---------------------------------------------------------------------------------------------------------
* Include Files
* ---------------------------------------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------------------------------------
* Macros Definition
* ---------------------------------------------------------------------------------------------------------
*/
/** version of rk_ext on mali_ko, aka. rk_ko_ver. */
#define RK_KO_VER (2)
/* ---------------------------------------------------------------------------------------------------------
* Types and Structures Definition
* ---------------------------------------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------------------------------------
* Global Functions' Prototype
* ---------------------------------------------------------------------------------------------------------
*/
/* ---------------------------------------------------------------------------------------------------------
* Inline Functions Implementation
* ---------------------------------------------------------------------------------------------------------
*/
#ifdef __cplusplus
}
#endif
#endif /* __RK_EXT_H__ */