From: Ajit Kamat <[email protected]>

IMG ED4043: IPGear 10334: TXTTYPE for EGL image source and by default

Make sure to use matching usermode driver.

Signed-off-by: Ajit Kamat <[email protected]>
Signed-off-by: Hitesh K. Patel <[email protected]>
---
 drivers/staging/mrst/pvr/include4/pvrversion.h     |    4 +-
 drivers/staging/mrst/pvr/include4/servicesext.h    |   10 +++
 .../services4/srvkm/bridged/bridged_pvr_bridge.c   |    2 +-
 .../mrst/pvr/services4/srvkm/common/pvrsrv.c       |   26 ++++++--
 .../mrst/pvr/services4/srvkm/common/queue.c        |    4 +-
 .../pvr/services4/srvkm/devices/sgx/sgxconfig.h    |    9 ++-
 .../mrst/pvr/services4/srvkm/devices/sgx/sgxinit.c |    4 +-
 .../pvr/services4/srvkm/devices/sgx/sgxpower.c     |    6 +-
 .../pvr/services4/srvkm/devices/sgx/sgxreset.c     |    3 +-
 .../pvr/services4/srvkm/devices/sgx/sgxutils.c     |   19 ++++---
 .../mrst/pvr/services4/srvkm/env/linux/mutils.h    |    2 +-
 .../mrst/pvr/services4/srvkm/env/linux/osfunc.c    |   59 ++++++++++++++++----
 .../mrst/pvr/services4/srvkm/include/device.h      |    5 +-
 .../mrst/pvr/services4/srvkm/include/osfunc.h      |    1 +
 14 files changed, 114 insertions(+), 40 deletions(-)

diff --git a/drivers/staging/mrst/pvr/include4/pvrversion.h 
b/drivers/staging/mrst/pvr/include4/pvrversion.h
index dafdcc0..ad42d39 100644
--- a/drivers/staging/mrst/pvr/include4/pvrversion.h
+++ b/drivers/staging/mrst/pvr/include4/pvrversion.h
@@ -30,8 +30,8 @@
 #define PVRVERSION_MAJ 1
 #define PVRVERSION_MIN 6
 #define PVRVERSION_BRANCH 16
-#define PVRVERSION_BUILD 3999
-#define PVRVERSION_STRING "1.6.16.3999"
+#define PVRVERSION_BUILD 4043
+#define PVRVERSION_STRING "1.6.16.4043"
 #define PVRVERSION_FILE "eurasiacon.pj"
 
 #endif
diff --git a/drivers/staging/mrst/pvr/include4/servicesext.h 
b/drivers/staging/mrst/pvr/include4/servicesext.h
index 34491fd..bcd9cfe 100644
--- a/drivers/staging/mrst/pvr/include4/servicesext.h
+++ b/drivers/staging/mrst/pvr/include4/servicesext.h
@@ -805,6 +805,16 @@ typedef struct PVRSRV_CURSOR_INFO_TAG
 
 } PVRSRV_CURSOR_INFO;
 
