From: chenzhen Date: Wed, 7 Jan 2015 06:13:36 +0000 (+0800) Subject: rk312x, mali_400_driver : support mali_so to get rk_ko_ver from mali_ko. X-Git-Tag: firefly_0821_release~4331 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b8413842ffb2bca7bb66118eb7239b71ff9779e3;p=firefly-linux-kernel-4.4.55.git rk312x, mali_400_driver : support mali_so to get rk_ko_ver from mali_ko. --- diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h index 50189659f2bc..d280dfdf640d 100755 --- a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_ioctl.h @@ -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 } diff --git a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h index cfbb492f4f14..fd55d5f920b4 100755 --- a/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h +++ b/drivers/gpu/arm/mali400/mali/include/linux/mali/mali_utgard_uk_types.h @@ -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 */ diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c index 0a9ada95c52b..aa581e007751 100755 --- a/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c +++ b/drivers/gpu/arm/mali400/mali/linux/mali_kernel_linux.c @@ -14,6 +14,7 @@ * Implementation of the Linux device driver entrypoints */ #include "../platform/rk30/custom_log.h" +#include "../platform/rk30/rk_ext.h" #include /* kernel module definitions */ #include /* 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); diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c index 5a9f426552ea..e8f27201321d 100755 --- a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_core.c @@ -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) { diff --git a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h index 487348500ebf..21b66774a156 100755 --- a/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h +++ b/drivers/gpu/arm/mali400/mali/linux/mali_ukk_wrappers.h @@ -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 index 000000000000..81a5fba8a0d8 --- /dev/null +++ b/drivers/gpu/arm/mali400/mali/platform/rk30/rk_ext.h @@ -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__ */ +