rockchip : midgard :1,place rk_get_real_fps in rk_fb.h 2,correct macro limit_fps
authorxxm <xxm@rock-chips.com>
Tue, 29 Apr 2014 02:48:29 +0000 (10:48 +0800)
committerxxm <xxm@rock-chips.com>
Tue, 29 Apr 2014 02:48:29 +0000 (10:48 +0800)
drivers/gpu/arm/midgard/platform/rk/mali_kbase_dvfs.c
drivers/video/rockchip/rk_fb.c
include/linux/rk_fb.h

index 5e09f8a7520052203425739482540be4a8a85ba9..64615e302858289dbe5121b0d46b54c6594f1707 100755 (executable)
@@ -39,6 +39,8 @@
 #include <linux/delay.h>
 #include <linux/regulator/consumer.h>
 #include <linux/regulator/driver.h>
+#include <linux/rk_fb.h>
+
 #include <platform/rk/mali_kbase_platform.h>
 #include <platform/rk/mali_kbase_dvfs.h>
 #include <mali_kbase_gator.h>
@@ -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)
index 1e49675bb26e513b603488bd099304e43b6f1ec9..d0cc4582400d0870957583e639ac71c26910e72b 100755 (executable)
@@ -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);
 
index 6ff86f179fdd63ab15bb91963e147fd44ff6539c..235e41f3aaf12c8e47daa612534188182208f56b 100755 (executable)
@@ -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