+#if defined(PDUMP_SUSPEND_IS_PER_THREAD)
+typedef struct {
+       IMG_UINT32 threadId;
+       int suspendCount;
+} PVRSRV_THREAD_SUSPEND_COUNT;
+
+#define PVRSRV_PDUMP_SUSPEND_Q_NAME "PVRSRVPDumpSuspendMsgQ"
+#define PVRSRV_PDUMP_SUSPEND_Q_LENGTH 8
+
+#endif
 
 typedef struct _PVRSRV_REGISTRY_INFO_
 {
diff --git 
a/drivers/staging/mrst/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c 
b/drivers/staging/mrst/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c
index 49687bc..4cdd6d6 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c
@@ -3107,7 +3107,7 @@ static PVRSRV_ERROR 
ModifyCompleteSyncOpsCallBack(IMG_PVOID               pvParam,
                                goto OpFlushedComplete;
                        }
                        PVR_DPF((PVR_DBG_WARNING, 
"ModifyCompleteSyncOpsCallBack: waiting for current Ops to flush"));
-                       OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+                       OSSleepms(1);
                } END_LOOP_UNTIL_TIMEOUT();
                
                PVR_DPF((PVR_DBG_ERROR, "ModifyCompleteSyncOpsCallBack: timeout 
whilst waiting for current Ops to flush."));
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/common/pvrsrv.c 
b/drivers/staging/mrst/pvr/services4/srvkm/common/pvrsrv.c
index 6e19974..06c30fd 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/common/pvrsrv.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/common/pvrsrv.c
@@ -616,29 +616,41 @@ IMG_EXPORT
 PVRSRV_ERROR IMG_CALLCONV PollForValueKM (volatile IMG_UINT32* pui32LinMemAddr,
                                                                                
  IMG_UINT32 ui32Value,
                                                                                
  IMG_UINT32 ui32Mask,
-                                                                               
  IMG_UINT32 ui32Waitus,
-                                                                               
  IMG_UINT32 ui32Tries)
+                                                                               
  IMG_UINT32                    ui32Timeoutus,
+                                                                               
  IMG_UINT32                    ui32PollPeriodus,
+                                                                               
  IMG_BOOL                              bAllowPreemption)
 {
        {
-               IMG_UINT32      ui32ActualValue = 0xFFFFFFFFU; 
-               IMG_UINT32      uiMaxTime = ui32Tries * ui32Waitus;
+               IMG_UINT32      ui32ActualValue = 0xFFFFFFFFU;
+
+               if (bAllowPreemption)
+               {
+                       PVR_ASSERT(ui32PollPeriodus >= 1000);
+               }
 
                 
-               LOOP_UNTIL_TIMEOUT(uiMaxTime)
+               LOOP_UNTIL_TIMEOUT(ui32Timeoutus)
                {
                        ui32ActualValue = (*pui32LinMemAddr & ui32Mask);
                        if(ui32ActualValue == ui32Value)
                        {
                                return PVRSRV_OK;
                        }
-                       OSWaitus(ui32Waitus);
+
+                       if (bAllowPreemption)
+                       {
+                               OSSleepms(ui32PollPeriodus / 1000);
+                       }
+                       else
+                       {
+                               OSWaitus(ui32PollPeriodus);
+                       }
                } END_LOOP_UNTIL_TIMEOUT();
        
                PVR_DPF((PVR_DBG_ERROR,"PollForValueKM: Timeout. Expected 0x%x 
but found 0x%x (mask 0x%x).",
                                ui32Value, ui32ActualValue, ui32Mask));
        }
 
-
        return PVRSRV_ERROR_TIMEOUT;
 }
 
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/common/queue.c 
b/drivers/staging/mrst/pvr/services4/srvkm/common/queue.c
index be028ff..38c1084 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/common/queue.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/common/queue.c
@@ -342,7 +342,7 @@ PVRSRV_ERROR IMG_CALLCONV 
PVRSRVDestroyCommandQueueKM(PVRSRV_QUEUE_INFO *psQueue
                        bTimeout = IMG_FALSE;
                        break;
                }
-               OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+               OSSleepms(1);
        } END_LOOP_UNTIL_TIMEOUT();
 
        if (bTimeout)
@@ -460,7 +460,7 @@ PVRSRV_ERROR IMG_CALLCONV 
PVRSRVGetQueueSpaceKM(PVRSRV_QUEUE_INFO *psQueue,
                        bTimeout = IMG_FALSE;
                        break;
                }
-               OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+               OSSleepms(1);
        } END_LOOP_UNTIL_TIMEOUT();
 
        if (bTimeout == IMG_TRUE)
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxconfig.h 
b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxconfig.h
index a0ca3e9..55218eb 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxconfig.h
+++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxconfig.h
@@ -87,14 +87,19 @@
 #endif 
 
 #if SGX_FEATURE_ADDRESS_SPACE_SIZE == 28
-       #if defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP)
+
+#if defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP)
        #define SGX_GENERAL_MAPPING_HEAP_BASE            0x00001000
        #define SGX_GENERAL_MAPPING_HEAP_SIZE           
