aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c')
-rw-r--r--drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c b/drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c
index 50a6e63..8114e3c 100644
--- a/drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c
+++ b/drivers/gpu/pvr/omaplfb/omaplfb_displayclass.c
@@ -837,6 +837,17 @@ static IMG_BOOL ProcessFlipV2(IMG_HANDLE hCmdCookie,
BUG_ON(i + 1 >= ui32NumMemInfos);
psDssData->ovls[k].ba = (u32)LinuxMemAreaToCpuPAddr(psLinuxMemArea, 0).uiAddr;
+ /*
+ * :HACK: increment display ref count and save pointer
+ * to it in stride which is not used for 2D buffers.
+ */
+ atomic_inc(container_of(&ppsMemInfos[i]->psKernelSyncInfo->psSyncData->ui32DisplayRefCount, atomic_t, counter));
+ pr_debug("syncData++ = %p.%d\n",
+ &ppsMemInfos[i]->psKernelSyncInfo->psSyncData->ui32DisplayRefCount,
+ ppsMemInfos[i]->psKernelSyncInfo->psSyncData->ui32DisplayRefCount);
+ psDssData->ovls[k].cfg.stride =
+ (u32) &ppsMemInfos[i]->psKernelSyncInfo->psSyncData->ui32DisplayRefCount;
+
i++;
psLinuxMemArea = ppsMemInfos[i]->sMemBlk.hOSMemHandle;
psDssData->ovls[k].uv = (u32)LinuxMemAreaToCpuPAddr(psLinuxMemArea, 0).uiAddr;