20100903+0m5
[sgx.git] / pvr / sgxkick.c
index 08df1d5..6aab05b 100644 (file)
@@ -1,26 +1,26 @@
 /**********************************************************************
  *
  * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
- * 
+ *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms and conditions of the GNU General Public License,
  * version 2, as published by the Free Software Foundation.
- * 
- * This program is distributed in the hope it will be useful but, except 
- * as otherwise stated in writing, without any warranty; without even the 
- * implied warranty of merchantability or fitness for a particular purpose. 
+ *
+ * This program is distributed in the hope it will be useful but, except
+ * as otherwise stated in writing, without any warranty; without even the
+ * implied warranty of merchantability or fitness for a particular purpose.
  * See the GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License along with
  * this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- * 
+ *
  * The full GNU General Public License is included in this distribution in
  * the file called "COPYING".
  *
  * Contact Information:
  * Imagination Technologies Ltd. <gpl-support@imgtec.com>
- * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
+ * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
  *
  ******************************************************************************/
 
@@ -28,7 +28,7 @@
 #include "services_headers.h"
 #include "sgxinfo.h"
 #include "sgxinfokm.h"
-#if defined (PDUMP)
+#if defined(PDUMP)
 #include "sgxapi_km.h"
 #include "pdump_km.h"
 #endif
 #include "pvr_debug.h"
 #include "sgxutils.h"
 