(0x01800000-0x00001000-0x00001000)
-       #endif
                
        #define SGX_GENERAL_HEAP_BASE                            0x01800000
        #define SGX_GENERAL_HEAP_SIZE                           
(0x07000000-0x00001000)
 
+#else
+       #define SGX_GENERAL_HEAP_BASE                            0x00001000
+       #define SGX_GENERAL_HEAP_SIZE                           
(0x08800000-0x00001000-0x00001000)
+#endif
+
        #define SGX_3DPARAMETERS_HEAP_BASE                       0x08800000
        #define SGX_3DPARAMETERS_HEAP_SIZE                      
(0x04000000-0x00001000)
 
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinit.c 
b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinit.c
index ac21785..65189f7 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinit.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinit.c
@@ -105,6 +105,7 @@ static IMG_UINT32 DeinitDevInfo(PVRSRV_SGXDEV_INFO 
*psDevInfo)
 
                OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(PVRSRV_SGX_CCB_INFO), 
psDevInfo->psKernelCCBInfo, IMG_NULL);
        }
+
        return PVRSRV_OK;
 }
 
@@ -389,8 +390,9 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO       
*psDevInfo,
        if (PollForValueKM(&psSGXHostCtl->ui32InitStatus,
                                           PVRSRV_USSE_EDM_INIT_COMPLETE,
                                           PVRSRV_USSE_EDM_INIT_COMPLETE,
+                                          MAX_HW_TIME_US,
                                           MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                          WAIT_TRY_COUNT) != PVRSRV_OK)
