aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/sgx
diff options
context:
space:
mode:
authorImagination Technologies Ltd <gpl-support@imgtec.com>2011-06-03 14:47:18 +0100
committerColin Cross <ccross@android.com>2011-06-14 11:42:33 -0700
commit4a968e99063abdd6cf118d85bab68e8f0d8b717c (patch)
tree8d34343697f5daeace3a8a47535c81f72ed67192 /drivers/gpu/pvr/sgx
parent9abc2daf0dab9de8dd1c495335ef727017cc8cca (diff)
downloadkernel_samsung_tuna-4a968e99063abdd6cf118d85bab68e8f0d8b717c.zip
kernel_samsung_tuna-4a968e99063abdd6cf118d85bab68e8f0d8b717c.tar.gz
kernel_samsung_tuna-4a968e99063abdd6cf118d85bab68e8f0d8b717c.tar.bz2
gpu: pvr: Update to DDK 1.8.18.468
Diffstat (limited to 'drivers/gpu/pvr/sgx')
-rw-r--r--drivers/gpu/pvr/sgx/sgxinit.c27
-rw-r--r--drivers/gpu/pvr/sgx/sgxtransfer.c1
2 files changed, 22 insertions, 6 deletions
diff --git a/drivers/gpu/pvr/sgx/sgxinit.c b/drivers/gpu/pvr/sgx/sgxinit.c
index 66bfae5..fc98227 100644
--- a/drivers/gpu/pvr/sgx/sgxinit.c
+++ b/drivers/gpu/pvr/sgx/sgxinit.c
@@ -1222,11 +1222,13 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData)
PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice;
static IMG_UINT32 ui32EDMTasks = 0;
static IMG_UINT32 ui32LockupCounter = 0;
+ static IMG_UINT32 ui32OpenCLDelayCounter = 0;
static IMG_UINT32 ui32NumResets = 0;
#if defined(FIX_HW_BRN_31093)
static IMG_BOOL bBRN31093Inval = IMG_FALSE;
#endif
IMG_UINT32 ui32CurrentEDMTasks;
+ IMG_UINT32 ui32CurrentOpenCLDelayCounter=0;
IMG_BOOL bLockup = IMG_FALSE;
IMG_BOOL bPoweredDown;
@@ -1263,14 +1265,26 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData)
if (ui32LockupCounter == 3)
{
ui32LockupCounter = 0;
-
+ ui32CurrentOpenCLDelayCounter = (psDevInfo->psSGXHostCtl)->ui32OpenCLDelayCount;
+ if(0 != ui32CurrentOpenCLDelayCounter)
+ {
+ if(ui32OpenCLDelayCounter != ui32CurrentOpenCLDelayCounter){
+ ui32OpenCLDelayCounter = ui32CurrentOpenCLDelayCounter;
+ }else{
+ ui32OpenCLDelayCounter -= 1;
+ (psDevInfo->psSGXHostCtl)->ui32OpenCLDelayCount = ui32OpenCLDelayCounter;
+ }
+ goto SGX_NoUKernel_LockUp;
+ }
+
+
#if defined(FIX_HW_BRN_31093)
if (bBRN31093Inval == IMG_FALSE)
{
#if defined(FIX_HW_BRN_29997)
IMG_UINT32 ui32BIFCtrl;
-
+
ui32BIFCtrl = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL);
OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32BIFCtrl | EUR_CR_BIF_CTRL_PAUSE_MASK);
@@ -1291,12 +1305,13 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData)
else
#endif
{
- PVR_DPF((PVR_DBG_ERROR, "SGXOSTimer() detected SGX lockup (0x%x tasks)", ui32EDMTasks));
+ PVR_DPF((PVR_DBG_ERROR, "SGXOSTimer() detected SGX lockup (0x%x tasks)", ui32EDMTasks));
- bLockup = IMG_TRUE;
+ bLockup = IMG_TRUE;
+ (psDevInfo->psSGXHostCtl)->ui32OpenCLDelayCount = 0;
+ }
}
}
- }
else
{
#if defined(FIX_HW_BRN_31093)
@@ -1307,6 +1322,7 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData)
ui32NumResets = psDevInfo->ui32NumResets;
}
}
+SGX_NoUKernel_LockUp:
if (bLockup)
{
@@ -1322,6 +1338,7 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData)
#endif
+
#if defined(SYS_USING_INTERRUPTS)
IMG_BOOL SGX_ISRHandler (IMG_VOID *pvData)
diff --git a/drivers/gpu/pvr/sgx/sgxtransfer.c b/drivers/gpu/pvr/sgx/sgxtransfer.c
index c15e419..22d03f8 100644
--- a/drivers/gpu/pvr/sgx/sgxtransfer.c
+++ b/drivers/gpu/pvr/sgx/sgxtransfer.c
@@ -33,7 +33,6 @@
#include "buffer_manager.h"
#include "sgxinfo.h"
#include "sysconfig.h"
-#include "regpaths.h"
#include "pdump_km.h"
#include "mmu.h"
#include "pvr_bridge.h"