summaryrefslogtreecommitdiff
path: root/drivers/mxc
diff options
context:
space:
mode:
authorwu guoxing <b39297@freescale.com>2012-01-09 09:56:37 +0800
committerJason Liu <r64343@freescale.com>2012-01-19 12:41:22 +0800
commite46fedbb4e7e7a23b7a0aa631b63e9d8c5af22cc (patch)
treecb777dd1068a025d1fb79485390b6319004fda6b /drivers/mxc
parent2b8baba21c6d026e3253f4e6a5101ecc8a4396b9 (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.c25
-rw-r--r--drivers/mxc/gpu-viv/arch/GC350/hal/kernel/gc_hal_kernel_hardware_vg.h2
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(&currentTime));
@@ -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(&currentTime));
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;