gpu: update gcdENABLE_AUTO_FREQ to show gpu's load
author杜坤明 <dkm@rockchip.com>
Wed, 22 Jun 2011 09:54:48 +0000 (17:54 +0800)
committer杜坤明 <dkm@rockchip.com>
Wed, 22 Jun 2011 09:54:48 +0000 (17:54 +0800)
drivers/staging/rk29/vivante/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c
drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c

index 7b0b08cc1712b506ed07991b494264128c5bd13f..1d3a2c2f13cba243209acd8b6816f9b841544ba8 100755 (executable)
@@ -40,7 +40,7 @@ struct clk *clk_gpu = NULL;
 
 void get_run_idle(u32 *run, u32 *idle)
 {
-    if(gcvPOWER_IDLE==lastState)
+    if(gcvPOWER_ON!=lastState)
     {
         do_gettimeofday(&tv_on);
         usec_idle += (1000000*(tv_on.tv_sec-tv_idle.tv_sec)+(tv_on.tv_usec-tv_idle.tv_usec));
@@ -67,12 +67,12 @@ inline void cal_run_idle(gceCHIPPOWERSTATE State)
 {
     int freq = 0;
     
-    if(gcvPOWER_IDLE==lastState && gcvPOWER_ON==State)  //gcvPOWER_IDLE->gcvPOWER_ON
+    if(gcvPOWER_ON!=lastState && gcvPOWER_ON==State)  //NotON -> ON
     {
         do_gettimeofday(&tv_on);
         usec_idle += (1000000*(tv_on.tv_sec-tv_idle.tv_sec)+(tv_on.tv_usec-tv_idle.tv_usec));
-    }
-    if(gcvPOWER_ON==lastState && gcvPOWER_IDLE==State)  //gcvPOWER_ON->gcvPOWER_IDLE
+    } 
+    else if(gcvPOWER_ON==lastState && gcvPOWER_ON!=State)  //ON -> NotON
     {
         do_gettimeofday(&tv_idle);
         usec_run += (1000000*(tv_idle.tv_sec-tv_on.tv_sec)+(tv_idle.tv_usec-tv_on.tv_usec));
@@ -80,12 +80,11 @@ inline void cal_run_idle(gceCHIPPOWERSTATE State)
         freq = nextfreq;
         nextfreq = 0;
         if(freq) {
+            if(freq<24)      freq = 24;
+            if(freq>600)     freq = 600;
             clk_gpu = clk_get(NULL, "gpu");
-            clk_set_parent(clk_gpu, clk_get(NULL, "general_pll"));
-            clk_set_rate(clk_get(NULL, "codec_pll"), freq*1000000);
             clk_set_rate(clk_gpu, freq*1000000);
-            clk_set_parent(clk_gpu, clk_get(NULL, "codec_pll"));
-            //printk("                                           == > gpu change freq to %d \n", freq); 
+            printk("           == > gpu change freq to %d \n", freq); 
         }
     }
     
index 2f24df813e12349aa16ad76990914db56d7b4234..6a45a9daa1e70a8a1f8510f2feb8f76ac610bdc0 100755 (executable)
@@ -207,7 +207,7 @@ void gputimer_callback(unsigned long arg)
     u32 run, idle;
     int precent, freq, diff;
     
-       mod_timer(&gpu_timer, jiffies + HZ/10);
+       mod_timer(&gpu_timer, jiffies + HZ/4);
 
     get_run_idle(&run, &idle);
     precent = (int)((run*100)/(run+idle));
@@ -237,8 +237,9 @@ void gputimer_callback(unsigned long arg)
         last_freq = freq;
         //set_nextfreq(freq);
     }
-    
-    printk("%8d /%8d = %3d %%, needfreq = %dM (%d)\n", (int)run, (int)(run+idle), precent, freq, power_cnt);
+
+    printk("gpu load : %3d %%\n", precent);
+    //printk("%8d /%8d = %3d %%, needfreq = %dM (%d)\n", (int)run, (int)(run+idle), precent, freq, power_cnt);
 }
 #elif(2==gcdENABLE_AUTO_FREQ)
 #include <linux/timer.h>