aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaurabh Bipin Chandra2013-07-31 09:50:49 -0500
committerSaurabh Bipin Chandra2013-08-27 16:12:42 -0500
commit17668bcb5a1f7f9db2ba225b1825bc55365c3e66 (patch)
tree20a4d47c840afbb44a6c232e6aac05e0c8ffa77a /libdce.pc.in
parent2bda487ad3ce775777d03cf2b7cfd31d9ec9329a (diff)
downloadrepo-libdce-17668bcb5a1f7f9db2ba225b1825bc55365c3e66.tar.gz
repo-libdce-17668bcb5a1f7f9db2ba225b1825bc55365c3e66.tar.xz
repo-libdce-17668bcb5a1f7f9db2ba225b1825bc55365c3e66.zip
[DCE] Modify approach to pass parameters to IPC
Three approaches were followed for IPC MmRpc calls. 1. All the parameters which need to be sent and received to/from IPU are coupled in a struct allocated from Shared/Tiler Memory. Only the adrress of the struct is passed to MmRpc as a pointer argument. This approach is useful as MmRpc in some cases to avoid multiple translations. This approach is followed for : Engine_open(), Engine_close(), create(), control(), delete() 2. All the parameters which need to be sent are given as separate arguments to MmRpc. This approach is needed when you need to translate an address which is ofsetted from a pointer which in itself needs to be translated. This apporach is followed for : process() For understanding, take the example of inbufs argument in process call(). Inbufs allocated in Shared memory and needs to be translated, has the address of Input buffer (allocated from Tiler). It is not possible to give the Input buffer as an argument to Mmrpc for translation until inbufs is given as a parameter to Mmrpc. Therefore inbuf can't be populated inside another Shared/Tiler memory struct. 3. This approach is a workaround to use approach [1] by solving the issue posed by [2]. This approach is followed for : get_version() Taking the example of inbufs to explain, the Input buffer address will be one of the parameters of the struct (explained in [1]) along with inbufs address. Therefore the Input buffer address will get translated here. At the IPU, this address needs to be copied back to inbufs. This patch aligns all DCE calls except Engine_Open to use Approach [2]. Engine_open still follows Approach [1] because: 1. Engine open takes in pointers to Engine_attrs and Error_code structures. The client may set both, none or either one of them to NULL (as allowed by CE). So that implies either I'll have to pass NULL as param_pointer to IPU or decide not to pass them at all. In the second case, I'll have to pass extra arguments to inform IPU that I have not passed Attrs or ErrorCode or both. I tried passing NULL but mmrpc_write failed. Dependent on ipumm patch: https://gerrit.ext.ti.com/gerrit/omap/#/c/12773 Change-Id: Ic770aaa99a56ea559efe9446e6e98d70726cc7c5 Signed-off-by: Saurabh Bipin Chandra <a0131926@ti.com>
Diffstat (limited to 'libdce.pc.in')
0 files changed, 0 insertions, 0 deletions