+                                          IMG_FALSE) != PVRSRV_OK)
        {
                PVR_DPF((PVR_DBG_ERROR, "SGXInitialise: Wait for uKernel 
initialisation failed"));
                #if !defined(FIX_HW_BRN_23281)
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxpower.c 
b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxpower.c
index aeac6e3..bac5d1b 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxpower.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxpower.c
@@ -197,8 +197,9 @@ static IMG_VOID SGXPollForClockGating (PVRSRV_SGXDEV_INFO   
*psDevInfo,
        if (PollForValueKM((IMG_UINT32 *)psDevInfo->pvRegsBaseKM + 
(ui32Register >> 2),
                                                0,
                                                ui32RegisterValue,
+                                               MAX_HW_TIME_US,
                                                MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                               WAIT_TRY_COUNT) != PVRSRV_OK)
+                                               IMG_FALSE) != PVRSRV_OK)
        {
                PVR_DPF((PVR_DBG_ERROR,"SGXPollForClockGating: %s failed.", 
pszComment));
                PVR_DBG_BREAK;
@@ -263,8 +264,9 @@ PVRSRV_ERROR SGXPrePowerState (IMG_HANDLE                   
        hDevHandle,
                if (PollForValueKM(&psDevInfo->psSGXHostCtl->ui32PowerStatus,
                                                        ui32CompleteStatus,
                                                        ui32CompleteStatus,
+                                                       MAX_HW_TIME_US,
                                                        
MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                                       WAIT_TRY_COUNT) != 
PVRSRV_OK)
+                                                       IMG_FALSE) != PVRSRV_OK)
                {
                        PVR_DPF((PVR_DBG_ERROR,"SGXPrePowerState: Wait for SGX 
ukernel power transition failed."));
                        PVR_DBG_BREAK;
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxreset.c 
b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxreset.c
index 68d0e79..847ca24 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxreset.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxreset.c
@@ -199,8 +199,9 @@ static IMG_VOID SGXResetInvalDC(PVRSRV_SGXDEV_INFO  
*psDevInfo,
                if (PollForValueKM((IMG_UINT32 
*)((IMG_UINT8*)psDevInfo->pvRegsBaseKM + EUR_CR_BIF_MEM_REQ_STAT),
                                                        0,
                                                        
EUR_CR_BIF_MEM_REQ_STAT_READS_MASK,
+                                                       MAX_HW_TIME_US,
                                                        
MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                                       WAIT_TRY_COUNT) != 
PVRSRV_OK)
+                                                       IMG_FALSE) != PVRSRV_OK)
                {
                        PVR_DPF((PVR_DBG_ERROR,"Wait for DC invalidate 
failed."));
                        PVR_DBG_BREAK;
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxutils.c 
b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxutils.c
index afb1a58..de0bf63 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxutils.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxutils.c
@@ -143,7 +143,7 @@ static INLINE SGXMKIF_COMMAND * 
SGXAcquireKernelCCBSlot(PVRSRV_SGX_CCB_INFO *psC
                        return &psCCB->psCommands[*psCCB->pui32WriteOffset];
                }
 
-               OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+               OSSleepms(1);
        } END_LOOP_UNTIL_TIMEOUT();
 
        
@@ -199,8 +199,9 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO       
*psDevInfo,
                if(PollForValueKM(&psSGXHostCtl->ui32InvalStatus,
                                                  
PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE,
                                                  
PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE,
-                                                 2 * 
MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                                 WAIT_TRY_COUNT) != PVRSRV_OK)
+                                                 2 * MAX_HW_TIME_US,
+                                                 MAX_HW_TIME_US/WAIT_TRY_COUNT,
+                                                 IMG_FALSE) != PVRSRV_OK)
                {
                        PVR_DPF((PVR_DBG_ERROR,"SGXScheduleCCBCommand: Wait for 
uKernel to Invalidate BIF cache failed"));
                        PVR_DBG_BREAK;
@@ -331,8 +332,9 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO       
*psDevInfo,
        eError = PollForValueKM (psKernelCCB->pui32ReadOffset,
                                                                
*psKernelCCB->pui32WriteOffset,
                                                                0xFF,
+                                                               MAX_HW_TIME_US,
                                                                
MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                                               WAIT_TRY_COUNT);
+                                                               IMG_FALSE);
        if (eError != PVRSRV_OK)
        {
                eError = PVRSRV_ERROR_TIMEOUT;
@@ -562,8 +564,9 @@ IMG_VOID SGXCleanupRequest(PVRSRV_DEVICE_NODE       
*psDeviceNode,
                if(PollForValueKM(&psSGXHostCtl->ui32CleanupStatus,
                                                  
PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE,
                                                  
PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE,
-                                                 2 * 
MAX_HW_TIME_US/WAIT_TRY_COUNT,
-                                                 WAIT_TRY_COUNT) != PVRSRV_OK)
+                                                 10 * MAX_HW_TIME_US,
+                                                 1000,
+                                                 IMG_TRUE) != PVRSRV_OK)
                {
                        PVR_DPF((PVR_DBG_ERROR,"SGXCleanupRequest: Wait for 
uKernel to clean up (%u) failed", ui32CleanupType));
                        PVR_DBG_BREAK;
@@ -942,7 +945,7 @@ PVRSRV_ERROR SGX2DQueryBlitsCompleteKM(PVRSRV_SGXDEV_INFO   
*psDevInfo,
 
        LOOP_UNTIL_TIMEOUT(MAX_HW_TIME_US)
        {
-               OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+               OSSleepms(1);
 
                if(SGX2DQuerySyncOpsComplete(psSyncInfo, ui32ReadOpsPending, 
ui32WriteOpsPending))
                {
@@ -951,7 +954,7 @@ PVRSRV_ERROR SGX2DQueryBlitsCompleteKM(PVRSRV_SGXDEV_INFO   
*psDevInfo,
                        return PVRSRV_OK;
                }
 
-               OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT);
+               OSSleepms(1);
        } END_LOOP_UNTIL_TIMEOUT();
 
        
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/env/linux/mutils.h 
b/drivers/staging/mrst/pvr/services4/srvkm/env/linux/mutils.h
index 943c2bd..c42eadc 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/env/linux/mutils.h
+++ b/drivers/staging/mrst/pvr/services4/srvkm/env/linux/mutils.h
@@ -46,7 +46,7 @@
        #if defined(__arm__) || defined(__sh__)
                #define PGPROT_WC(pv)   pgprot_writecombine(pv)
        #else
-               #if defined(__i386__)
+               #if defined(__i386__) || defined(__mips__)
                        #define PGPROT_WC(pv)   pgprot_noncached(pv)
                #else
                        #define PGPROT_WC(pv)   pgprot_noncached(pv)
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/env/linux/osfunc.c 
b/drivers/staging/mrst/pvr/services4/srvkm/env/linux/osfunc.c
index fe7b7a0..a52ac0f 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/env/linux/osfunc.c
+++ b/drivers/staging/mrst/pvr/services4/srvkm/env/linux/osfunc.c
@@ -131,6 +131,15 @@ PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, 
IMG_UINT32 ui32Size, IMG_PVOI
     return PVRSRV_OK;
 }
 
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24))
+
+static inline int is_vmalloc_addr(const void *pvCpuVAddr)
+{
+       unsigned long lAddr = (unsigned long)pvCpuVAddr;
+       return lAddr >= VMALLOC_START && lAddr < VMALLOC_END;
+}
+
+#endif
 
 #if !defined(DEBUG_LINUX_MEMORY_ALLOCATIONS)
 PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, 
IMG_PVOID pvCpuVAddr, IMG_HANDLE hBlockAlloc)
@@ -511,13 +520,18 @@ IMG_UINT32 OSClockus(IMG_VOID)
 }
 
 
-
 IMG_VOID OSWaitus(IMG_UINT32 ui32Timeus)
 {
     udelay(ui32Timeus);
 }
 
 
+IMG_VOID OSSleepms(IMG_UINT32 ui32Timems)
+{
+    msleep(ui32Timems);
+}
+
+
 IMG_UINT32 OSGetCurrentProcessIDKM(IMG_VOID)
 {
     if (in_interrupt())
@@ -2632,6 +2646,7 @@ static unsigned long AllocPagesAreaToPhys(LinuxMemArea 
*psLinuxMemArea,
 
 #endif
 
+#ifndef __mips__
 static
 IMG_VOID *FindMMapBaseVAddr(struct list_head *psMMapOffsetStructList,
                                                        IMG_VOID 
*pvRangeAddrStart, IMG_UINT32 ui32Length)
@@ -2693,15 +2708,37 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle,
        {
                case LINUX_MEM_AREA_VMALLOC:
                {
+                       if(is_vmalloc_addr(pvRangeAddrStart))
+                       {
                        pvMinVAddr = 
psLinuxMemArea->uData.sVmalloc.pvVmallocAddress + ui32AreaOffset;
 
 
-                       if(pvRangeAddrStart < pvMinVAddr &&
-                          ui32AreaOffset + ui32Length > ui32AreaLength)
+                               if(pvRangeAddrStart < pvMinVAddr)
                                goto err_blocked;
 
+                               pfnInnerCacheOp(pvRangeAddrStart, 
pvRangeAddrStart + ui32Length);
+               }
+               else
+               {
+
+
+
+                       pvMinVAddr = FindMMapBaseVAddr(psMMapOffsetStructList,
+                                                                               
   pvRangeAddrStart, ui32Length);
+                       if(!pvMinVAddr)
+                               goto err_blocked;
+
+                       pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + 
ui32Length);
+
 #if defined(CONFIG_OUTER_CACHE)
+
+                               pvRangeAddrStart = 
psLinuxMemArea->uData.sVmalloc.pvVmallocAddress +
+                                                                  
(ui32AreaOffset & PAGE_MASK) + (pvRangeAddrStart - pvMinVAddr);
+                       }
+
                        pfnMemAreaToPhys = VMallocAreaToPhys;
+#else
+                       }
 #endif
                        break;
                }
@@ -2731,6 +2768,8 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle,
                        if(!pvMinVAddr)
                                goto err_blocked;
 
+                       pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + 
ui32Length);
+
 #if defined(CONFIG_OUTER_CACHE)
                        ui32PageNumOffset = ((ui32AreaOffset & PAGE_MASK) + 
(pvRangeAddrStart - pvMinVAddr)) >> PAGE_SHIFT;
                        pfnMemAreaToPhys = ExternalKVAreaToPhys;
@@ -2745,6 +2784,8 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle,
                        if(!pvMinVAddr)
                                goto err_blocked;
 
+                       pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + 
ui32Length);
+
 #if defined(CONFIG_OUTER_CACHE)
                        ui32PageNumOffset = ((ui32AreaOffset & PAGE_MASK) + 
(pvRangeAddrStart - pvMinVAddr)) >> PAGE_SHIFT;
                        pfnMemAreaToPhys = AllocPagesAreaToPhys;
@@ -2756,12 +2797,10 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle,
                        PVR_DBG_BREAK;
        }
 
-
-       pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + ui32Length);
-
 #if defined(CONFIG_OUTER_CACHE)
+       PVR_ASSERT(pfnMemAreaToPhys != IMG_NULL);
+
 
-       if (pfnMemAreaToPhys != IMG_NULL)
        {
                unsigned long ulStart, ulEnd, ulLength, ulStartOffset, 
ulEndOffset;
                IMG_UINT32 i, ui32NumPages;
@@ -2789,10 +2828,6 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle,
                        pfnOuterCacheOp(ulStart, ulEnd);
                }
        }
-       else
-       {
-               PVR_DBG_BREAK;
-       }
 #endif
 
        return IMG_TRUE;
@@ -2805,6 +2840,8 @@ err_blocked:
        return IMG_FALSE;
 }
 
