From ac5f1288b8a368deea28268b389f12ffe975f596 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E6=9D=9C=E5=9D=A4=E6=98=8E?= Date: Wed, 22 Jun 2011 17:54:48 +0800 Subject: [PATCH] gpu: update gcdENABLE_AUTO_FREQ to show gpu's load --- .../arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c | 15 +++++++-------- .../hal/os/linux/kernel/gc_hal_kernel_driver.c | 7 ++++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/drivers/staging/rk29/vivante/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c b/drivers/staging/rk29/vivante/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c index 7b0b08cc1712..1d3a2c2f13cb 100755 --- a/drivers/staging/rk29/vivante/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c +++ b/drivers/staging/rk29/vivante/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c @@ -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); } } diff --git a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c index 2f24df813e12..6a45a9daa1e7 100755 --- a/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c +++ b/drivers/staging/rk29/vivante/hal/os/linux/kernel/gc_hal_kernel_driver.c @@ -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 -- 2.34.1