[GLP] Enable DMA Buf Handle
authorSaurabh Bipin Chandra <a0131926@ti.com>
Sun, 4 Aug 2013 09:55:14 +0000 (15:25 +0530)
committerSaurabh Bipin Chandra <a0131926@ti.com>
Fri, 30 Aug 2013 05:58:22 +0000 (11:28 +0530)
commit6163ea9eb894f3d88562e31ea442f848a6e8a568
treea2092941c0ce83d28e9faeb0d112f245d225162d
parent060b6ab4d13c30af1062df055889f86ccca3c6b7
[GLP] Enable DMA Buf Handle

This patch converts all MmRpc_Pointer_Param call
to MmRpc_OffsetPointer_Param to take care of MemHeader.

This is not needed from a QNX perspective but is needed
from a Linux perspective. There should no added latency is QNX
due to this change as the rpmsg_rpc kernel path is still the same.

This patch invokes memplugin_share() for the buffers allocated
through DCE to get the corresponding DMA Buf Handles for GLP.
For QNX, the return value is expected to be 0.

For linux, the patch adds the logic for Single vs Multiplanar buffers.

For linux, the memplugin_share() logic is modified to store and
retireve the same dma_buf_fd rather than getting a dup() each time.

These changes makes the following assumptions:
1. All the parameter buffers are allocated through
   DCE/MemPlugin.
2. The CLient passes Virtual pointers, rather than
   DMA Buf Handles to libdce for parameter buffers.
3. For IO Buffers, the client passes DMA Buf Handles
   and are not allocated using DCE/MemPlugin.

This patch assumes MmRpc is exposing translation[i].base.

Change-Id: I7d13f4a4d69fbe8b6dd0317e2a860f0df2061ef9
Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
libdce.c
memplugin.h
memplugin_linux.c