-IMG_EXPORT
-    PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle,
-                            PVR3DIF4_CCB_KICK * psCCBKick)
+enum PVRSRV_ERROR SGXDoKickKM(void *hDevHandle,
+                            struct PVR3DIF4_CCB_KICK *psCCBKick)
 {
-       PVRSRV_ERROR eError;
-       PVRSRV_KERNEL_SYNC_INFO *psSyncInfo;
-       PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo =
-           (PVRSRV_KERNEL_MEM_INFO *) psCCBKick->hCCBKernelMemInfo;
-       PVR3DIF4_CMDTA_SHARED *psTACmd;
-       IMG_UINT32 i;
-       PVRSRV_DEVICE_NODE *psDeviceNode;
-       PVRSRV_SGXDEV_INFO *psDevInfo;
-
-       psDeviceNode = (PVRSRV_DEVICE_NODE *) hDevHandle;
-       psDevInfo = (PVRSRV_SGXDEV_INFO *) psDeviceNode->pvDevice;
-
-       if (psCCBKick->bKickRender) {
+       enum PVRSRV_ERROR eError;
+       struct PVRSRV_KERNEL_SYNC_INFO *psSyncInfo;
+       struct PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo =
+           (struct PVRSRV_KERNEL_MEM_INFO *)psCCBKick->hCCBKernelMemInfo;
+       struct PVR3DIF4_CMDTA_SHARED *psTACmd;
+       u32 i;
+       struct PVRSRV_DEVICE_NODE *psDeviceNode;
+       struct PVRSRV_SGXDEV_INFO *psDevInfo;
+
+       psDeviceNode = (struct PVRSRV_DEVICE_NODE *)hDevHandle;
+       psDevInfo = (struct PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice;
+
+       if (psCCBKick->bKickRender)
                ++psDevInfo->ui32KickTARenderCounter;
-       }
        ++psDevInfo->ui32KickTACounter;
 
        if (!CCB_OFFSET_IS_VALID
-           (PVR3DIF4_CMDTA_SHARED, psCCBMemInfo, psCCBKick, ui32CCBOffset)) {
-               PVR_DPF((PVR_DBG_ERROR, "SGXDoKickKM: Invalid CCB offset"));
+           (struct PVR3DIF4_CMDTA_SHARED, psCCBMemInfo, psCCBKick,
+            ui32CCBOffset)) {
+               PVR_DPF(PVR_DBG_ERROR, "SGXDoKickKM: Invalid CCB offset");
                return PVRSRV_ERROR_INVALID_PARAMS;
        }
        psTACmd =
-           CCB_DATA_FROM_OFFSET(PVR3DIF4_CMDTA_SHARED, psCCBMemInfo, psCCBKick,
-                                ui32CCBOffset);
+           CCB_DATA_FROM_OFFSET(struct PVR3DIF4_CMDTA_SHARED, psCCBMemInfo,
+                                psCCBKick, ui32CCBOffset);
 
        if (psCCBKick->hTA3DSyncInfo) {
                psSyncInfo =
-                   (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->hTA3DSyncInfo;
+                   (struct PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTA3DSyncInfo;
                psTACmd->sTA3DDependancy.sWriteOpsCompleteDevVAddr =
                    psSyncInfo->sWriteOpsCompleteDevVAddr;
 
                psTACmd->sTA3DDependancy.ui32WriteOpPendingVal =
                    psSyncInfo->psSyncData->ui32WriteOpsPending;
 
-               if (psCCBKick->bTADependency) {
+               if (psCCBKick->bTADependency)
                        psSyncInfo->psSyncData->ui32WriteOpsPending++;
-               }
        }
 
-       if (psCCBKick->hTASyncInfo != IMG_NULL) {
-               psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->hTASyncInfo;
+       if (psCCBKick->hTASyncInfo != NULL) {
+               psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                                               psCCBKick->hTASyncInfo;
 
                psTACmd->sTQSyncReadOpsCompleteDevVAddr =
                    psSyncInfo->sReadOpsCompleteDevVAddr;
@@ -95,8 +94,9 @@ IMG_EXPORT
                    psSyncInfo->psSyncData->ui32WriteOpsPending;
        }
 
-       if (psCCBKick->h3DSyncInfo != IMG_NULL) {
-               psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->h3DSyncInfo;
+       if (psCCBKick->h3DSyncInfo != NULL) {
+               psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                                                       psCCBKick->h3DSyncInfo;
 
                psTACmd->s3DTQSyncReadOpsCompleteDevVAddr =
                    psSyncInfo->sReadOpsCompleteDevVAddr;
@@ -110,27 +110,25 @@ IMG_EXPORT
        }
 
        psTACmd->ui32NumTAStatusVals = psCCBKick->ui32NumTAStatusVals;
-       if (psCCBKick->ui32NumTAStatusVals != 0) {
+       if (psCCBKick->ui32NumTAStatusVals != 0)
 
                for (i = 0; i < psCCBKick->ui32NumTAStatusVals; i++) {
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           ahTAStatusSyncInfo[i];
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->ahTAStatusSyncInfo[i];
 
                        psTACmd->sCtlTAStatusInfo[i].sStatusDevAddr =
-                           psSyncInfo->sReadOpsCompleteDevVAddr;
+                               psSyncInfo->sReadOpsCompleteDevVAddr;
 
                        psTACmd->sCtlTAStatusInfo[i].ui32StatusValue =
-                           psSyncInfo->psSyncData->ui32ReadOpsPending;
+                               psSyncInfo->psSyncData->ui32ReadOpsPending;
                }
-       }
 
        psTACmd->ui32Num3DStatusVals = psCCBKick->ui32Num3DStatusVals;
-       if (psCCBKick->ui32Num3DStatusVals != 0) {
+       if (psCCBKick->ui32Num3DStatusVals != 0)
 
                for (i = 0; i < psCCBKick->ui32Num3DStatusVals; i++) {
                        psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
+                           (struct PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->
                            ah3DStatusSyncInfo[i];
 
                        psTACmd->sCtl3DStatusInfo[i].sStatusDevAddr =
@@ -139,40 +137,39 @@ IMG_EXPORT
                        psTACmd->sCtl3DStatusInfo[i].ui32StatusValue =
                            psSyncInfo->psSyncData->ui32ReadOpsPending;
                }
-       }
 
        psTACmd->ui32NumSrcSyncs = psCCBKick->ui32NumSrcSyncs;
        for (i = 0; i < psCCBKick->ui32NumSrcSyncs; i++) {
                psSyncInfo =
-                   (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
+                   (struct PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->
                    ahSrcKernelSyncInfo[i];
 
                psTACmd->asSrcSyncs[i].sWriteOpsCompleteDevVAddr =
-                   psSyncInfo->sWriteOpsCompleteDevVAddr;
+                       psSyncInfo->sWriteOpsCompleteDevVAddr;
                psTACmd->asSrcSyncs[i].sReadOpsCompleteDevVAddr =
-                   psSyncInfo->sReadOpsCompleteDevVAddr;
+                       psSyncInfo->sReadOpsCompleteDevVAddr;
 
                psTACmd->asSrcSyncs[i].ui32ReadOpPendingVal =
-                   psSyncInfo->psSyncData->ui32ReadOpsPending++;
+                       psSyncInfo->psSyncData->ui32ReadOpsPending++;
 
                psTACmd->asSrcSyncs[i].ui32WriteOpPendingVal =
-                   psSyncInfo->psSyncData->ui32WriteOpsPending;
+                       psSyncInfo->psSyncData->ui32WriteOpsPending;
 
        }
 
-       if (psCCBKick->bFirstKickOrResume
-           && psCCBKick->hRenderSurfSyncInfo != IMG_NULL) {
-               psSyncInfo =
-                   (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->hRenderSurfSyncInfo;
+       if (psCCBKick->bFirstKickOrResume &&
+           psCCBKick->hRenderSurfSyncInfo != NULL) {
+               psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                                               psCCBKick->hRenderSurfSyncInfo;
                psTACmd->sWriteOpsCompleteDevVAddr =
-                   psSyncInfo->sWriteOpsCompleteDevVAddr;
+                       psSyncInfo->sWriteOpsCompleteDevVAddr;
                psTACmd->sReadOpsCompleteDevVAddr =
-                   psSyncInfo->sReadOpsCompleteDevVAddr;
+                       psSyncInfo->sReadOpsCompleteDevVAddr;
 
                psTACmd->ui32ReadOpsPendingVal =
-                   psSyncInfo->psSyncData->ui32ReadOpsPending;
+                       psSyncInfo->psSyncData->ui32ReadOpsPending;
                psTACmd->ui32WriteOpsPendingVal =
-                   psSyncInfo->psSyncData->ui32WriteOpsPending++;
+                       psSyncInfo->psSyncData->ui32WriteOpsPending++;
 
 #if defined(PDUMP)
                if (PDumpIsCaptureFrameKM()) {
@@ -180,18 +177,15 @@ IMG_EXPORT
 
                                PDUMPCOMMENT("Init render surface last op\r\n");
 
-                               PDUMPMEM(IMG_NULL,
-                                        psSyncInfo->psSyncDataMemInfoKM,
-                                        0,
-                                        sizeof(PVRSRV_SYNC_DATA),
-                                        0,
-                                        MAKEUNIQUETAG(psSyncInfo->
+                               PDUMPMEM(NULL, psSyncInfo->psSyncDataMemInfoKM,
+                                        0, sizeof(struct PVRSRV_SYNC_DATA),
+                                        0, MAKEUNIQUETAG(psSyncInfo->
                                                       psSyncDataMemInfoKM));
 
                                PDUMPMEM(&psSyncInfo->psSyncData->
                                         ui32LastOpDumpVal,
                                         psSyncInfo->psSyncDataMemInfoKM,
-                                        offsetof(PVRSRV_SYNC_DATA,
+                                        offsetof(struct PVRSRV_SYNC_DATA,
                                                  ui32WriteOpsComplete),
                                         sizeof(psSyncInfo->psSyncData->
                                                ui32WriteOpsComplete), 0,
@@ -207,75 +201,62 @@ IMG_EXPORT
        if (PDumpIsCaptureFrameKM()) {
                PDUMPCOMMENT("Shared part of TA command\r\n");
 
-               PDUMPMEM(psTACmd,
-                        psCCBMemInfo,
-                        psCCBKick->ui32CCBDumpWOff,
-                        sizeof(PVR3DIF4_CMDTA_SHARED),
-                        0, MAKEUNIQUETAG(psCCBMemInfo));
+               PDUMPMEM(psTACmd, psCCBMemInfo, psCCBKick->ui32CCBDumpWOff,
+                        sizeof(struct PVR3DIF4_CMDTA_SHARED), 0,
+                        MAKEUNIQUETAG(psCCBMemInfo));
 
-               if (psCCBKick->hRenderSurfSyncInfo != IMG_NULL) {
-                       IMG_UINT32 ui32HackValue;
+               if (psCCBKick->hRenderSurfSyncInfo != NULL) {
+                       u32 ui32HackValue;
 
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           hRenderSurfSyncInfo;
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->hRenderSurfSyncInfo;
                        ui32HackValue =
-                           psSyncInfo->psSyncData->ui32LastOpDumpVal - 1;
+                               psSyncInfo->psSyncData->ui32LastOpDumpVal - 1;
 
-                       PDUMPCOMMENT
-                           ("Hack render surface last op in TA cmd\r\n");
+                       PDUMPCOMMENT(
+                               "Hack render surface last op in TA cmd\r\n");
 
-                       PDUMPMEM(&ui32HackValue,
-                                psCCBMemInfo,
+                       PDUMPMEM(&ui32HackValue, psCCBMemInfo,
                                 psCCBKick->ui32CCBDumpWOff +
-                                offsetof(PVR3DIF4_CMDTA_SHARED,
+                                offsetof(struct PVR3DIF4_CMDTA_SHARED,
                                          ui32WriteOpsPendingVal),
-                                sizeof(IMG_UINT32), 0,
-                                MAKEUNIQUETAG(psCCBMemInfo));
+                                sizeof(u32), 0, MAKEUNIQUETAG(psCCBMemInfo));
 
                        ui32HackValue = 0;
-                       PDUMPCOMMENT
-                           ("Hack render surface read op in TA cmd\r\n");
+                       PDUMPCOMMENT(
+                               "Hack render surface read op in TA cmd\r\n");
 
-                       PDUMPMEM(&ui32HackValue,
-                                psCCBMemInfo,
+                       PDUMPMEM(&ui32HackValue, psCCBMemInfo,
                                 psCCBKick->ui32CCBDumpWOff +
-                                offsetof(PVR3DIF4_CMDTA_SHARED,
+                                offsetof(struct PVR3DIF4_CMDTA_SHARED,
                                          sReadOpsCompleteDevVAddr),
-                                sizeof(IMG_UINT32), 0,
-                                MAKEUNIQUETAG(psCCBMemInfo));
+                                sizeof(u32), 0, MAKEUNIQUETAG(psCCBMemInfo));
                }
 
                for (i = 0; i < psCCBKick->ui32NumTAStatusVals; i++) {
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           ahTAStatusSyncInfo[i];
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->ahTAStatusSyncInfo[i];
 
                        PDUMPCOMMENT("Hack TA status value in TA cmd\r\n");
 
                        PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal,
-                                psCCBMemInfo,
-                                psCCBKick->ui32CCBDumpWOff +
-                                offsetof(PVR3DIF4_CMDTA_SHARED,
+                                psCCBMemInfo, psCCBKick->ui32CCBDumpWOff +
+                                offsetof(struct PVR3DIF4_CMDTA_SHARED,
                                          sCtlTAStatusInfo[i].ui32StatusValue),
-                                sizeof(IMG_UINT32), 0,
-                                MAKEUNIQUETAG(psCCBMemInfo));
+                                sizeof(u32), 0, MAKEUNIQUETAG(psCCBMemInfo));
                }
 
                for (i = 0; i < psCCBKick->ui32Num3DStatusVals; i++) {
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           ah3DStatusSyncInfo[i];
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->ah3DStatusSyncInfo[i];
 
                        PDUMPCOMMENT("Hack 3D status value in TA cmd\r\n");
 
                        PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal,
-                                psCCBMemInfo,
-                                psCCBKick->ui32CCBDumpWOff +
-                                offsetof(PVR3DIF4_CMDTA_SHARED,
+                                psCCBMemInfo, psCCBKick->ui32CCBDumpWOff +
+                                offsetof(struct PVR3DIF4_CMDTA_SHARED,
                                          sCtl3DStatusInfo[i].ui32StatusValue),
-                                sizeof(IMG_UINT32), 0,
-                                MAKEUNIQUETAG(psCCBMemInfo));
+                                sizeof(u32), 0, MAKEUNIQUETAG(psCCBMemInfo));
                }
        }
 #endif
@@ -284,41 +265,35 @@ IMG_EXPORT
            SGXScheduleCCBCommandKM(hDevHandle, psCCBKick->eCommand,
                                    &psCCBKick->sCommand, KERNEL_ID);
        if (eError == PVRSRV_ERROR_RETRY) {
-               if (psCCBKick->bFirstKickOrResume
-                   && psCCBKick->hRenderSurfSyncInfo != IMG_NULL) {
-
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           hRenderSurfSyncInfo;
+               if (psCCBKick->bFirstKickOrResume &&
+                   psCCBKick->hRenderSurfSyncInfo != NULL) {
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->hRenderSurfSyncInfo;
                        psSyncInfo->psSyncData->ui32WriteOpsPending--;
                }
 
                for (i = 0; i < psCCBKick->ui32NumSrcSyncs; i++) {
-                       psSyncInfo =
-                           (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                           ahSrcKernelSyncInfo[i];
+                       psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                               psCCBKick->ahSrcKernelSyncInfo[i];
                        psSyncInfo->psSyncData->ui32ReadOpsPending--;
                }
 
 #if defined(PDUMP)
-               if (psCCBKick->bFirstKickOrResume
-                   && psCCBKick->hRenderSurfSyncInfo != IMG_NULL) {
+               if (psCCBKick->bFirstKickOrResume &&
+                   psCCBKick->hRenderSurfSyncInfo != NULL)
                        if (PDumpIsCaptureFrameKM()) {
-                               psSyncInfo =
-                                   (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->
-                                   hRenderSurfSyncInfo;
+                               psSyncInfo = (struct PVRSRV_KERNEL_SYNC_INFO *)
+                                       psCCBKick->hRenderSurfSyncInfo;
                                psSyncInfo->psSyncData->ui32LastOpDumpVal--;
                        }
-               }
 #endif
 
                return eError;
        } else if (PVRSRV_OK != eError) {
-               PVR_DPF((PVR_DBG_ERROR,
-                        "SGXDoKickKM: SGXScheduleCCBCommandKM failed."));
+               PVR_DPF(PVR_DBG_ERROR,
+                        "SGXDoKickKM: SGXScheduleCCBCommandKM failed.");
                return eError;
        }
 
-
        return eError;
 }