From 6b8074e3bcd0edf3e7c8fd043f91776375d6c895 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E6=9D=9C=E5=9D=A4=E6=98=8E?= Date: Thu, 5 May 2011 10:32:42 +0800 Subject: [PATCH] gpu: enable gcdENABLE_LONG_IDLE_POWEROFF --- .../XAQ2/hal/kernel/gc_hal_kernel_hardware.c | 27 ++++++++++--------- .../rk29/vivante/hal/inc/gc_hal_options.h | 2 +- .../os/linux/kernel/gc_hal_kernel_driver.c | 4 +-- 3 files changed, 18 insertions(+), 15 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 5f086e2133af..e518bd6cdd06 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 @@ -2896,6 +2896,9 @@ gckHARDWARE_SetPowerManagementState( gctBOOL stall = gcvTRUE; gctBOOL broadcast = gcvFALSE; gctUINT32 process, thread; +#if gcdENABLE_LONG_IDLE_POWEROFF + gceCHIPPOWERSTATE curState = State; +#endif /* State transition flags. */ static const gctUINT flags[4][4] = @@ -2986,17 +2989,6 @@ gckHARDWARE_SetPowerManagementState( os = Hardware->os; gcmkVERIFY_OBJECT(os, gcvOBJ_OS); -#if gcdENABLE_LONG_IDLE_POWEROFF - if(gcvPOWER_IDLE_BROADCAST==State) { - cancel_delayed_work_sync(&poweroff_work); - schedule_delayed_work(&poweroff_work, 5*HZ); - } else if(gcvPOWER_OFF_BROADCAST==State) { - // NULL - } else { - cancel_delayed_work_sync(&poweroff_work); - } -#endif - /* Convert the broadcast power state. */ switch (State) { @@ -3091,7 +3083,7 @@ gckHARDWARE_SetPowerManagementState( /* Acquire the power mutex. */ gcmkONERROR(gckOS_AcquireMutex(os, Hardware->powerMutex, gcvINFINITE)); } - + Hardware->powerProcess = process; Hardware->powerThread = thread; mutexAcquired = gcvTRUE; @@ -3100,6 +3092,17 @@ gckHARDWARE_SetPowerManagementState( flag = flags[Hardware->chipPowerState][State]; clock = clocks[State]; +#if gcdENABLE_LONG_IDLE_POWEROFF + if(gcvPOWER_IDLE_BROADCAST==curState) { + cancel_delayed_work_sync(&poweroff_work); + schedule_delayed_work(&poweroff_work, 5*HZ); + } else if(gcvPOWER_OFF_BROADCAST==curState) { + // NULL + } else { + cancel_delayed_work_sync(&poweroff_work); + } +#endif + if ((flag == 0) || (Hardware->settingPowerState)) { #if gcdENABLE_LONG_IDLE_POWEROFF diff --git a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h index 75484e663c8f..eb3debc75133 100755 --- a/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h +++ b/drivers/staging/rk29/vivante/hal/inc/gc_hal_options.h @@ -294,7 +294,7 @@ ÕâÑù¿ÉÒÔʹijЩ²»Ê¹ÓÃGPUµÄ³¡¾°µÄ¹¦ºÄ½øÒ»²½½µµÍ£¬ÈçÊÓÆµ²¥·Åʱ£¬Ò»¼¶´ý»úʱ£¬ »ò³¤Ê±¼ä²»²Ù×÷½çÃæµ«»¹Î´½øÈëÒ»¼¶´ý»ú */ -#define gcdENABLE_LONG_IDLE_POWEROFF 0 +#define gcdENABLE_LONG_IDLE_POWEROFF 1 #endif /* __gc_hal_options_h_ */ 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 29fb592e7db4..760a6fb84add 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 @@ -708,8 +708,8 @@ static void drv_exit(void) gcmkTRACE_ZONE(gcvLEVEL_VERBOSE, gcvZONE_DRIVER, "[galcore] Entering drv_exit\n"); -#if 0 - misc_deregister(&miscdev); +#if 1 + //misc_deregister(&miscdev); #else device_destroy(gpuClass, MKDEV(major, 0)); -- 2.34.1