embeddedsw/XilinxProcessorIPLib/drivers/dmaps/doc/html/api/xdmaps_8c.html

1678 lines
77 KiB
HTML
Raw Normal View History

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>
xdmaps.c File Reference
</title>
<link href="$DriverApiDocsCssPath" rel="stylesheet" type="text/css">
</head>
<h3 class="PageHeader">Xilinx Processor IP Library</h3>
<hl>Software Drivers</hl>
<hr class="whs1">
<!-- Generated by Doxygen 1.4.5 -->
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li id="current"><a href="files.html"><span>Files</span></a></li>
</ul></div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File&nbsp;List</span></a></li>
<li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
</ul></div>
<h1>xdmaps.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
This file contains the implementation of the interface functions for <a class="el" href="struct_x_dma_ps.html">XDmaPs</a> driver. Refer to the header file xdmaps.h for more detailed information.<p>
<pre>
MODIFICATION HISTORY:</pre><p>
<pre> Ver Who Date Changes
----- ------ -------- ----------------------------------------------
1.00 hbm 08/19/2010 First Release
1.00 nm 05/25/2011 Updated for minor doxygen corrections
1.02a sg 05/16/2012 Made changes for doxygen and moved some function
header from the xdmaps.h file to <a class="el" href="xdmaps_8c.html">xdmaps.c</a> file
Other cleanup for coding guidelines and CR 657109
and CR 657898
1.03a sg 07/16/2012 changed inline to __inline for CR665681
1.04a nm 10/22/2012 Fixed CR# 681671.
1.05a nm 04/15/2013 Fixed CR# 704396. Removed warnings when compiled
with -Wall and -Wextra option in bsp.
05/01/2013 Fixed CR# 700189. Changed XDmaPs_BuildDmaProg()
function description.
Fixed CR# 704396. Removed unused variables
UseM2MByte &amp; MemBurstLen from XDmaPs_BuildDmaProg()
function.
1.07a asa 11/02/13. Made changes to fix compilation issues for iarcc.
Removed the PDBG prints. By default they were always
defined out and never used. The PDBG is non-standard for
Xilinx drivers and no other driver does something similar.
Since there is no easy way to fix compilation issues with
the IARCC compiler around PDBG, it is better to remove it.
Users can always use xil_printfs if they want to debug.
</pre>
<p>
<code>#include &lt;string.h&gt;</code><br>
<code>#include &quot;xstatus.h&quot;</code><br>
<code>#include &quot;xdmaps.h&quot;</code><br>
<code>#include &quot;xil_io.h&quot;</code><br>
<code>#include &quot;xil_cache.h&quot;</code><br>
<code>#include &quot;xil_printf.h&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#40e1822afcb69823fe6e6ed7fd1129bf">XDmaPs_CfgInitialize</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, <a class="el" href="struct_x_dma_ps___config.html">XDmaPs_Config</a> *Config, u32 EffectiveAddr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#d2b79ddee8d84d18717d019f50432a3c">XDmaPs_ResetManager</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#a89e6e75ea9b87ff84f6b86a9074d449">XDmaPs_ResetChannel</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned int Channel)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#694a9e62a985b5fd4da1b79632c14f44">XDmaPs_FaultISR</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#06a8136f1e15feec2f11668e57bc79e8">XDmaPs_SetDoneHandler</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned Channel, XDmaPsDoneHandler DoneHandler, void *CallbackRef)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#eed59713759fd62ce31a46ef64f726be">XDmaPs_SetFaultHandler</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, XDmaPsFaultHandler FaultHandler, void *CallbackRef)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#588031d58ed437731511e26b7acd5359">XDmaPs_Instr_DMAEND</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#b2ce592fa7427c5cb477bda648241e59">XDmaPs_Instr_DMAGO</a> (char *DmaProg, unsigned int Cn, u32 Imm, unsigned int Ns)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#c8171f2c98a3c3a3a70f42bff97cb024">XDmaPs_Instr_DMALD</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#439a0882b705fab7be9fad6be09ddb62">XDmaPs_Instr_DMALP</a> (char *DmaProg, unsigned Lc, unsigned LoopIterations)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#1f545bdadc39bb079fc0610cd259103c">XDmaPs_Instr_DMALPEND</a> (char *DmaProg, char *BodyStart, unsigned Lc)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#acd7b49207dffc3fb4c9832f74fef9a6">XDmaPs_Instr_DMAMOV</a> (char *DmaProg, unsigned Rd, u32 Imm)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#36e64d83ea833f4411e7509a1ac67348">XDmaPs_Instr_DMANOP</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#4485daf0090c5175b2cc195bc7e061e0">XDmaPs_Instr_DMARMB</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#3530236a1bd597e21bf166a98ed8383e">XDmaPs_Instr_DMASEV</a> (char *DmaProg, unsigned int EventNumber)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#3194b3c75f2ac7bf838ba9fb855e6f09">XDmaPs_Instr_DMAST</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#08b3c86f31f6d0296cc4d2d1c4ee6bd6">XDmaPs_Instr_DMAWMB</a> (char *DmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#c99ddad62eea92d87412751d7858430b">XDmaPs_ToEndianSwapSizeBits</a> (unsigned int EndianSwapSize)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">__inline unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#12436278b7d2e9026a576374b4460830">XDmaPs_ToBurstSizeBits</a> (unsigned BurstSize)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">u32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#892d640625e0657bc4bbcbe78a7109a3">XDmaPs_ToCCRValue</a> (<a class="el" href="struct_x_dma_ps___chan_ctrl.html">XDmaPs_ChanCtrl</a> *ChanCtrl)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#c8471765bac7c471ebb478b2fbcee45b">XDmaPs_ConstructSingleLoop</a> (char *DmaProgStart, int CacheLength, char *DmaProgLoopStart, int LoopCount)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#0d8bf6dff7de7d18c5096d26ed4ac9b8">XDmaPs_ConstructNestedLoop</a> (char *DmaProgStart, int CacheLength, char *DmaProgLoopStart, unsigned int LoopCountOuter, unsigned int LoopCountInner)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#22d515fcf0d6be0ef049d8585c32ccf8">XDmaPs_GenDmaProg</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned int Channel, <a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *Cmd)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#28719551100506cd3d0a0a8922565477">XDmaPs_FreeDmaProg</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned int Channel, <a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *Cmd)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#b8120b3168cbc2ba5367e2b023a1a386">XDmaPs_Start</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned int Channel, <a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *Cmd, int HoldDmaProg)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#ebd3549a3c1bc1931e5266d6f78d018f">XDmaPs_IsActive</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr, unsigned int Channel)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#6cb5f5285e19695193b654ce31ab743c">XDmaPs_DoneISR_0</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#722b2f04120e4b0b6296b0711a9bc9c7">XDmaPs_DoneISR_1</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#c47e90052497fb9ba6856f2bee5d3d3f">XDmaPs_DoneISR_2</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#ab08f54233767d068012c79881f22c25">XDmaPs_DoneISR_3</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#b791cc67f3802731ee4685822cc04f82">XDmaPs_DoneISR_4</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#221b5b63d224a0f0a572403a66b95493">XDmaPs_DoneISR_5</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#47334fd772343ce260c55117a703730e">XDmaPs_DoneISR_6</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#8e8ca61be8c102bb0a2ffdb11ac410f5">XDmaPs_DoneISR_7</a> (<a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *InstPtr)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="xdmaps_8c.html#7d0225794487b591aa947ca66f74852d">XDmaPs_Print_DmaProg</a> (<a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *Cmd)</td></tr>
</table>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="40e1822afcb69823fe6e6ed7fd1129bf"></a><!-- doxytag: member="xdmaps.c::XDmaPs_CfgInitialize" ref="40e1822afcb69823fe6e6ed7fd1129bf" args="(XDmaPs *InstPtr, XDmaPs_Config *Config, u32 EffectiveAddr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_CfgInitialize </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_dma_ps___config.html">XDmaPs_Config</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>Config</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>EffectiveAddr</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Initializes a specific <a class="el" href="struct_x_dma_ps.html">XDmaPs</a> instance such that it is ready to be used. The data format of the device is setup for 8 data bits, 1 stop bit, and no parity by default. The baud rate is set to a default value specified by Config-&gt;DefaultBaudRate if set, otherwise it is set to 19.2K baud. The receive FIFO threshold is set for 8 bytes. The default operating mode of the driver is polled mode.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is a pointer to the <a class="el" href="struct_x_dma_ps.html">XDmaPs</a> instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Config</em>&nbsp;</td><td>is a reference to a structure containing information about a specific <a class="el" href="struct_x_dma_ps.html">XDmaPs</a> driver. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>EffectiveAddr</em>&nbsp;</td><td>is the device base address in the virtual memory address space. The caller is responsible for keeping the address mapping from EffectiveAddr to the device physical base address unchanged once this function is invoked. Unexpected errors may occur if the address mapping changes after this function is called. If address translation is not used, pass in the physical address instead.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd></dd></dl>
<ul>
<li>XST_SUCCESS on initialization completion</li></ul>
<p>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="0d8bf6dff7de7d18c5096d26ed4ac9b8"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ConstructNestedLoop" ref="0d8bf6dff7de7d18c5096d26ed4ac9b8" args="(char *DmaProgStart, int CacheLength, char *DmaProgLoopStart, unsigned int LoopCountOuter, unsigned int LoopCountInner)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_ConstructNestedLoop </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProgStart</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>int&nbsp;</td>
<td class="mdname" nowrap> <em>CacheLength</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProgLoopStart</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>LoopCountOuter</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>LoopCountInner</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construct a nested loop with only DMALD and DMAST in the inner loop body. It uses loop counter 1 for the outer loop and loop counter 0 for the inner loop.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProgStart</em>&nbsp;</td><td>is the very start address of the DMA program. This is used to calculate whether the loop is in a cache line. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>CacheLength</em>&nbsp;</td><td>is the icache line length, in terms of bytes. If it's zero, the performance enhancement feature will be turned off. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>DmaProgLoopStart</em>&nbsp;</td><td>The starting address of the loop (DMALP). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>LoopCountOuter</em>&nbsp;</td><td>The outer loop count. Loop count - 1 will be used to initialize the loop counter. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>LoopCountInner</em>&nbsp;</td><td>The inner loop count. Loop count - 1 will be used to initialize the loop counter.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number byes the nested loop program has.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="c8471765bac7c471ebb478b2fbcee45b"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ConstructSingleLoop" ref="c8471765bac7c471ebb478b2fbcee45b" args="(char *DmaProgStart, int CacheLength, char *DmaProgLoopStart, int LoopCount)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_ConstructSingleLoop </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProgStart</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>int&nbsp;</td>
<td class="mdname" nowrap> <em>CacheLength</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProgLoopStart</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>int&nbsp;</td>
<td class="mdname" nowrap> <em>LoopCount</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construct a loop with only DMALD and DMAST as the body using loop counter 0. The function also makes sure the loop body and the lpend is in the same cache line.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProgStart</em>&nbsp;</td><td>is the very start address of the DMA program. This is used to calculate whether the loop is in a cache line. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>CacheLength</em>&nbsp;</td><td>is the icache line length, in terms of bytes. If it's zero, the performance enhancement feature will be turned off. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>DmaProgLoopStart</em>&nbsp;</td><td>The starting address of the loop (DMALP). </td></tr>
<tr><td valign="top"></td><td valign="top"><em>LoopCount</em>&nbsp;</td><td>The inner loop count. Loop count - 1 will be used to initialize the loop counter.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes the loop has.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="6cb5f5285e19695193b654ce31ab743c"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_0" ref="6cb5f5285e19695193b654ce31ab743c" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_0 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 0. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="722b2f04120e4b0b6296b0711a9bc9c7"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_1" ref="722b2f04120e4b0b6296b0711a9bc9c7" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_1 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 1. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="c47e90052497fb9ba6856f2bee5d3d3f"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_2" ref="c47e90052497fb9ba6856f2bee5d3d3f" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_2 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 2. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="ab08f54233767d068012c79881f22c25"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_3" ref="ab08f54233767d068012c79881f22c25" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_3 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 3. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="b791cc67f3802731ee4685822cc04f82"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_4" ref="b791cc67f3802731ee4685822cc04f82" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_4 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 4. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="221b5b63d224a0f0a572403a66b95493"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_5" ref="221b5b63d224a0f0a572403a66b95493" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_5 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 5. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="47334fd772343ce260c55117a703730e"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_6" ref="47334fd772343ce260c55117a703730e" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_6 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 6. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="8e8ca61be8c102bb0a2ffdb11ac410f5"></a><!-- doxytag: member="xdmaps.c::XDmaPs_DoneISR_7" ref="8e8ca61be8c102bb0a2ffdb11ac410f5" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_DoneISR_7 </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver done interrupt service routine for channel 7. We need this done ISR mainly because the driver needs to release the DMA program buffer. This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="694a9e62a985b5fd4da1b79632c14f44"></a><!-- doxytag: member="xdmaps.c::XDmaPs_FaultISR" ref="694a9e62a985b5fd4da1b79632c14f44" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_FaultISR </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Driver fault interrupt service routine This is the one that connects the GIC<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="28719551100506cd3d0a0a8922565477"></a><!-- doxytag: member="xdmaps.c::XDmaPs_FreeDmaProg" ref="28719551100506cd3d0a0a8922565477" args="(XDmaPs *InstPtr, unsigned int Channel, XDmaPs_Cmd *Cmd)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_FreeDmaProg </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>Cmd</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Free the DMA program buffer that is pointed by the GeneratedDmaProg field of the command.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is then DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the DMA channel number. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Cmd</em>&nbsp;</td><td>is the DMA command.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>XST_SUCCESS on success. XST_FAILURE if there is any error.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="22d515fcf0d6be0ef049d8585c32ccf8"></a><!-- doxytag: member="xdmaps.c::XDmaPs_GenDmaProg" ref="22d515fcf0d6be0ef049d8585c32ccf8" args="(XDmaPs *InstPtr, unsigned int Channel, XDmaPs_Cmd *Cmd)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_GenDmaProg </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>Cmd</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Generate a DMA program based for the DMA command, the buffer will be pointed by the GeneratedDmaProg field of the command.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is then DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the DMA channel number. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Cmd</em>&nbsp;</td><td>is the DMA command.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>- XST_SUCCESS on success.<ul>
<li>XST_FAILURE if it fails</li></ul>
</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="588031d58ed437731511e26b7acd5359"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMAEND" ref="588031d58ed437731511e26b7acd5359" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMAEND </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMAEND instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>the DMA program buffer, it's the starting address for the instruction being constructed</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="b2ce592fa7427c5cb477bda648241e59"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMAGO" ref="b2ce592fa7427c5cb477bda648241e59" args="(char *DmaProg, unsigned int Cn, u32 Imm, unsigned int Ns)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMAGO </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProg</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Cn</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Imm</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Ns</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMAGO instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Cn</em>&nbsp;</td><td>is the Channel number, 0 - 7 </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Imm</em>&nbsp;</td><td>is 32-bit immediate number written to the Channel Program Counter. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Ns</em>&nbsp;</td><td>is Non-secure flag. If Ns is 1, the DMA channel operates in the Non-secure state. If Ns is 0, the execution depends on the security state of the DMA manager: DMA manager is in the Secure state, DMA channel operates in the Secure state. DMA manager is in the Non-secure state, DMAC aborts.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 6.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="c8171f2c98a3c3a3a70f42bff97cb024"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMALD" ref="c8171f2c98a3c3a3a70f42bff97cb024" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMALD </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMALD instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>the DMA program buffer, it's the starting address for the instruction being constructed</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="439a0882b705fab7be9fad6be09ddb62"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMALP" ref="439a0882b705fab7be9fad6be09ddb62" args="(char *DmaProg, unsigned Lc, unsigned LoopIterations)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMALP </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProg</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned&nbsp;</td>
<td class="mdname" nowrap> <em>Lc</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned&nbsp;</td>
<td class="mdname" nowrap> <em>LoopIterations</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMALP instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Lc</em>&nbsp;</td><td>is the Loop counter register, can either be 0 or 1. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>LoopIterations,:</em>&nbsp;</td><td>the number of interations, LoopInterations - 1 will be encoded in the DMALP instruction.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 2.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="1f545bdadc39bb079fc0610cd259103c"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMALPEND" ref="1f545bdadc39bb079fc0610cd259103c" args="(char *DmaProg, char *BodyStart, unsigned Lc)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMALPEND </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProg</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>char *&nbsp;</td>
<td class="mdname" nowrap> <em>BodyStart</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned&nbsp;</td>
<td class="mdname" nowrap> <em>Lc</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMALPEND instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>BodyStart</em>&nbsp;</td><td>is the starting address of the loop body. It is used to calculate the bytes of backward jump. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Lc</em>&nbsp;</td><td>is the Loop counter register, can either be 0 or 1.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 2.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="acd7b49207dffc3fb4c9832f74fef9a6"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMAMOV" ref="acd7b49207dffc3fb4c9832f74fef9a6" args="(char *DmaProg, unsigned Rd, u32 Imm)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMAMOV </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProg</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned&nbsp;</td>
<td class="mdname" nowrap> <em>Rd</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>u32&nbsp;</td>
<td class="mdname" nowrap> <em>Imm</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMAMOV instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Rd</em>&nbsp;</td><td>is the register id, 0 for SAR, 1 for CCR, and 2 for DAR </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Imm</em>&nbsp;</td><td>is the 32-bit immediate number</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 6.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="36e64d83ea833f4411e7509a1ac67348"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMANOP" ref="36e64d83ea833f4411e7509a1ac67348" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMANOP </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMANOP instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="4485daf0090c5175b2cc195bc7e061e0"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMARMB" ref="4485daf0090c5175b2cc195bc7e061e0" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMARMB </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMARMB instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="3530236a1bd597e21bf166a98ed8383e"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMASEV" ref="3530236a1bd597e21bf166a98ed8383e" args="(char *DmaProg, unsigned int EventNumber)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMASEV </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname" nowrap> <em>DmaProg</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>EventNumber</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMASEV instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed </td></tr>
<tr><td valign="top"></td><td valign="top"><em>EventNumber</em>&nbsp;</td><td>is the Event number to signal.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 2.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="3194b3c75f2ac7bf838ba9fb855e6f09"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMAST" ref="3194b3c75f2ac7bf838ba9fb855e6f09" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMAST </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMAST instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="08b3c86f31f6d0296cc4d2d1c4ee6bd6"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Instr_DMAWMB" ref="08b3c86f31f6d0296cc4d2d1c4ee6bd6" args="(char *DmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline int XDmaPs_Instr_DMAWMB </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">char *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>DmaProg</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Construction function for DMAWMB instruction. This function fills the program buffer with the constructed instruction.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>DmaProg</em>&nbsp;</td><td>is the DMA program buffer, it's the starting address for the instruction being constructed</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The number of bytes for this instruction which is 1.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="ebd3549a3c1bc1931e5266d6f78d018f"></a><!-- doxytag: member="xdmaps.c::XDmaPs_IsActive" ref="ebd3549a3c1bc1931e5266d6f78d018f" args="(XDmaPs *InstPtr, unsigned int Channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_IsActive </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Checks whether the DMA channel is active or idle.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the DMA channel number.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0: if the channel is idle 1: otherwise</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="7d0225794487b591aa947ca66f74852d"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Print_DmaProg" ref="7d0225794487b591aa947ca66f74852d" args="(XDmaPs_Cmd *Cmd)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">void XDmaPs_Print_DmaProg </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>Cmd</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Print the Dma Prog Contents.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>Cmd</em>&nbsp;</td><td>is the command buffer.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="a89e6e75ea9b87ff84f6b86a9074d449"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ResetChannel" ref="a89e6e75ea9b87ff84f6b86a9074d449" args="(XDmaPs *InstPtr, unsigned int Channel)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_ResetChannel </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Reset the specified DMA Channel.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the channel to be reset.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on time out</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="d2b79ddee8d84d18717d019f50432a3c"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ResetManager" ref="d2b79ddee8d84d18717d019f50432a3c" args="(XDmaPs *InstPtr)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_ResetManager </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>InstPtr</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Reset the DMA Manager.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 on success, -1 on time out</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="06a8136f1e15feec2f11668e57bc79e8"></a><!-- doxytag: member="xdmaps.c::XDmaPs_SetDoneHandler" ref="06a8136f1e15feec2f11668e57bc79e8" args="(XDmaPs *InstPtr, unsigned Channel, XDmaPsDoneHandler DoneHandler, void *CallbackRef)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_SetDoneHandler </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>XDmaPsDoneHandler&nbsp;</td>
<td class="mdname" nowrap> <em>DoneHandler</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>void *&nbsp;</td>
<td class="mdname" nowrap> <em>CallbackRef</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set the done handler for a channel.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the channel number. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>DoneHandler</em>&nbsp;</td><td>is the done interrupt handler. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>CallbackRef</em>&nbsp;</td><td>is the callback reference data.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="eed59713759fd62ce31a46ef64f726be"></a><!-- doxytag: member="xdmaps.c::XDmaPs_SetFaultHandler" ref="eed59713759fd62ce31a46ef64f726be" args="(XDmaPs *InstPtr, XDmaPsFaultHandler FaultHandler, void *CallbackRef)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_SetFaultHandler </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>XDmaPsFaultHandler&nbsp;</td>
<td class="mdname" nowrap> <em>FaultHandler</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>void *&nbsp;</td>
<td class="mdname" nowrap> <em>CallbackRef</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set the fault handler for a channel.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is the DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>FaultHandler</em>&nbsp;</td><td>is the fault interrupt handler. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>CallbackRef</em>&nbsp;</td><td>is the callback reference data.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="b8120b3168cbc2ba5367e2b023a1a386"></a><!-- doxytag: member="xdmaps.c::XDmaPs_Start" ref="b8120b3168cbc2ba5367e2b023a1a386" args="(XDmaPs *InstPtr, unsigned int Channel, XDmaPs_Cmd *Cmd, int HoldDmaProg)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">int XDmaPs_Start </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps.html">XDmaPs</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>InstPtr</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>unsigned int&nbsp;</td>
<td class="mdname" nowrap> <em>Channel</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap><a class="el" href="struct_x_dma_ps___cmd.html">XDmaPs_Cmd</a> *&nbsp;</td>
<td class="mdname" nowrap> <em>Cmd</em>, </td>
</tr>
<tr>
<td class="md" nowrap align="right"></td>
<td class="md"></td>
<td class="md" nowrap>int&nbsp;</td>
<td class="mdname" nowrap> <em>HoldDmaProg</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)&nbsp;</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Start a DMA command. The command can only be invoked when the channel is idle. The driver takes the command, generates DMA program if needed, then pass the program to DMAC to execute.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>InstPtr</em>&nbsp;</td><td>is then DMA instance. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Channel</em>&nbsp;</td><td>is the DMA channel number. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Cmd</em>&nbsp;</td><td>is the DMA command. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>HoldDmaProg</em>&nbsp;</td><td>is tag indicating whether the driver can release the allocated DMA buffer or not. If a user wants to examine the generated DMA program, the flag should be set to 1. After the DMA program is finished, a user needs to explicity free the buffer.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd><ul>
<li>XST_SUCCESS on success</li><li>XST_DEVICE_BUSY if DMA is busy</li><li>XST_FAILURE on other failures</li></ul>
</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="12436278b7d2e9026a576374b4460830"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ToBurstSizeBits" ref="12436278b7d2e9026a576374b4460830" args="(unsigned BurstSize)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline unsigned XDmaPs_ToBurstSizeBits </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>BurstSize</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Conversion function from the burst size to the bit encoding of the CCR<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>BurstSize</em>&nbsp;</td><td>is the burst size. It's the data width. In terms of bytes, it could be 1, 2, 4, 8, 16, 32, 64, or 128. It must be no larger than the bus width. (We are using DMA assembly syntax.)</td></tr>
</table>
</dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="892d640625e0657bc4bbcbe78a7109a3"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ToCCRValue" ref="892d640625e0657bc4bbcbe78a7109a3" args="(XDmaPs_ChanCtrl *ChanCtrl)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">u32 XDmaPs_ToCCRValue </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top"><a class="el" href="struct_x_dma_ps___chan_ctrl.html">XDmaPs_ChanCtrl</a> *&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>ChanCtrl</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Conversion function from PL330 bus transfer descriptors to CCR value. All the values passed to the functions are in terms of assembly languages, not in terms of the register bit encoding.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>ChanCtrl</em>&nbsp;</td><td>is the Instance of <a class="el" href="struct_x_dma_ps___chan_ctrl.html">XDmaPs_ChanCtrl</a>.</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The 32-bit CCR value.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
<a class="anchor" name="c99ddad62eea92d87412751d7858430b"></a><!-- doxytag: member="xdmaps.c::XDmaPs_ToEndianSwapSizeBits" ref="c99ddad62eea92d87412751d7858430b" args="(unsigned int EndianSwapSize)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top">__inline unsigned XDmaPs_ToEndianSwapSizeBits </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">unsigned int&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>EndianSwapSize</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Conversion function from the endian swap size to the bit encoding of the CCR<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>EndianSwapSize</em>&nbsp;</td><td>is the endian swap size, in terms of bits, it could be 8, 16, 32, 64, or 128(We are using DMA assembly syntax)</td></tr>
</table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>The endian swap size bit encoding for the CCR.</dd></dl>
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
</td>
</tr>
</table>
Copyright @ 1995-2014 Xilinx, Inc. All rights reserved.