diff options
Diffstat (limited to 'drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c')
-rw-r--r-- | drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c index 64929350f567..2d7f629e28d8 100644 --- a/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c +++ b/drivers/mxc/gpu-viv/arch/XAQ2/hal/kernel/gc_hal_kernel_hardware.c @@ -3973,6 +3973,23 @@ gckHARDWARE_SetPowerManagementState( ** if lock holder call gckCOMMAND_Stall() */ gcmkONERROR(gcvSTATUS_INVALID_REQUEST); } +#if gcdPOWEROFF_TIMEOUT + else if(State == gcvPOWER_OFF && timeout == gcvTRUE) + { + /* + ** try to aqcuire the mutex with more milliseconds, + ** flush_delayed_work should be running with timeout, + ** so waiting here will cause deadlock */ + status = gckOS_AcquireMutex(os, Hardware->powerMutex, gcdPOWEROFF_TIMEOUT); + + if (status == gcvSTATUS_TIMEOUT) + { + gckOS_Print("GPU Timer deadlock, exit by timeout!!!!\n"); + + gcmkONERROR(gcvSTATUS_INVALID_REQUEST); + } + } +#endif else { /* Acquire the power mutex. */ |