]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/edma3_lld.git/blob - packages/ti/sdo/edma3/rm/docs/html/group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html
Updated the Doxygen generated help files for the release 02.11.00.01
[keystone-rtos/edma3_lld.git] / packages / ti / sdo / edma3 / rm / docs / html / group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5 <title>EDMA3 Resource Manager: EDMA3 Resource Manager Basic APIs</title>
6 <link href="tabs.css" rel="stylesheet" type="text/css"/>
7 <link href="doxygen.css" rel="stylesheet" type="text/css"/>
8 </head>
9 <body>
10 <!-- Generated by Doxygen 1.6.1 -->
11 <div class="navigation" id="top">
12   <div class="tabs">
13     <ul>
14       <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
15       <li><a href="modules.html"><span>Modules</span></a></li>
16       <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
17     </ul>
18   </div>
19 </div>
20 <div class="contents">
21 <h1>EDMA3 Resource Manager Basic APIs<br/>
22 <small>
23 [<a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n.html">EDMA3 Resource Manager APIs</a>]</small>
24 </h1><table border="0" cellpadding="0" cellspacing="0">
25 <tr><td colspan="2"><h2>Functions</h2></td></tr>
26 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#gad57281a3cabf45b1520007a1a78f6a53">EDMA3_RM_registerTccCb</a> (EDMA3_RM_Handle hEdmaResMgr, const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *channelObj, unsigned int tcc, <a class="el" href="group___e_d_m_a3___l_l_d___r_m___s_y_m_b_o_l___t_y_p_e_d_e_f.html#gaadca81927be74261ef874009bf8e37d3">EDMA3_RM_TccCallback</a> tccCb, void *cbData)</td></tr>
27 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Registers a transfer completion handler for a specific DMA/QDMA channel.  <a href="#gad57281a3cabf45b1520007a1a78f6a53"></a><br/></td></tr>
28 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#ga34a841202d01ea2e2a35747aa873a984">EDMA3_RM_unregisterTccCb</a> (EDMA3_RM_Handle hEdmaResMgr, const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *channelObj)</td></tr>
29 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Unregister the previously registered callback function against a DMA/QDMA channel.  <a href="#ga34a841202d01ea2e2a35747aa873a984"></a><br/></td></tr>
30 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#gaa8d149c517bb15b5539f22f497327775">EDMA3_RM_allocResource</a> (EDMA3_RM_Handle hEdmaResMgr, <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *resObj)</td></tr>
31 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This API is used to allocate specified EDMA3 Resources like DMA/QDMA channel, PaRAM Set or TCC.  <a href="#gaa8d149c517bb15b5539f22f497327775"></a><br/></td></tr>
32 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#ga2ba87def618a4bdd08b01f8e89ef1e9d">EDMA3_RM_freeResource</a> (EDMA3_RM_Handle hEdmaResMgr, const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *resObj)</td></tr>
33 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This API is used to free previously allocated EDMA3 Resources like DMA/QDMA channel, PaRAM Set or TCC.  <a href="#ga2ba87def618a4bdd08b01f8e89ef1e9d"></a><br/></td></tr>
34 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#ga91a8cc9b909db61a200572ace81a22f3">EDMA3_RM_allocContiguousResource</a> (EDMA3_RM_Handle hEdmaResMgr, <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *firstResIdObj, unsigned int numResources)</td></tr>
35 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate a contiguous region of specified EDMA3 Resource like DMA channel, QDMA channel, PaRAM Set or TCC.  <a href="#ga91a8cc9b909db61a200572ace81a22f3"></a><br/></td></tr>
36 <tr><td class="memItemLeft" align="right" valign="top">EDMA3_RM_Result&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#ga787f3fe9f08e7c0105e56ad1171cabca">EDMA3_RM_freeContiguousResource</a> (EDMA3_RM_Handle hEdmaResMgr, <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *firstResIdObj, unsigned int numResources)</td></tr>
37 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free a contiguous region of specified EDMA3 Resource like DMA channel, QDMA channel, PaRAM Set or TCC, previously allocated.  <a href="#ga787f3fe9f08e7c0105e56ad1171cabca"></a><br/></td></tr>
38 </table>
39 <hr/><h2>Function Documentation</h2>
40 <a class="anchor" id="gad57281a3cabf45b1520007a1a78f6a53"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_registerTccCb" ref="gad57281a3cabf45b1520007a1a78f6a53" args="(EDMA3_RM_Handle hEdmaResMgr, const EDMA3_RM_ResDesc *channelObj, unsigned int tcc, EDMA3_RM_TccCallback tccCb, void *cbData)" -->
41 <div class="memitem">
42 <div class="memproto">
43       <table class="memname">
44         <tr>
45           <td class="memname">EDMA3_RM_Result EDMA3_RM_registerTccCb </td>
46           <td>(</td>
47           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
48           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
49         </tr>
50         <tr>
51           <td class="paramkey"></td>
52           <td></td>
53           <td class="paramtype">const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
54           <td class="paramname"> <em>channelObj</em>, </td>
55         </tr>
56         <tr>
57           <td class="paramkey"></td>
58           <td></td>
59           <td class="paramtype">unsigned int&nbsp;</td>
60           <td class="paramname"> <em>tcc</em>, </td>
61         </tr>
62         <tr>
63           <td class="paramkey"></td>
64           <td></td>
65           <td class="paramtype"><a class="el" href="group___e_d_m_a3___l_l_d___r_m___s_y_m_b_o_l___t_y_p_e_d_e_f.html#gaadca81927be74261ef874009bf8e37d3">EDMA3_RM_TccCallback</a>&nbsp;</td>
66           <td class="paramname"> <em>tccCb</em>, </td>
67         </tr>
68         <tr>
69           <td class="paramkey"></td>
70           <td></td>
71           <td class="paramtype">void *&nbsp;</td>
72           <td class="paramname"> <em>cbData</em></td><td>&nbsp;</td>
73         </tr>
74         <tr>
75           <td></td>
76           <td>)</td>
77           <td></td><td></td><td></td>
78         </tr>
79       </table>
80 </div>
81 <div class="memdoc">
83 <p>Registers a transfer completion handler for a specific DMA/QDMA channel. </p>
84 <p>This function registers a non-NULL callback function for a specific DMA or QDMA channel and enables the completion interrupt for the TCC associated with the underlying channel in the IER/IERH register. It also sets the DRAE/DRAEH register for the TCC associated with the specified DMA/QDMA channel. If user enables the transfer completion interrupts (intermediate or final) in the OPT field of the associated PaRAM Set, the registered callback function will be called by the EDMA3 Resource Manager.</p>
85 <p>If a call-back function is already registered for the channel, the API fails with the error code EDMA3_RM_E_CALLBACK_ALREADY_REGISTERED.</p>
86 <dl><dt><b>Parameters:</b></dt><dd>
87   <table border="0" cellspacing="2" cellpadding="0">
88     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened EDMA3 Resource Manager Instance </td></tr>
89     <tr><td valign="top"></td><td valign="top"><em>channelObj</em>&nbsp;</td><td>[IN] Channel ID and type (DMA or QDMA Channel), allocated earlier, and corresponding to which a callback function needs to be registered against the associated TCC. </td></tr>
90     <tr><td valign="top"></td><td valign="top"><em>tcc</em>&nbsp;</td><td>[IN] TCC against which the handler needs to be registered. </td></tr>
91     <tr><td valign="top"></td><td valign="top"><em>tccCb</em>&nbsp;</td><td>[IN] The Callback function to be registered against the TCC. </td></tr>
92     <tr><td valign="top"></td><td valign="top"><em>cbData</em>&nbsp;</td><td>[IN] Callback data to be passed while calling the callback function.</td></tr>
93   </table>
94   </dd>
95 </dl>
96 <dl class="return"><dt><b>Returns:</b></dt><dd>EDMA3_RM_SOK or EDMA3_RM Error Code</dd></dl>
97 <dl class="note"><dt><b>Note:</b></dt><dd>This function is re-entrant for unique tcc values. It is non- re-entrant for same tcc value. </dd></dl>
99 </div>
100 </div>
101 <a class="anchor" id="ga34a841202d01ea2e2a35747aa873a984"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_unregisterTccCb" ref="ga34a841202d01ea2e2a35747aa873a984" args="(EDMA3_RM_Handle hEdmaResMgr, const EDMA3_RM_ResDesc *channelObj)" -->
102 <div class="memitem">
103 <div class="memproto">
104       <table class="memname">
105         <tr>
106           <td class="memname">EDMA3_RM_Result EDMA3_RM_unregisterTccCb </td>
107           <td>(</td>
108           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
109           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
110         </tr>
111         <tr>
112           <td class="paramkey"></td>
113           <td></td>
114           <td class="paramtype">const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
115           <td class="paramname"> <em>channelObj</em></td><td>&nbsp;</td>
116         </tr>
117         <tr>
118           <td></td>
119           <td>)</td>
120           <td></td><td></td><td></td>
121         </tr>
122       </table>
123 </div>
124 <div class="memdoc">
126 <p>Unregister the previously registered callback function against a DMA/QDMA channel. </p>
127 <p>This function un-registers the previously registered callback function for the DMA/QDMA channel by removing any stored callback function. Moreover, it clears the: Interrupt Enable Register (IER/IERH) by writing to the IECR/IECRH register, for the TCC associated with that particular channel, DRA/DRAEH register for the TCC associated with the specified DMA/QDMA channel</p>
128 <dl><dt><b>Parameters:</b></dt><dd>
129   <table border="0" cellspacing="2" cellpadding="0">
130     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened EDMA3 Resource Manager Instance </td></tr>
131     <tr><td valign="top"></td><td valign="top"><em>channelObj</em>&nbsp;</td><td>[IN] Channel ID and type, allocated earlier (DMA or QDMA Channel ONLY), and corresponding to which a TCC is there. Against that TCC, the callback needs to be un-registered.</td></tr>
132   </table>
133   </dd>
134 </dl>
135 <dl class="return"><dt><b>Returns:</b></dt><dd>EDMA3_RM_SOK or EDMA3_RM Error Code.</dd></dl>
136 <dl class="note"><dt><b>Note:</b></dt><dd>This function is re-entrant for unique (channelObj-&gt;type + channelObj-&gt;resId) combination. It is non-re-entrant for same channelObj Resource. </dd></dl>
138 </div>
139 </div>
140 <a class="anchor" id="gaa8d149c517bb15b5539f22f497327775"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_allocResource" ref="gaa8d149c517bb15b5539f22f497327775" args="(EDMA3_RM_Handle hEdmaResMgr, EDMA3_RM_ResDesc *resObj)" -->
141 <div class="memitem">
142 <div class="memproto">
143       <table class="memname">
144         <tr>
145           <td class="memname">EDMA3_RM_Result EDMA3_RM_allocResource </td>
146           <td>(</td>
147           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
148           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
149         </tr>
150         <tr>
151           <td class="paramkey"></td>
152           <td></td>
153           <td class="paramtype"><a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
154           <td class="paramname"> <em>resObj</em></td><td>&nbsp;</td>
155         </tr>
156         <tr>
157           <td></td>
158           <td>)</td>
159           <td></td><td></td><td></td>
160         </tr>
161       </table>
162 </div>
163 <div class="memdoc">
165 <p>This API is used to allocate specified EDMA3 Resources like DMA/QDMA channel, PaRAM Set or TCC. </p>
166 <p>Note: To free the resources allocated by this API, user should call EDMA3_RM_freeResource () ONLY to de-allocate all the allocated resources.</p>
167 <p>User can either request a specific resource by passing the resource id in 'resObj-&gt;resId' OR request ANY available resource of the type 'resObj-&gt;type'.</p>
168 <p>ANY types of resources are those resources when user doesn't care about the actual resource allocated; user just wants a resource of the type specified. One use-case is to perform memory-to-memory data transfer operation. This operation can be performed using any available DMA or QDMA channel. User doesn't need any specific channel for the same.</p>
169 <p>To allocate a specific resource, first this API checks whether that resource is OWNED by the Resource Manager instance. Then it checks the current availability of that resource.</p>
170 <p>To allocate ANY available resource, this API tries to allocate a resource from the pool of (owned &amp;&amp; non_reserved &amp;&amp; available_right_now) resources.</p>
171 <p>After allocating a DMA/QDMA channel, the same resource is enabled in the shadow region specific register (DRAE/DRAEH/QRAE). DRAE/DRAEH register for a TCC is updated only when user registers a callback function against that TCC using <a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#gad57281a3cabf45b1520007a1a78f6a53" title="Registers a transfer completion handler for a specific DMA/QDMA channel.">EDMA3_RM_registerTccCb()</a>.</p>
172 <p>Allocated PaRAM Set is initialized to NULL before this API returns if user has requested for one.</p>
173 <dl><dt><b>Parameters:</b></dt><dd>
174   <table border="0" cellspacing="2" cellpadding="0">
175     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened Resource Manager Instance. </td></tr>
176     <tr><td valign="top"></td><td valign="top"><em>resObj</em>&nbsp;</td><td>[IN/OUT] Handle to the resource descriptor object, which needs to be allocated. In case user passes a specific resource Id, resObj value is left unchanged. In case user requests ANY available resource, the allocated resource id is returned in resObj.</td></tr>
177   </table>
178   </dd>
179 </dl>
180 <dl class="return"><dt><b>Returns:</b></dt><dd>EDMA3_RM_SOK or EDMA3_RM Error Code</dd></dl>
181 <dl class="note"><dt><b>Note:</b></dt><dd>This function acquires a RM Instance specific semaphore to prevent simultaneous access to the global pool of resources. It is re-entrant, but should not be called from the user callback function (ISR context). </dd></dl>
183 </div>
184 </div>
185 <a class="anchor" id="ga2ba87def618a4bdd08b01f8e89ef1e9d"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_freeResource" ref="ga2ba87def618a4bdd08b01f8e89ef1e9d" args="(EDMA3_RM_Handle hEdmaResMgr, const EDMA3_RM_ResDesc *resObj)" -->
186 <div class="memitem">
187 <div class="memproto">
188       <table class="memname">
189         <tr>
190           <td class="memname">EDMA3_RM_Result EDMA3_RM_freeResource </td>
191           <td>(</td>
192           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
193           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
194         </tr>
195         <tr>
196           <td class="paramkey"></td>
197           <td></td>
198           <td class="paramtype">const <a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
199           <td class="paramname"> <em>resObj</em></td><td>&nbsp;</td>
200         </tr>
201         <tr>
202           <td></td>
203           <td>)</td>
204           <td></td><td></td><td></td>
205         </tr>
206       </table>
207 </div>
208 <div class="memdoc">
210 <p>This API is used to free previously allocated EDMA3 Resources like DMA/QDMA channel, PaRAM Set or TCC. </p>
211 <p>To free a specific resource, first this API checks whether that resource is OWNED by the Resource Manager Instance. Then it checks whether that resource has been allocated by the Resource Manager instance or not.</p>
212 <p>After freeing a DMA/QDMA channel, the same resource is disabled in the shadow region specific register (DRAE/DRAEH/QRAE). This operation is performed for TCC while unregistering the callback function.</p>
213 <dl><dt><b>Parameters:</b></dt><dd>
214   <table border="0" cellspacing="2" cellpadding="0">
215     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened Resource Manager Instance. </td></tr>
216     <tr><td valign="top"></td><td valign="top"><em>resObj</em>&nbsp;</td><td>[IN] Handle to the resource descriptor object, which needs to be freed.</td></tr>
217   </table>
218   </dd>
219 </dl>
220 <dl class="return"><dt><b>Returns:</b></dt><dd>EDMA3_RM_SOK or EDMA3_RM Error Code</dd></dl>
221 <dl class="note"><dt><b>Note:</b></dt><dd>This function disables the global interrupts to prevent simultaneous access to the global pool of resources. It is re-entrant. </dd></dl>
223 </div>
224 </div>
225 <a class="anchor" id="ga91a8cc9b909db61a200572ace81a22f3"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_allocContiguousResource" ref="ga91a8cc9b909db61a200572ace81a22f3" args="(EDMA3_RM_Handle hEdmaResMgr, EDMA3_RM_ResDesc *firstResIdObj, unsigned int numResources)" -->
226 <div class="memitem">
227 <div class="memproto">
228       <table class="memname">
229         <tr>
230           <td class="memname">EDMA3_RM_Result EDMA3_RM_allocContiguousResource </td>
231           <td>(</td>
232           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
233           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
234         </tr>
235         <tr>
236           <td class="paramkey"></td>
237           <td></td>
238           <td class="paramtype"><a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
239           <td class="paramname"> <em>firstResIdObj</em>, </td>
240         </tr>
241         <tr>
242           <td class="paramkey"></td>
243           <td></td>
244           <td class="paramtype">unsigned int&nbsp;</td>
245           <td class="paramname"> <em>numResources</em></td><td>&nbsp;</td>
246         </tr>
247         <tr>
248           <td></td>
249           <td>)</td>
250           <td></td><td></td><td></td>
251         </tr>
252       </table>
253 </div>
254 <div class="memdoc">
256 <p>Allocate a contiguous region of specified EDMA3 Resource like DMA channel, QDMA channel, PaRAM Set or TCC. </p>
257 <p>This API is used to allocate a contiguous region of specified EDMA3 Resources like DMA channel, QDMA channel, PaRAM Set or TCC.</p>
258 <p>User can specify a particular resource Id to start with and go up to the number of resources requested. The specific resource id to start from could be passed in 'firstResIdObject-&gt;resId' and the number of resources requested in 'numResources'.</p>
259 <p>User can also request ANY available resource(s) of the type 'firstResIdObject-&gt;type' by specifying 'firstResIdObject-&gt;resId' as EDMA3_RM_RES_ANY.</p>
260 <p>ANY types of resources are those resources when user doesn't care about the actual resource allocated; user just wants a resource of the type specified. One use-case is to perform memory-to-memory data transfer operation. This operation can be performed using any available DMA or QDMA channel. User doesn't need any specific channel for the same.</p>
261 <p>To allocate specific contiguous resources, first this API checks whether those requested resources are OWNED by the Resource Manager instance. Then it checks the current availability of those resources.</p>
262 <p>To allocate ANY available contiguous resources, this API tries to allocate resources from the pool of (owned &amp;&amp; non_reserved &amp;&amp; available_right_now) resources.</p>
263 <p>After allocating DMA/QDMA channels, the same resources are enabled in the shadow region specific register (DRAE/DRAEH/QRAE). DRAE/DRAEH register for a TCC is updated only when user registers a callback function against that TCC using <a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#gad57281a3cabf45b1520007a1a78f6a53" title="Registers a transfer completion handler for a specific DMA/QDMA channel.">EDMA3_RM_registerTccCb()</a>. Allocated PaRAM Sets are initialized to NULL before this API returns.</p>
264 <dl><dt><b>Parameters:</b></dt><dd>
265   <table border="0" cellspacing="2" cellpadding="0">
266     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened Resource Manager Instance. </td></tr>
267     <tr><td valign="top"></td><td valign="top"><em>firstResIdObj</em>&nbsp;</td><td>[IN] Handle to the first resource descriptor object, which needs to be allocated. firstResIdObject-&gt;resId could be a valid resource id in case user wants to allocate specific resources OR it could be EDMA3_RM_RES_ANY in case user wants only the required number of resources and doesn't care about which resources were allocated. </td></tr>
268     <tr><td valign="top"></td><td valign="top"><em>numResources</em>&nbsp;</td><td>[IN] Number of contiguous resources user wants to allocate.</td></tr>
269   </table>
270   </dd>
271 </dl>
272 <dl class="return"><dt><b>Returns:</b></dt><dd>EDMA3_RM_SOK or EDMA3_RM Error Code</dd></dl>
273 <dl class="note"><dt><b>Note:</b></dt><dd>This function acquires a RM Instance specific semaphore to prevent simultaneous access to the global pool of resources. It is re-entrant, but should not be called from the user callback function (ISR context). </dd></dl>
275 </div>
276 </div>
277 <a class="anchor" id="ga787f3fe9f08e7c0105e56ad1171cabca"></a><!-- doxytag: member="edma3_rm.h::EDMA3_RM_freeContiguousResource" ref="ga787f3fe9f08e7c0105e56ad1171cabca" args="(EDMA3_RM_Handle hEdmaResMgr, EDMA3_RM_ResDesc *firstResIdObj, unsigned int numResources)" -->
278 <div class="memitem">
279 <div class="memproto">
280       <table class="memname">
281         <tr>
282           <td class="memname">EDMA3_RM_Result EDMA3_RM_freeContiguousResource </td>
283           <td>(</td>
284           <td class="paramtype">EDMA3_RM_Handle&nbsp;</td>
285           <td class="paramname"> <em>hEdmaResMgr</em>, </td>
286         </tr>
287         <tr>
288           <td class="paramkey"></td>
289           <td></td>
290           <td class="paramtype"><a class="el" href="struct_e_d_m_a3___r_m___res_desc.html">EDMA3_RM_ResDesc</a> *&nbsp;</td>
291           <td class="paramname"> <em>firstResIdObj</em>, </td>
292         </tr>
293         <tr>
294           <td class="paramkey"></td>
295           <td></td>
296           <td class="paramtype">unsigned int&nbsp;</td>
297           <td class="paramname"> <em>numResources</em></td><td>&nbsp;</td>
298         </tr>
299         <tr>
300           <td></td>
301           <td>)</td>
302           <td></td><td></td><td></td>
303         </tr>
304       </table>
305 </div>
306 <div class="memdoc">
308 <p>Free a contiguous region of specified EDMA3 Resource like DMA channel, QDMA channel, PaRAM Set or TCC, previously allocated. </p>
309 <p>This API frees a contiguous region of specified EDMA3 Resources like DMA channel, QDMA channel, PaRAM Set or TCC, which have been previously allocated. In case of an error during the freeing of any specific resource, user can check the 'firstResIdObj' object to know the last resource id whose freeing has failed. In case of success, there is no need to check this object.</p>
310 <dl><dt><b>Parameters:</b></dt><dd>
311   <table border="0" cellspacing="2" cellpadding="0">
312     <tr><td valign="top"></td><td valign="top"><em>hEdmaResMgr</em>&nbsp;</td><td>[IN] Handle to the previously opened Resource Manager Instance. </td></tr>
313     <tr><td valign="top"></td><td valign="top"><em>firstResIdObj</em>&nbsp;</td><td>[IN/OUT] Handle to the first resource descriptor object, which needs to be freed. In case of an error while freeing any particular resource, the last resource id whose freeing has failed is returned in this resource descriptor object. </td></tr>
314     <tr><td valign="top"></td><td valign="top"><em>numResources</em>&nbsp;</td><td>[IN] Number of contiguous resources allocated previously which user wants to release</td></tr>
315   </table>
316   </dd>
317 </dl>
318 <dl class="note"><dt><b>Note:</b></dt><dd>This is a re-entrant function which internally calls <a class="el" href="group___e_d_m_a3___l_l_d___r_m___f_u_n_c_t_i_o_n___b_a_s_i_c.html#ga2ba87def618a4bdd08b01f8e89ef1e9d" title="This API is used to free previously allocated EDMA3 Resources like DMA/QDMA channel...">EDMA3_RM_freeResource()</a> for resource de-allocation. </dd></dl>
320 </div>
321 </div>
322 </div>
323 <hr size="1"/><address style="text-align: right;"><small>Generated on Fri Jan 28 16:33:50 2011 for EDMA3 Resource Manager by&nbsp;
324 <a href="http://www.doxygen.org/index.html">
325 <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
326 </body>
327 </html>