
Added initial support Xilinx Embedded Software. Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
688 lines
33 KiB
HTML
Executable file
688 lines
33 KiB
HTML
Executable file
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
|
<title>
|
|
xusb.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 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 List</span></a></li>
|
|
<li><a href="globals.html"><span>File Members</span></a></li>
|
|
</ul></div>
|
|
<h1>xusb.c File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
|
|
The <a class="el" href="struct_x_usb.html">XUsb</a> driver. Functions in this file are the minimum required functions for this driver. See xusb.h for a detailed description of the driver.<p>
|
|
<dl compact><dt><b>Note:</b></dt><dd>None.</dd></dl>
|
|
<pre>
|
|
MODIFICATION HISTORY:</pre><p>
|
|
<pre> Ver Who Date Changes
|
|
----- ---- -----------------------------------------------------------------
|
|
1.00a hvm 2/22/07 First release
|
|
2.00a hvm 10/22/08 Added DMA APIs.
|
|
3.00a hvm 12/3/09 Added XUsb_ReadErrorCounters API to return USB error
|
|
counters data. Updated to use HAL processor APIs.
|
|
XUsb_mReadReg is renamed to XUsb_ReadReg and
|
|
XUsb_mWriteReg is renamed to XUsb_WriteReg.
|
|
3.02a hvm 7/15/10 Added Device ID initialization in XUsb_CfgInitialize
|
|
function (CR555996).
|
|
4.00a hvm 10/21/10 Added ULPI PHY Read/Write APIs.
|
|
Added DMA handler initialization in XUsb_CfgInitialize
|
|
function
|
|
4.03a bss 06/20/10 Added SIE Reset API (XUsb_SieReset) to reset the SIE
|
|
state machine (CR 660602)
|
|
</pre>
|
|
<p>
|
|
<code>#include "xusb.h"</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 </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#f5a2fff7738406902d97043e3db9f562">XUsb_CfgInitialize</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, <a class="el" href="struct_x_usb___config.html">XUsb_Config</a> *ConfigPtr, u32 EffectiveAddr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#6d144a79150a28da1d915039f1b10b86">XUsb_ConfigureDevice</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, <a class="el" href="struct_x_usb___device_config.html">XUsb_DeviceConfig</a> *CfgPtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#31f6ab7913417ae02681214833b68725">XUsb_Start</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#73ea7a0d365b4a1ce6d12934524ec851">XUsb_Stop</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">u32 </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#04df91517abd94255a32dec01e87d0c2">XUsb_GetFrameNum</a> (const <a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#778b823b1965ae846ad82e7347b5bb1d">XUsb_SetDeviceAddress</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u8 Address)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#ecda2ac60f5e08d14c0ae003680acac1">XUsb_SetTestMode</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u8 TestMode, u8 *BufPtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#44764fe427c1809fe677992f4ef0986c">XUsb_DmaReset</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#dfdbbd06ae64b2b1e5e3e752e3484a03">XUsb_DmaTransfer</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u32 *SrcAddr, u32 *DstAddr, u16 Length)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#3773525e43fe12f4fcba63553ffeda18">XUsb_ReadErrorCounters</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u8 *BitStuffErrors, u8 *PidErrors, u8 *CrcErrors)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">u8 </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#804692ac89eeb5493d438af7e340a8c5">XUsb_UlpiPhyReadRegister</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u8 RegAddr)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#d956ca1336f2ec9af2b77591514d390e">XUsb_UlpiPhyWriteRegister</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr, u8 RegAddr, u8 UlpiPhyRegData)</td></tr>
|
|
|
|
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="xusb_8c.html#2e8181fa0c68d63ff42574c8d0cb890b">XUsb_SieReset</a> (<a class="el" href="struct_x_usb.html">XUsb</a> *InstancePtr)</td></tr>
|
|
|
|
</table>
|
|
<hr><h2>Function Documentation</h2>
|
|
<a class="anchor" name="f5a2fff7738406902d97043e3db9f562"></a><!-- doxytag: member="xusb.c::XUsb_CfgInitialize" ref="f5a2fff7738406902d97043e3db9f562" args="(XUsb *InstancePtr, XUsb_Config *ConfigPtr, 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 XUsb_CfgInitialize </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</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_usb___config.html">XUsb_Config</a> * </td>
|
|
<td class="mdname" nowrap> <em>ConfigPtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u32 </td>
|
|
<td class="mdname" nowrap> <em>EffectiveAddr</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function initializes a <a class="el" href="struct_x_usb.html">XUsb</a> instance/driver.<p>
|
|
The initialization entails:<ul>
|
|
<li>Initialize all members of the <a class="el" href="struct_x_usb.html">XUsb</a> structure.</li></ul>
|
|
<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance of the USB device. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>ConfigPtr</em> </td><td>is a pointer to a <a class="el" href="struct_x_usb___config.html">XUsb_Config</a> configuration structure. This structure will contain the requested configuration for the device. Typically, this is a local structure and the content of which will be copied into the configuration structure within <a class="el" href="struct_x_usb.html">XUsb</a>. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>EffectiveAddr</em> </td><td>is the device base address in the virtual memory address space. If the address translation is not used then the physical address is passed. Unexpected errors may occur if the address mapping is changed after this function is invoked.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd><ul>
|
|
<li>XST_SUCCESS no errors occurred.</li><li>XST_FAILURE an error occurred during initialization.</li></ul>
|
|
</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>After calling <a class="el" href="xusb_8c.html#f5a2fff7738406902d97043e3db9f562">XUsb_CfgInitialize()</a> the USB device IS NOT READY for use. Before the USB device can be used its parameters must be configured. See xusb.h for details. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="6d144a79150a28da1d915039f1b10b86"></a><!-- doxytag: member="xusb.c::XUsb_ConfigureDevice" ref="6d144a79150a28da1d915039f1b10b86" args="(XUsb *InstancePtr, XUsb_DeviceConfig *CfgPtr)" --><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 XUsb_ConfigureDevice </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</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_usb___device_config.html">XUsb_DeviceConfig</a> * </td>
|
|
<td class="mdname" nowrap> <em>CfgPtr</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function initializes USB End points.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>CfgPtr</em> </td><td>is pointer to a <a class="el" href="struct_x_usb___config.html">XUsb_Config</a> configuration structure. This structure will contain the requested configuration for the device. Typically, this is a local structure and the content of which will be copied into the configuration structure within <a class="el" href="struct_x_usb.html">XUsb</a>.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd><ul>
|
|
<li>XST_SUCCESS no errors occurred.</li><li>XST_FAILURE an error occurred during initialization.</li></ul>
|
|
</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="44764fe427c1809fe677992f4ef0986c"></a><!-- doxytag: member="xusb.c::XUsb_DmaReset" ref="44764fe427c1809fe677992f4ef0986c" args="(XUsb *InstancePtr)" --><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 XUsb_DmaReset </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname1" valign="top" nowrap> <em>InstancePtr</em> </td>
|
|
<td class="md" valign="top"> ) </td>
|
|
<td class="md" nowrap></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function resets the DMA module of the USB device<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>After the DMA reset, only the DMA related logic part of the USB device will be reset and all the DMA related registers will be reset to the default values. Upon DMA Reset, any DMA transfer in progress will be stopped. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="dfdbbd06ae64b2b1e5e3e752e3484a03"></a><!-- doxytag: member="xusb.c::XUsb_DmaTransfer" ref="dfdbbd06ae64b2b1e5e3e752e3484a03" args="(XUsb *InstancePtr, u32 *SrcAddr, u32 *DstAddr, u16 Length)" --><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 XUsb_DmaTransfer </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u32 * </td>
|
|
<td class="mdname" nowrap> <em>SrcAddr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u32 * </td>
|
|
<td class="mdname" nowrap> <em>DstAddr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u16 </td>
|
|
<td class="mdname" nowrap> <em>Length</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function sets the DMA registers with the given values to initiate a DMA data transfer. This function is called by the XUsb_EpDataSend and XUsb_EpDataRecv functions.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>SrcAddr</em> </td><td>is the source address from where the data is to be read. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>DstAddr</em> </td><td>is the destination address to where the data is to be written. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>Length</em> </td><td>is the amount of data that can be transferred. The maximum data transfer can be 1024.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>This function doesn't guarantee that the transfer is done successfully. This function only initiates the DMA transfer. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="04df91517abd94255a32dec01e87d0c2"></a><!-- doxytag: member="xusb.c::XUsb_GetFrameNum" ref="04df91517abd94255a32dec01e87d0c2" args="(const XUsb *InstancePtr)" --><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 XUsb_GetFrameNum </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top">const <a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname1" valign="top" nowrap> <em>InstancePtr</em> </td>
|
|
<td class="md" valign="top"> ) </td>
|
|
<td class="md" nowrap></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function returns the current frame number.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd>The current frame number..</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="3773525e43fe12f4fcba63553ffeda18"></a><!-- doxytag: member="xusb.c::XUsb_ReadErrorCounters" ref="3773525e43fe12f4fcba63553ffeda18" args="(XUsb *InstancePtr, u8 *BitStuffErrors, u8 *PidErrors, u8 *CrcErrors)" --><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 XUsb_ReadErrorCounters </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 * </td>
|
|
<td class="mdname" nowrap> <em>BitStuffErrors</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 * </td>
|
|
<td class="mdname" nowrap> <em>PidErrors</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 * </td>
|
|
<td class="mdname" nowrap> <em>CrcErrors</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function reads the USB error counter regsiter and returns the error counters information.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>BitStuffErrors</em> </td><td>is a pointer to the 8 bit bitstuff error counter. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>PidErrors</em> </td><td>is a pointer to the 8 bit pid error counter. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>CrcErrors</em> </td><td>is a pointer to the 8 bit crc error counter.</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="778b823b1965ae846ad82e7347b5bb1d"></a><!-- doxytag: member="xusb.c::XUsb_SetDeviceAddress" ref="778b823b1965ae846ad82e7347b5bb1d" args="(XUsb *InstancePtr, u8 Address)" --><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 XUsb_SetDeviceAddress </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 </td>
|
|
<td class="mdname" nowrap> <em>Address</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function sets the USB device address.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>Address</em> </td><td>is the device address to be set.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd><ul>
|
|
<li>XST_SUCCESS: Address set successfully.</li><li>XST_INVALID_PARAM: Invalid parameter passed.</li></ul>
|
|
</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="ecda2ac60f5e08d14c0ae003680acac1"></a><!-- doxytag: member="xusb.c::XUsb_SetTestMode" ref="ecda2ac60f5e08d14c0ae003680acac1" args="(XUsb *InstancePtr, u8 TestMode, u8 *BufPtr)" --><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 XUsb_SetTestMode </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 </td>
|
|
<td class="mdname" nowrap> <em>TestMode</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 * </td>
|
|
<td class="mdname" nowrap> <em>BufPtr</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function sets the USB device into a given test 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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>TestMode</em> </td><td>is the type of test to be performed. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>BufPtr</em> </td><td>is a pointer to the buffer containing the test packet.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>If the test mode is Test packet(TEST_PKT), then user needs to pass the address of the buffer containing the test packet. In other cases, the BufPtr parameter is not used and the user can send a NULL or any value. BufPtr parameter should be 32 bit aligned. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="2e8181fa0c68d63ff42574c8d0cb890b"></a><!-- doxytag: member="xusb.c::XUsb_SieReset" ref="2e8181fa0c68d63ff42574c8d0cb890b" args="(XUsb *InstancePtr)" --><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 XUsb_SieReset </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname1" valign="top" nowrap> <em>InstancePtr</em> </td>
|
|
<td class="md" valign="top"> ) </td>
|
|
<td class="md" nowrap></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function resets the Serial Interface Engine<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd>None.</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>After the SIE reset, only the SIE state machine logic part of the USB device will be reset and starts from Init state. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="31f6ab7913417ae02681214833b68725"></a><!-- doxytag: member="xusb.c::XUsb_Start" ref="31f6ab7913417ae02681214833b68725" args="(XUsb *InstancePtr)" --><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 XUsb_Start </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname1" valign="top" nowrap> <em>InstancePtr</em> </td>
|
|
<td class="md" valign="top"> ) </td>
|
|
<td class="md" nowrap></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function starts the USB Device.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> 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="73ea7a0d365b4a1ce6d12934524ec851"></a><!-- doxytag: member="xusb.c::XUsb_Stop" ref="73ea7a0d365b4a1ce6d12934524ec851" args="(XUsb *InstancePtr)" --><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 XUsb_Stop </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname1" valign="top" nowrap> <em>InstancePtr</em> </td>
|
|
<td class="md" valign="top"> ) </td>
|
|
<td class="md" nowrap></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function stops the USB device.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> 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="804692ac89eeb5493d438af7e340a8c5"></a><!-- doxytag: member="xusb.c::XUsb_UlpiPhyReadRegister" ref="804692ac89eeb5493d438af7e340a8c5" args="(XUsb *InstancePtr, u8 RegAddr)" --><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">u8 XUsb_UlpiPhyReadRegister </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 </td>
|
|
<td class="mdname" nowrap> <em>RegAddr</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function initiates the USB ULPI PHY regsiter read transaction. This function returns the busy status if the earlier transaction is still in progress and returns the PHY register data upon successful read transaction.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>RegAddr</em> </td><td>is the address of the PHY register.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd><ul>
|
|
<li>Register data</li><li>XST_DEVICE_BUSY: The previous PHY transaction is still in progress.</li></ul>
|
|
</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>This function waits till the BUSY bit is cleared in the ULPI PHY resgiter and then reads the register. The user of this API should note that the PHY interrupt should be ignored during read operation. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<a class="anchor" name="d956ca1336f2ec9af2b77591514d390e"></a><!-- doxytag: member="xusb.c::XUsb_UlpiPhyWriteRegister" ref="d956ca1336f2ec9af2b77591514d390e" args="(XUsb *InstancePtr, u8 RegAddr, u8 UlpiPhyRegData)" --><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 XUsb_UlpiPhyWriteRegister </td>
|
|
<td class="md" valign="top">( </td>
|
|
<td class="md" nowrap valign="top"><a class="el" href="struct_x_usb.html">XUsb</a> * </td>
|
|
<td class="mdname" nowrap> <em>InstancePtr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 </td>
|
|
<td class="mdname" nowrap> <em>RegAddr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md" nowrap align="right"></td>
|
|
<td class="md"></td>
|
|
<td class="md" nowrap>u8 </td>
|
|
<td class="mdname" nowrap> <em>UlpiPhyRegData</em></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="md"></td>
|
|
<td class="md">) </td>
|
|
<td class="md" colspan="2"></td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table cellspacing="5" cellpadding="0" border="0">
|
|
<tr>
|
|
<td>
|
|
|
|
</td>
|
|
<td>
|
|
|
|
<p>
|
|
This function initiates the USB ULPI PHY regsiter write transaction. This function returns the busy status if the earlier transaction is still in progress and returns a success upon successful write transaction initiation.<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>InstancePtr</em> </td><td>is a pointer to the <a class="el" href="struct_x_usb.html">XUsb</a> instance. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>RegAddr</em> </td><td>is the address of the PHY register. counter. </td></tr>
|
|
<tr><td valign="top"></td><td valign="top"><em>UlpiPhyRegData</em> </td><td>is the data to be written to PHY register.</td></tr>
|
|
</table>
|
|
</dl>
|
|
<dl compact><dt><b>Returns:</b></dt><dd><ul>
|
|
<li>XST_SUCCESS: Read transaction initiated successfully.</li><li>XST_DEVICE_BUSY: The previous PHY transaction is still in progress.</li></ul>
|
|
</dd></dl>
|
|
<dl compact><dt><b>Note:</b></dt><dd>None. </dd></dl>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
Copyright @ 1995-2014 Xilinx, Inc. All rights reserved.
|