From 20eabb402c4b8c4484c23c5900c2844826b9d1f6 Mon Sep 17 00:00:00 2001 From: xxm Date: Tue, 29 Apr 2014 10:48:29 +0800 Subject: [PATCH] rockchip : midgard :1,place rk_get_real_fps in rk_fb.h 2,correct macro limit_fps --- drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c | 9 ++++++--- drivers/video/rockchip/rk_fb.c | 7 +++++-- include/linux/rk_fb.h | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c index 5e09f8a75200..64615e302858 100755 --- a/drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c +++ b/drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c @@ -39,6 +39,8 @@ #include #include #include +#include + #include #include #include @@ -87,8 +89,9 @@ static void update_time_in_state(int level); #endif /*dvfs status*/ static mali_dvfs_status mali_dvfs_status_current; -extern int rk_get_real_fps(void); -#define limit_fps 60 + +#define LIMIT_FPS 60 + static void mali_dvfs_event_proc(struct work_struct *w) { unsigned long flags; @@ -109,7 +112,7 @@ static void mali_dvfs_event_proc(struct work_struct *w) fps = rk_get_real_fps(); spin_lock_irqsave(&mali_dvfs_spinlock, flags); - if ((dvfs_status->utilisation > mali_dvfs_infotbl[dvfs_status->step].max_threshold) && (dvfs_status->step < MALI_DVFS_STEP-1) && (fps < limit_fps)) + if ((dvfs_status->utilisation > mali_dvfs_infotbl[dvfs_status->step].max_threshold) && (dvfs_status->step < MALI_DVFS_STEP-1) && (fps < LIMIT_FPS)) { level_up_time++; if(level_up_time == MALI_DVFS_TIME_INTERVAL) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 1e49675bb26e..d0cc4582400d 100755 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -1620,14 +1620,17 @@ err: } static int cfgdone_last_time_ms = 0; static int cfgdone_interval_ms = 0; -int rk_get_real_fps() +int rk_get_real_fps(void) { struct timespec now; int interval_ms = 0; getnstimeofday(&now); interval_ms = (now.tv_sec *1000 + now.tv_nsec/1000000) - cfgdone_last_time_ms; interval_ms = (interval_ms > cfgdone_interval_ms) ? interval_ms : cfgdone_interval_ms; - return 1000 / interval_ms; + if(!interval_ms) + return 60;/*keep cpu clock*/ + else + return 1000 / interval_ms; } EXPORT_SYMBOL(rk_get_real_fps); diff --git a/include/linux/rk_fb.h b/include/linux/rk_fb.h index 6ff86f179fdd..235e41f3aaf1 100755 --- a/include/linux/rk_fb.h +++ b/include/linux/rk_fb.h @@ -575,4 +575,5 @@ extern int rkfb_create_sysfs(struct fb_info *fbi); extern char *get_format_string(enum data_format, char *fmt); extern int support_uboot_display(void); extern int rk_fb_calc_fps(struct rk_screen * screen, u32 pixclock); +extern int rk_get_real_fps(void); #endif -- 2.34.1