From 72f5977b8f5669f58bda15e6e65782e71dd77dd3 Mon Sep 17 00:00:00 2001 From: Pauli Nieminen Date: Fri, 4 Nov 2011 14:28:02 +0200 Subject: [PATCH] gfx: pvr: Update add shared parameter buffer ioctl 1.7 changed sgx add shared paramter buffer ioctl structure and implementation. Adapt changes to our kernel. Signed-off-by: Pauli Nieminen Signed-off-by: Imre Deak Signed-off-by: Kirill A. Shutemov --- drivers/staging/mrst/pvr/services4/include/sgx_bridge.h | 3 ++- .../mrst/pvr/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c | 3 ++- drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/pb.c | 8 ++++++-- .../staging/mrst/pvr/services4/srvkm/devices/sgx/sgx_bridge_km.h | 3 ++- drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinfokm.h | 1 + 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/staging/mrst/pvr/services4/include/sgx_bridge.h b/drivers/staging/mrst/pvr/services4/include/sgx_bridge.h index 5611e02..a572ade 100644 --- a/drivers/staging/mrst/pvr/services4/include/sgx_bridge.h +++ b/drivers/staging/mrst/pvr/services4/include/sgx_bridge.h @@ -294,14 +294,15 @@ typedef struct PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC_TAG typedef struct PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC_TAG { IMG_UINT32 ui32BridgeFlags; + IMG_UINT32 ui32TotalPBSize; IMG_HANDLE hDevCookie; IMG_HANDLE hSharedPBDescKernelMemInfo; IMG_HANDLE hHWPBDescKernelMemInfo; IMG_HANDLE hBlockKernelMemInfo; IMG_HANDLE hHWBlockKernelMemInfo; - IMG_UINT32 ui32TotalPBSize; IMG_HANDLE *phKernelMemInfoHandles; IMG_UINT32 ui32KernelMemInfoHandlesCount; + IMG_DEV_VIRTADDR sHWPBDescDevVAddr; }PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC; typedef struct PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC_TAG diff --git a/drivers/staging/mrst/pvr/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c b/drivers/staging/mrst/pvr/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c index dd0ec6f..9bcf43a 100644 --- a/drivers/staging/mrst/pvr/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c +++ b/drivers/staging/mrst/pvr/services4/srvkm/bridged/sgx/bridged_sgx_bridge.c @@ -2006,7 +2006,8 @@ SGXAddSharedPBDescBW(IMG_UINT32 ui32BridgeID, psSGXAddSharedPBDescIN->ui32TotalPBSize, &hSharedPBDesc, ppsKernelMemInfos, - ui32KernelMemInfoHandlesCount); + ui32KernelMemInfoHandlesCount, + psSGXAddSharedPBDescIN->sHWPBDescDevVAddr); if (eError != PVRSRV_OK) diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/pb.c b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/pb.c index 1b4c7b4..876d2e5 100644 --- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/pb.c +++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/pb.c @@ -185,6 +185,7 @@ SGXCleanupSharedPBDescKM(PVRSRV_STUB_PBDESC *psStubPBDescIn) psStubPBDescIn->ui32RefCount--; if (psStubPBDescIn->ui32RefCount == 0) { + IMG_DEV_VIRTADDR sHWPBDescDevVAddr = psStubPBDescIn->sHWPBDescDevVAddr; List_PVRSRV_STUB_PBDESC_Remove(psStubPBDescIn); for(i=0 ; iui32SubKernelMemInfosCount; i++) { @@ -215,7 +216,7 @@ SGXCleanupSharedPBDescKM(PVRSRV_STUB_PBDESC *psStubPBDescIn) SGXCleanupRequest(psDeviceNode, - IMG_NULL, + &sHWPBDescDevVAddr, PVRSRV_CLEANUPCMD_PB); } return PVRSRV_OK; @@ -268,7 +269,8 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, IMG_UINT32 ui32TotalPBSize, IMG_HANDLE *phSharedPBDesc, PVRSRV_KERNEL_MEM_INFO **ppsSharedPBDescSubKernelMemInfos, - IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount) + IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount, + IMG_DEV_VIRTADDR sHWPBDescDevVAddr) { PVRSRV_STUB_PBDESC *psStubPBDesc=IMG_NULL; PVRSRV_ERROR eRet = PVRSRV_ERROR_INVALID_PERPROC; @@ -402,6 +404,8 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, } } + psStubPBDesc->sHWPBDescDevVAddr = sHWPBDescDevVAddr; + psResItem = ResManRegisterRes(psPerProc->hResManContext, RESMAN_TYPE_SHARED_PB_DESC, psStubPBDesc, diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgx_bridge_km.h b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgx_bridge_km.h index 1014954..258a57f 100644 --- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgx_bridge_km.h +++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgx_bridge_km.h @@ -120,7 +120,8 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, IMG_UINT32 ui32TotalPBSize, IMG_HANDLE *phSharedPBDesc, PVRSRV_KERNEL_MEM_INFO **psSharedPBDescSubKernelMemInfos, - IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount); + IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount, + IMG_DEV_VIRTADDR sHWPBDescDevVAddr); IMG_IMPORT PVRSRV_ERROR diff --git a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinfokm.h b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinfokm.h index b9d7493..ac368b8 100644 --- a/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinfokm.h +++ b/drivers/staging/mrst/pvr/services4/srvkm/devices/sgx/sgxinfokm.h @@ -302,6 +302,7 @@ struct _PVRSRV_STUB_PBDESC_ IMG_HANDLE hDevCookie; PVRSRV_KERNEL_MEM_INFO *psBlockKernelMemInfo; PVRSRV_KERNEL_MEM_INFO *psHWBlockKernelMemInfo; + IMG_DEV_VIRTADDR sHWPBDescDevVAddr; PVRSRV_STUB_PBDESC *psNext; PVRSRV_STUB_PBDESC **ppsThis; }; -- 2.7.4