diff options
author | wu guoxing <b39297@freescale.com> | 2012-01-09 09:56:37 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-19 12:41:22 +0800 |
commit | e46fedbb4e7e7a23b7a0aa631b63e9d8c5af22cc (patch) | |
tree | cb777dd1068a025d1fb79485390b6319004fda6b /drivers/mxc | |
parent | 2b8baba21c6d026e3253f4e6a5101ecc8a4396b9 (diff) |
ENGR00171535:gpu-viv: ENGR00170946 is missed when upgrading to viv 4.6.4
rmmod fix for gpu is missed, add it back.
and also, change from manual reset to auto reset when gckOS_CreateSignal
Signed-off-by: Wu Guoxing <b39297@freescale.com>
Acked-by: Lily Zhang
Diffstat (limited to 'drivers/mxc')
-rw-r--r-- | drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c | 25 | ||||
-rw-r--r-- | drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h | 2 |
2 files changed, 11 insertions, 16 deletions
diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c index a9aec1484508..b43e8af25225 100644 --- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c +++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.c @@ -139,21 +139,16 @@ _TimeIdleThread( /* Cast the object. */ gckVGHARDWARE hardware = (gckVGHARDWARE) ThreadParameter; - gcmkVERIFY_OK(gckOS_AcquireSemaphore( - hardware->os, - hardware->idleSemaphore)); - while(gcvTRUE) { + gcmkVERIFY_OK(gckOS_WaitSignal(hardware->os, + hardware->idleSignal, gcvINFINITE)); + if (hardware->killThread) { break; } - gcmkVERIFY_OK(gckOS_AcquireSemaphore( - hardware->os, - hardware->idleSemaphore)); - do { gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); @@ -245,7 +240,7 @@ gckVGHARDWARE_Construct( hardware->chipMinorFeatures2 = chipMinorFeatures2; hardware->powerMutex = gcvNULL; - hardware->idleSemaphore = gcvNULL; + hardware->idleSignal = gcvNULL; hardware->chipPowerState = gcvPOWER_OFF; hardware->chipPowerStateGlobal = gcvPOWER_ON; hardware->clockState = gcvTRUE; @@ -270,8 +265,7 @@ gckVGHARDWARE_Construct( gcmkVERIFY_OK(gckVGHARDWARE_SetFastClear(hardware, -1)); gcmkERR_BREAK(gckOS_CreateMutex(Os, &hardware->powerMutex)); - - gcmkERR_BREAK(gckOS_CreateSemaphore(Os, &hardware->idleSemaphore)); + gcmkERR_BREAK(gckOS_CreateSignal(Os, gcvFALSE, &hardware->idleSignal)); #if gcdPOWER_MANAGEMENT gcmkERR_BREAK(gckOS_StartThread( hardware->os, @@ -326,6 +320,7 @@ gckVGHARDWARE_Destroy( #if gcdPOWER_MANAGEMENT Hardware->killThread = gcvTRUE; + gcmkVERIFY_OK(gckOS_Signal(Hardware->os, Hardware->idleSignal, gcvTRUE)); gcmkVERIFY_OK(gckOS_StopThread(Hardware->os, Hardware->timeIdleThread)); #endif /* Mark the object as unknown. */ @@ -337,10 +332,10 @@ gckVGHARDWARE_Destroy( Hardware->os, Hardware->powerMutex)); } - if (Hardware->idleSemaphore != gcvNULL) + if (Hardware->idleSignal != gcvNULL) { - gcmkVERIFY_OK(gckOS_DestroySemaphore( - Hardware->os, Hardware->idleSemaphore)); + gcmkVERIFY_OK(gckOS_DestroySignal( + Hardware->os, Hardware->idleSignal)); } /* Free the object. */ @@ -1790,7 +1785,7 @@ gckVGHARDWARE_SetPowerManagementState( if (State == gcvPOWER_IDLE) { - gcmkONERROR(gckOS_ReleaseSemaphore(os, Hardware->idleSemaphore)); + gcmkVERIFY_OK(gckOS_Signal(os, Hardware->idleSignal, gcvTRUE)); } /* Reset power off time */ gcmkVERIFY_OK(gckOS_GetTicks(¤tTime)); diff --git a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h index a4ec3eb05afc..cff634f8bbec 100644 --- a/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h +++ b/drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h @@ -57,7 +57,7 @@ struct _gckVGHARDWARE gctBOOL clockState; gctBOOL powerState; gctPOINTER powerMutex; - gctSEMAPHORE idleSemaphore; + gctSIGNAL idleSignal; gctUINT32 powerProcess; gctUINT32 powerThread; gceCHIPPOWERSTATE chipPowerState; |