+#endif
+
 #if defined(__i386__)
 
 #define ROUND_UP(x,a) (((x) + (a) - 1) & ~((a) - 1))
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/include/device.h 
b/drivers/staging/mrst/pvr/services4/srvkm/include/device.h
index 3b8ff54..1eee63d 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/include/device.h
+++ b/drivers/staging/mrst/pvr/services4/srvkm/include/device.h
@@ -294,8 +294,9 @@ PVRSRV_ERROR IMG_CALLCONV 
PVRSRVDeinitialiseDevice(IMG_UINT32 ui32DevIndex);
 IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV PollForValueKM(volatile IMG_UINT32* 
pui32LinMemAddr,
                                                                                
                   IMG_UINT32 ui32Value,
                                                                                
                   IMG_UINT32 ui32Mask,
-                                                                               
                   IMG_UINT32 ui32Waitus,
-                                                                               
                   IMG_UINT32 ui32Tries);
+                                                                               
                        IMG_UINT32                              ui32Timeoutus,
+                                                                               
                        IMG_UINT32                              
ui32PollPeriodus,
+                                                                               
                        IMG_BOOL                                
bAllowPreemption);
 
 #endif 
 
diff --git a/drivers/staging/mrst/pvr/services4/srvkm/include/osfunc.h 
b/drivers/staging/mrst/pvr/services4/srvkm/include/osfunc.h
index e0d07ab..f35cbf7 100644
--- a/drivers/staging/mrst/pvr/services4/srvkm/include/osfunc.h
+++ b/drivers/staging/mrst/pvr/services4/srvkm/include/osfunc.h
@@ -445,6 +445,7 @@ PVRSRV_ERROR OSCreateResource(PVRSRV_RESOURCE *psResource);
 PVRSRV_ERROR OSDestroyResource(PVRSRV_RESOURCE *psResource);
 IMG_VOID OSBreakResourceLock(PVRSRV_RESOURCE *psResource, IMG_UINT32 ui32ID);
 IMG_VOID OSWaitus(IMG_UINT32 ui32Timeus);
+IMG_VOID OSSleepms(IMG_UINT32 ui32Timems);
 IMG_VOID OSReleaseThreadQuanta(IMG_VOID);
 IMG_UINT32 OSPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 
ui32Func, IMG_UINT32 ui32Reg);
 IMG_VOID OSPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 
ui32Func, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Value);
-- 
1.7.1

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to