esp32-s2_dfu/0.4/ehci_8h_source.html

579 lines
93 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>tinyusb: tinyusb/host/ehci/ehci.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">tinyusb
&#160;<span id="projectnumber">0.4</span>
</div>
</td>
<td align="right">
<a href="https://pledgie.com/campaigns/24694"><img border="0" src="https://pledgie.com/campaigns/24694.png?skin_name=chrome" alt="Click here to lend your support to tinyusb donation and make a donation at pledgie.com"></a>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('ehci_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">ehci.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="ehci_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/**************************************************************************/</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">/**************************************************************************/</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifndef _TUSB_EHCI_H_</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _TUSB_EHCI_H_</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="common_8h.html">common/common.h</a>&quot;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">/* Abbreviation</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> * HC: Host Controller</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> * HCD: Host Controller Driver</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> * QHD: Queue Head for non-ISO transfer</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * QTD: Queue Transfer Descriptor for non-ISO transfer</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * ITD: Iso Transfer Descriptor for highspeed</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * SITD: Split ISO Transfer Descriptor for full-speed</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> * SMASK: Start Split mask for Slipt Transaction</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> * CMASK: Complete Split mask for Slipt Transaction</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> * RO: Read Only</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> * R/WC: Read, Write to Clear</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor"></span> <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">// EHCI CONFIGURATION &amp; CONSTANTS</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#define HOST_HCD_XFER_INTERRUPT // TODO interrupt is used widely, should always be enalbed</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define EHCI_PERIODIC_LIST (defined HOST_HCD_XFER_INTERRUPT || defined HOST_HCD_XFER_ISOCHRONOUS)</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#define EHCI_CFG_FRAMELIST_SIZE_BITS 7 </span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#define EHCI_FRAMELIST_SIZE (1024 &gt;&gt; EHCI_CFG_FRAMELIST_SIZE_BITS)</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">// TODO merge OHCI with EHCI</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">enum</span> {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; EHCI_MAX_ITD = 4,</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; EHCI_MAX_SITD = 16</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;};</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">//------------- Validation -------------//</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;STATIC_ASSERT(EHCI_CFG_FRAMELIST_SIZE_BITS &lt;= 7, <span class="stringliteral">&quot;incorrect value&quot;</span>);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">// EHCI Data Structure</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#ga6cbf3d3e87d6fa2221fc0b467a985aae"> 89</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___e_h_c_i.html#ga6cbf3d3e87d6fa2221fc0b467a985aae">ehci_queue_element_type_</a>{</div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaea74403c018b0ab2c2391e7d09a97218ac"> 90</a></span>&#160; <a class="code" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaea74403c018b0ab2c2391e7d09a97218ac">EHCI_QUEUE_ELEMENT_ITD</a> = 0 , </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeae77dec640b6e35bfd1afb7832e5d5ced"> 91</a></span>&#160; <a class="code" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeae77dec640b6e35bfd1afb7832e5d5ced">EHCI_QUEUE_ELEMENT_QHD</a> , </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaedf6f4454f16369d7283f0495d746017"> 92</a></span>&#160; <a class="code" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaedf6f4454f16369d7283f0495d746017">EHCI_QUEUE_ELEMENT_SITD</a> , </div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaab40dae76d9558b2b54d9f1d0cc40055"> 93</a></span>&#160; <a class="code" href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaab40dae76d9558b2b54d9f1d0cc40055">EHCI_QUEUE_ELEMENT_FSTN</a> </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="group___e_h_c_i.html#gab1e3305e65f94c6b12023de02563b284"> 97</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___e_h_c_i.html#gab1e3305e65f94c6b12023de02563b284">tusb_pid_</a>{</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; EHCI_PID_OUT = 0 ,</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; EHCI_PID_IN ,</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; EHCI_PID_SETUP</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;};</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="unionehci__link__t.html"> 104</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">union </span>{</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; uint32_t address;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; uint32_t terminate : 1;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; uint32_t type : 2;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; };</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}<a class="code" href="unionehci__link__t.html">ehci_link_t</a>;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html"> 113</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113"> 116</a></span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> <a class="code" href="structehci__qtd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">next</a>;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">union</span>{</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> alternate;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; uint32_t : 5;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; uint32_t used : 1;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; uint32_t : 10;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; uint32_t expected_bytes : 16;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; };</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; };</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#ad11316a45c6c93ce6ed877a85bae22cc"> 130</a></span>&#160; <span class="keyword">volatile</span> uint32_t pingstate_err : 1 ; </div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a3c59cc1abe2e59d21b7eec030756a05c"> 131</a></span>&#160; <span class="keyword">volatile</span> uint32_t non_hs_split_state : 1 ; </div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a498b5535c7cf059f57a3589bce719798"> 132</a></span>&#160; <span class="keyword">volatile</span> uint32_t non_hs_period_missed_uframe : 1 ; </div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#aa4df80679605a496760b6d1d1c9a58b1"> 133</a></span>&#160; <span class="keyword">volatile</span> uint32_t xact_err : 1 ; </div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a55dfaf1427c6b0df79f79b7b3be5990c"> 134</a></span>&#160; <span class="keyword">volatile</span> uint32_t babble_err : 1 ; </div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#ac5db4563dd2d98e90747f9969a338033"> 135</a></span>&#160; <span class="keyword">volatile</span> uint32_t buffer_err : 1 ; </div>
<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#afba6c232011eb90b18a032d8b8d0c821"> 136</a></span>&#160; <span class="keyword">volatile</span> uint32_t halted : 1 ; </div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a4e55231d0adda8f7262ab94d443cc7af"> 137</a></span>&#160; <span class="keyword">volatile</span> uint32_t active : 1 ; </div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#aec32162d9dc3fde2c76d766af522dae5"> 139</a></span>&#160; uint32_t pid : 2 ; </div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a64178f7682c6e5c0d4e75f9eb7ab6ceb"> 140</a></span>&#160; <span class="keyword">volatile</span> uint32_t cerr : 2 ; </div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a77f2f1b04b66aeb3651fc2c42bc61302"> 141</a></span>&#160; <span class="keyword">volatile</span> uint32_t current_page : 3 ; </div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a0696e82e3bbfbb1798cc96c8fe0cb218"> 142</a></span>&#160; uint32_t int_on_complete : 1 ; </div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#aef59a84424da042ebcfce5c9bc7a229d"> 144</a></span>&#160; <span class="keyword">volatile</span> uint32_t total_bytes : 15 ; </div>
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#a531c19a9795e64ce69fc75d99acda659"> 145</a></span>&#160; <span class="keyword">volatile</span> uint32_t data_toggle : 1 ; </div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the end of current storage unit</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// End of Word 2</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="structehci__qtd__t.html#aedf420ce97c6830704676786330d6bb2"> 150</a></span>&#160; uint32_t buffer[5];</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;} <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a>; <span class="comment">// XXX qtd is used to declare overlay in ehci_qhd_t -&gt; cannot be declared with ATTR_ALIGNED(32)</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;STATIC_ASSERT( <span class="keyword">sizeof</span>(<a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a>) == 32, <span class="stringliteral">&quot;size is not correct&quot;</span> );</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html"> 156</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113"> 158</a></span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> <a class="code" href="structehci__qhd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">next</a>;</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a5e961d126e4339cdfa5a69e8ad877a46"> 161</a></span>&#160; uint32_t device_address : 7 ; </div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#afd4670b18165eca38c5aab7e1e365c36"> 162</a></span>&#160; uint32_t non_hs_period_inactive_next_xact : 1 ; </div>
<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a8ece0acb43021a17c4368c5580b537f4"> 163</a></span>&#160; uint32_t endpoint_number : 4 ; </div>
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a4fa561d2dc9d0fa4c4e3a1a5cd52e0f5"> 164</a></span>&#160; uint32_t endpoint_speed : 2 ; </div>
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a480c98472730d78702010ab74152003b"> 165</a></span>&#160; uint32_t data_toggle_control : 1 ; </div>
<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a21fefa6cf4a25779826f13c7c91d00ab"> 166</a></span>&#160; uint32_t head_list_flag : 1 ; </div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#ad55818a81c7231005bf4853be413fa51"> 167</a></span>&#160; uint32_t max_package_size : 11 ; </div>
<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a3c1209ca551e4338a312c65a138f6c1c"> 168</a></span>&#160; uint32_t non_hs_control_endpoint : 1 ; </div>
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#aee0c90ac76fc369c57de5ed8e1c44d22"> 169</a></span>&#160; uint32_t nak_count_reload : 4 ; </div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the end of current storage unit</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="comment">// End of Word 1</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a2a2a839a2af77a8364cf30a2fb6623eb"> 174</a></span>&#160; uint32_t interrupt_smask : 8 ; </div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a50195a9b2e4e35a821c66bc7f4957336"> 175</a></span>&#160; uint32_t non_hs_interrupt_cmask : 8 ; </div>
<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a3e65707a3c47fda14d6c69f2e49a1c2f"> 176</a></span>&#160; uint32_t hub_address : 7 ; </div>
<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a0c40895e72c535540d39eab88b4eb88e"> 177</a></span>&#160; uint32_t hub_port : 7 ; </div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#aa7883b4c0e8f4770d654c03e18cfe00f"> 178</a></span>&#160; uint32_t mult : 2 ; </div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the end of current storage unit</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">// End of Word 2</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#acd25df2a0b360a90b8f4337f42965155"> 183</a></span>&#160; <span class="keyword">volatile</span> uint32_t <a class="code" href="structehci__qhd__t.html#acd25df2a0b360a90b8f4337f42965155">qtd_addr</a>;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a521a53b806cafcb364cb0c161bcac87e"> 186</a></span>&#160; <span class="keyword">volatile</span> <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> <a class="code" href="structehci__qhd__t.html#a521a53b806cafcb364cb0c161bcac87e">qtd_overlay</a>;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span> <span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="structehci__qhd__t.html#a4b1141237b480e4c38afe96a59ca4cad"> 192</a></span>&#160; uint8_t <a class="code" href="structehci__qhd__t.html#a4b1141237b480e4c38afe96a59ca4cad">used</a>;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; uint8_t is_removing;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; uint8_t pid_non_control;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; uint8_t class_code;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; uint16_t total_xferred_bytes; <span class="comment">// number of bytes xferred until a qtd with ioc bit set</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; uint8_t interval_ms; <span class="comment">// polling interval in frames (or milisecond)</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; uint8_t reserved;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> * <span class="keyword">volatile</span> p_qtd_list_head; <span class="comment">// head of the scheduled TD list</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> * <span class="keyword">volatile</span> p_qtd_list_tail; <span class="comment">// tail of the scheduled TD list</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;} <a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a>;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;STATIC_ASSERT( <span class="keyword">sizeof</span>(<a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a>) == 64, <span class="stringliteral">&quot;size is not correct&quot;</span> );</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="structehci__itd__t.html"> 208</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___group___variable_attr.html#ga2438155e62fe9b0185e856ade620cd5d">ATTR_ALIGNED</a>(32) {</div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113"> 210</a></span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> <a class="code" href="structehci__itd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">next</a>;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// iTD Control</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a2df482bb0528381abc0a05905bb5826a"> 215</a></span>&#160; <span class="keyword">volatile</span> uint32_t offset : 12 ; </div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a82f879acedb3ac6ba026e7dce89fc711"> 216</a></span>&#160; <span class="keyword">volatile</span> uint32_t page_select : 3 ; </div>
<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a0696e82e3bbfbb1798cc96c8fe0cb218"> 217</a></span>&#160; uint32_t int_on_complete : 1 ; </div>
<div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#aa22e7675f77b1f89a273f53b2707fc8b"> 218</a></span>&#160; <span class="keyword">volatile</span> uint32_t length : 12 ; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// iTD Status</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a5ce6f336cb93390d61b2fce5edc87d26"> 221</a></span>&#160; <span class="keyword">volatile</span> uint32_t error : 1 ; </div>
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a55dfaf1427c6b0df79f79b7b3be5990c"> 222</a></span>&#160; <span class="keyword">volatile</span> uint32_t babble_err : 1 ; </div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#ac5db4563dd2d98e90747f9969a338033"> 223</a></span>&#160; <span class="keyword">volatile</span> uint32_t buffer_err : 1 ; </div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a4e55231d0adda8f7262ab94d443cc7af"> 224</a></span>&#160; <span class="keyword">volatile</span> uint32_t active : 1 ; </div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; } xact[8];</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="structehci__itd__t.html#a2988381c89c877faa091c6ed4398de4a"> 228</a></span>&#160; uint32_t BufferPointer[7];</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// // FIXME: Store meta data into buffer pointer reserved for saving memory</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// /*---------- HCD Area ----------*/</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">// uint32_t used;</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">// uint32_t IhdIdx;</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// uint32_t reserved[6];</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;} <a class="code" href="structehci__itd__t.html">ehci_itd_t</a>;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;STATIC_ASSERT( <span class="keyword">sizeof</span>(<a class="code" href="structehci__itd__t.html">ehci_itd_t</a>) == 64, <span class="stringliteral">&quot;size is not correct&quot;</span> );</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html"> 240</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group___group___variable_attr.html#ga2438155e62fe9b0185e856ade620cd5d">ATTR_ALIGNED</a>(32) {</div>
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113"> 242</a></span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> <a class="code" href="structehci__sitd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">next</a>;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
<div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a5e961d126e4339cdfa5a69e8ad877a46"> 245</a></span>&#160; uint32_t device_address : 7; </div>
<div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a3e57c2ef1c3ffb36722f000cc1156824"> 246</a></span>&#160; uint32_t : 1; </div>
<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a8ece0acb43021a17c4368c5580b537f4"> 247</a></span>&#160; uint32_t endpoint_number : 4; </div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a6712ba6dd1d5b43d2d56ff8ac4e275a7"> 248</a></span>&#160; uint32_t : 4; </div>
<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a3e65707a3c47fda14d6c69f2e49a1c2f"> 249</a></span>&#160; uint32_t hub_address : 7; </div>
<div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a9ce12a63de64ef64ae2d59d128251cae"> 250</a></span>&#160; uint32_t : 1; </div>
<div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#af9cf8a2a4727ed79cede49b0fa498c1c"> 251</a></span>&#160; uint32_t port_number : 7; </div>
<div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a2148ffb99828aeaced6a5655502434ac"> 252</a></span>&#160; uint32_t direction : 1; </div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; uint32_t : 0; <span class="comment">// padding to the end of current storage unit</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="comment">// End of Word 1</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a7e75a0c6735b1dfe67e7d90481b5af1a"> 257</a></span>&#160; uint8_t <a class="code" href="structehci__sitd__t.html#a7e75a0c6735b1dfe67e7d90481b5af1a">interrupt_smask</a> ; </div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a41312c416f7c8ddeb38e652bf0c9f96b"> 258</a></span>&#160; uint8_t <a class="code" href="structehci__sitd__t.html#a41312c416f7c8ddeb38e652bf0c9f96b">non_hs_interrupt_cmask</a> ; </div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a5a6ed8c04a3db86066924b1a1bf4dad3"> 259</a></span>&#160; uint16_t <a class="code" href="structehci__sitd__t.html#a5a6ed8c04a3db86066924b1a1bf4dad3">reserved</a> ; </div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="comment">// End of Word 2</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Status [7:0] TODO indentical to qTD Token&#39;status --&gt; refractor later</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a21636d25805166f07548756f9181d3fc"> 264</a></span>&#160; <span class="keyword">volatile</span> uint32_t : 1 ; <span class="comment">// reserved</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">volatile</span> uint32_t split_state : 1 ;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">volatile</span> uint32_t missed_uframe : 1 ;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">volatile</span> uint32_t xact_err : 1 ;</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">volatile</span> uint32_t babble_err : 1 ;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">volatile</span> uint32_t buffer_err : 1 ;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">volatile</span> uint32_t error : 1 ;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keyword">volatile</span> uint32_t active : 1 ;</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// Micro-frame Schedule Control</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#aa5932db177d0fde25e847009477bfadd"> 273</a></span>&#160; <span class="keyword">volatile</span> uint32_t cmask_progress : 8 ; </div>
<div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#aef59a84424da042ebcfce5c9bc7a229d"> 274</a></span>&#160; <span class="keyword">volatile</span> uint32_t total_bytes : 10 ; </div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">volatile</span> uint32_t : 4 ; </div>
<div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a82f879acedb3ac6ba026e7dce89fc711"> 276</a></span>&#160; <span class="keyword">volatile</span> uint32_t page_select : 1 ; </div>
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a0696e82e3bbfbb1798cc96c8fe0cb218"> 277</a></span>&#160; uint32_t int_on_complete : 1 ; </div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the end of current storage unit</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// End of Word 3</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a7b85ca56525eeb50b3d63b036139ebeb"> 282</a></span>&#160; uint32_t buffer[2]; <span class="comment">// buffer[1] TP: Transaction Position - T-Count: Transaction Count</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment">// union{</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment">// uint32_t BufferPointer1;</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment">// struct {</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">// volatile uint32_t TCount : 3;</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment">// volatile uint32_t TPosition : 2;</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment">// };</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment">// };</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">/*---------- Word 6 ----------*/</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="unionehci__link__t.html">ehci_link_t</a> back;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structehci__sitd__t.html#a4b1141237b480e4c38afe96a59ca4cad"> 296</a></span>&#160; uint8_t <a class="code" href="structehci__sitd__t.html#a4b1141237b480e4c38afe96a59ca4cad">used</a>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; uint8_t ihd_idx;</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; uint8_t reserved2[2];</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;} <a class="code" href="structehci__sitd__t.html">ehci_sitd_t</a>;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;STATIC_ASSERT( <span class="keyword">sizeof</span>(<a class="code" href="structehci__sitd__t.html">ehci_sitd_t</a>) == 32, <span class="stringliteral">&quot;size is not correct&quot;</span> );</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment">// EHCI Operational Register</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="keyword">enum</span> ehci_interrupt_mask_{</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; EHCI_INT_MASK_USB = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(0),</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; EHCI_INT_MASK_ERROR = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(1),</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; EHCI_INT_MASK_PORT_CHANGE = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(2),</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; EHCI_INT_MASK_FRAMELIST_ROLLOVER = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(3),</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; EHCI_INT_MASK_PCI_HOST_SYSTEM_ERROR = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(4),</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; EHCI_INT_MASK_ASYNC_ADVANCE = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(5),</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; EHCI_INT_MASK_NXP_SOF = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(7),</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; EHCI_INT_MASK_NXP_ASYNC = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(18),</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; EHCI_INT_MASK_NXP_PERIODIC = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(19),</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; EHCI_INT_MASK_ALL =</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; EHCI_INT_MASK_USB | EHCI_INT_MASK_ERROR | EHCI_INT_MASK_PORT_CHANGE |</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; EHCI_INT_MASK_FRAMELIST_ROLLOVER | EHCI_INT_MASK_PCI_HOST_SYSTEM_ERROR |</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; EHCI_INT_MASK_ASYNC_ADVANCE | EHCI_INT_MASK_NXP_SOF |</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; EHCI_INT_MASK_NXP_ASYNC | EHCI_INT_MASK_NXP_PERIODIC</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;};</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="keyword">enum</span> ehci_usbcmd_pos_ {</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; EHCI_USBCMD_POS_RUN_STOP = 0,</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; EHCI_USBCMD_POS_FRAMELIST_SZIE = 2,</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; EHCI_USBCMD_POS_PERIOD_ENABLE = 4,</div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; EHCI_USBCMD_POS_ASYNC_ENABLE = 5,</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; EHCI_USBCMD_POS_NXP_FRAMELIST_SIZE_MSB = 15,</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; EHCI_USBCMD_POS_INTERRUPT_THRESHOLD = 16</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;};</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="keyword">enum</span> ehci_portsc_change_mask_{</div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; EHCI_PORTSC_MASK_CONNECT_STATUS_CHANGE = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(1),</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; EHCI_PORTSC_MASK_PORT_ENABLE_CHAGNE = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(3),</div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; EHCI_PORTSC_MASK_OVER_CURRENT_CHANGE = <a class="code" href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a>(5),</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; EHCI_PORTSC_MASK_ALL =</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; EHCI_PORTSC_MASK_CONNECT_STATUS_CHANGE |</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; EHCI_PORTSC_MASK_PORT_ENABLE_CHAGNE |</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; EHCI_PORTSC_MASK_OVER_CURRENT_CHANGE</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;};</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="structehci__registers__t.html"> 346</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">volatile</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ada89558b4ff38af9168f5c527b645fe0"> 348</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#ada89558b4ff38af9168f5c527b645fe0">usb_cmd</a> ; </div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ab26cb1fa665863b363c7da77a5b392ce"> 350</a></span>&#160; uint32_t run_stop : 1 ; </div>
<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aa0110dfcd1a7cfdd3fae2a5676f7901d"> 351</a></span>&#160; uint32_t reset : 1 ; </div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a26cf3cf2046b927138dba0f440b891f3"> 352</a></span>&#160; uint32_t framelist_size : 2 ; </div>
<div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a81f7584ab8fd138bb00285662d66e38d"> 353</a></span>&#160; uint32_t periodic_enable : 1 ; </div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a20cc16928400153e12bd87ea837b3a31"> 354</a></span>&#160; uint32_t async_enable : 1 ; </div>
<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a570c11c54b30adf4623cb3cf401f9f7a"> 355</a></span>&#160; uint32_t advacne_async : 1 ; </div>
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a97aaaf2d3184d2fe1a0cdcfc2475353a"> 356</a></span>&#160; uint32_t light_reset : 1 ; </div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aa46244e8912f2a1ef3e4aa8c713e9da7"> 357</a></span>&#160; uint32_t async_park : 2 ; </div>
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a3e57c2ef1c3ffb36722f000cc1156824"> 358</a></span>&#160; uint32_t : 1 ; </div>
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a3adbfb23660f8e985630328cd13af567"> 359</a></span>&#160; uint32_t async_park_enable : 1 ; </div>
<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a6712ba6dd1d5b43d2d56ff8ac4e275a7"> 360</a></span>&#160; uint32_t : 3 ; </div>
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a85ab62a462e64f28df918448be8c192b"> 361</a></span>&#160; uint32_t nxp_framelist_size_msb : 1 ; </div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#abb9b8039a32122dcaee39c8774adeb23"> 362</a></span>&#160; uint32_t int_threshold : 8 ; </div>
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a9ce12a63de64ef64ae2d59d128251cae"> 363</a></span>&#160; uint32_t : 0 ; <span class="comment">// padding to the boundary of storage unit</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }usb_cmd_bit;</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; };</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a8758e103afb55f598eeb082f60537d78"> 368</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#a8758e103afb55f598eeb082f60537d78">usb_sts</a> ; </div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a6e60f608783dd4476b3b8ecab7066eb3"> 370</a></span>&#160; uint32_t usb : 1 ; </div>
<div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a6fedc196af2d4d152fd32b0783c78d7f"> 371</a></span>&#160; uint32_t usb_error : 1 ; </div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aa893558e628e58f2f183cbedbf4863b7"> 372</a></span>&#160; uint32_t port_change_detect : 1 ; </div>
<div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#abbc16f083b47d7336fb7e70a2cc2ccc7"> 373</a></span>&#160; uint32_t framelist_rollover : 1 ; </div>
<div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ac1fa66147939da3bd3f7e84d4c79fd43"> 374</a></span>&#160; uint32_t pci_host_system_error : 1 ; </div>
<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ac6607680de70be131c44e27cc2f2c3cd"> 375</a></span>&#160; uint32_t async_advance : 1 ; </div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; uint32_t : 1 ; </div>
<div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ac48bc1a0f022be1211fb852bd1d96965"> 377</a></span>&#160; uint32_t nxp_int_sof : 1 ; </div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; uint32_t : 4 ; </div>
<div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a2938b949325ea9f33aac8c53b890cc1b"> 379</a></span>&#160; uint32_t hc_halted : 1 ; </div>
<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a079482937c99b8f2d01747fd5fefa6f4"> 380</a></span>&#160; uint32_t reclamation : 1 ; </div>
<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a1e2613e1c7cd4e2aa2196cdb773b3d0c"> 381</a></span>&#160; uint32_t period_schedule_status : 1 ; </div>
<div class="line"><a name="l00382"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a050fbd190c90a33c1bbc35b5f82f17fa"> 382</a></span>&#160; uint32_t async_schedule_status : 1 ; </div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; uint32_t : 2 ; </div>
<div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ae7f31fc1313f1e389a03738c07b9e325"> 384</a></span>&#160; uint32_t nxp_int_async : 1 ; </div>
<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a404c78dabf4df19e0cb2dd66d514848f"> 385</a></span>&#160; uint32_t nxp_int_period : 1 ; </div>
<div class="line"><a name="l00386"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a4854608c0e776f0704a4d9a4b98ea57d"> 386</a></span>&#160; uint32_t : 12 ; </div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the boundary of storage unit</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; }usb_sts_bit;</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; };</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">union</span>{</div>
<div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aee3539bd214c9f1c3a5b35db1d086fa2"> 392</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#aee3539bd214c9f1c3a5b35db1d086fa2">usb_int_enable</a> ; </div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; uint32_t usb : 1 ; </div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; uint32_t usb_error : 1 ; </div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; uint32_t port_change_detect : 1 ; </div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; uint32_t framelist_rollover : 1 ; </div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; uint32_t pci_host_system_error : 1 ; </div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; uint32_t async_advance : 1 ; </div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; uint32_t : 1 ; </div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; uint32_t nxp_int_sof : 1 ; </div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; uint32_t : 10 ; </div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; uint32_t nxp_int_async : 1 ; </div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; uint32_t nxp_int_period : 1 ; </div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; uint32_t : 12 ; </div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; uint32_t : 0 ; <span class="comment">// padding to the boundary of storage unit</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }usb_int_enable_bit;</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; };</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
<div class="line"><a name="l00410"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a05f60adb7ca73495905c236f23d474d6"> 410</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#a05f60adb7ca73495905c236f23d474d6">frame_index</a> ; </div>
<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aae0e38499dd86de20317ce89a4c074bc"> 411</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#aae0e38499dd86de20317ce89a4c074bc">ctrl_ds_seg</a> ; </div>
<div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a7a0f624309b7e7068948d6cc1fe63da6"> 412</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#a7a0f624309b7e7068948d6cc1fe63da6">periodic_list_base</a> ; </div>
<div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aba0b46810786774adba1dcee94c2b0ca"> 413</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#aba0b46810786774adba1dcee94c2b0ca">async_list_base</a> ; </div>
<div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#adde3355c31e811ed52bb953ca8cb3396"> 414</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#adde3355c31e811ed52bb953ca8cb3396">tt_control</a> ; </div>
<div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aac9724a68645be69c67178229134aa21"> 415</a></span>&#160; uint32_t reserved[8] ; </div>
<div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#acbf6bb470c1d14ab3923031b57734865"> 416</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#acbf6bb470c1d14ab3923031b57734865">config_flag</a> ; </div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a8003e7311686c7ef8ab9b8a9a50c4573"> 419</a></span>&#160; uint32_t <a class="code" href="structehci__registers__t.html#a8003e7311686c7ef8ab9b8a9a50c4573">portsc</a> ; </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00421"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a58496bff225bdd838af09e528b201a0f"> 421</a></span>&#160; uint32_t current_connect_status : 1; </div>
<div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a2fd8c7797b12f6e766180d74026c7ab0"> 422</a></span>&#160; uint32_t connect_status_change : 1; </div>
<div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a3116700ae96399bc2b639e419f725be4"> 423</a></span>&#160; uint32_t port_enable : 1; </div>
<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aa38d11cf10ad5384ff62be4fed5ccc3a"> 424</a></span>&#160; uint32_t port_enable_change : 1; </div>
<div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ace6b84aff30f539cc19f9c8d7607b9d6"> 425</a></span>&#160; uint32_t over_current_active : 1; </div>
<div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a9dcaa14f2998d9ae0a59c4e314446ced"> 426</a></span>&#160; uint32_t over_current_change : 1; </div>
<div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a0938134b094fd1435eec21b8365a64c8"> 427</a></span>&#160; uint32_t force_port_resume : 1; </div>
<div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aa7ea72c12df3206cfaf4688148a3b091"> 428</a></span>&#160; uint32_t suspend : 1; </div>
<div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a9e11f2fe465b3971a7b3bc1162928fa4"> 429</a></span>&#160; uint32_t port_reset : 1; </div>
<div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a9911b7e84b858661b407524f4bc2d2b1"> 430</a></span>&#160; uint32_t nxp_highspeed_status : 1; </div>
<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a4e930b24d7f001b633246a2780ee9940"> 431</a></span>&#160; uint32_t line_status : 2; </div>
<div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ad1e4c5cfc259f34e52baad38060a2d45"> 432</a></span>&#160; uint32_t port_power : 1; </div>
<div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a799501625702562ec594f6a2ae03a4be"> 433</a></span>&#160; uint32_t port_owner : 1; </div>
<div class="line"><a name="l00434"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#af45723569bb7da28ed6c4ded0fd44b44"> 434</a></span>&#160; uint32_t port_indicator_control : 2; </div>
<div class="line"><a name="l00435"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a07820834719fcfa649c32da23dc7b870"> 435</a></span>&#160; uint32_t port_test_control : 4; </div>
<div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#af2b6342eddbac6afd0498878dbe4f040"> 436</a></span>&#160; uint32_t wake_on_connect_enable : 1; </div>
<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a4d3f477b644b9608920375f3e489da41"> 437</a></span>&#160; uint32_t wake_on_disconnect_enable : 1; </div>
<div class="line"><a name="l00438"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#aeb1838e319021e7dba82b0b74e5170fc"> 438</a></span>&#160; uint32_t wake_on_over_current_enable : 1; </div>
<div class="line"><a name="l00439"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a14c9de4ce08c88d7e7dbddd7707d7d90"> 439</a></span>&#160; uint32_t nxp_phy_clock_disable : 1; </div>
<div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#a78b0e0f9ce4fb61a1aa95e8db2901bef"> 440</a></span>&#160; uint32_t nxp_port_force_fullspeed : 1; </div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; uint32_t : 1;</div>
<div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="structehci__registers__t.html#ad61049d4c309d378d92ea98668051c0b"> 442</a></span>&#160; uint32_t nxp_port_speed : 2; </div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; uint32_t : 0; <span class="comment">// padding to the boundary of storage unit</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }portsc_bit;</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; };</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;}<a class="code" href="structehci__registers__t.html">ehci_registers_t</a>;</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment">// EHCI Data Organization</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment">//--------------------------------------------------------------------+</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"><a class="line" href="structehci__data__t.html"> 451</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="comment">//------------- Static Async/Period List Head, Each for one controller -------------//</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a> async_head[CONTROLLER_HOST_NUMBER]; </div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor">#if EHCI_PERIODIC_LIST</span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="preprocessor"></span> <span class="comment">// for NXP ECHI, only implement 1 ms &amp; 2 ms &amp; 4 ms, 8 ms (framelist)</span></div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="comment">// [0] : 1ms, [1] : 2ms, [2] : 4ms, [3] : 8 ms</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a> period_head_arr[CONTROLLER_HOST_NUMBER][4];</div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="comment">//------------- Data for Address 0 (use async head as its queue head) -------------//</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="structehci__data__t.html#ac6e0798c8243ff57e75d81006856bb68"> 462</a></span>&#160; <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> addr0_qtd[3];</div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00466"></a><span class="lineno"><a class="line" href="structehci__data__t.html#adac2758e568b22df7646940e1c9221f3"> 466</a></span>&#160; <a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a> <a class="code" href="structehci__data__t.html#adac2758e568b22df7646940e1c9221f3">qhd</a>;</div>
<div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="structehci__data__t.html#a05e2eebc74f80772c79c17054e46fb7d"> 467</a></span>&#160; <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> qtd[3];</div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }control;</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="structehci__qhd__t.html">ehci_qhd_t</a> qhd[HCD_MAX_ENDPOINT] ; </div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="structehci__qtd__t.html">ehci_qtd_t</a> qtd[HCD_MAX_XFER] <a class="code" href="group___group___variable_attr.html#ga2438155e62fe9b0185e856ade620cd5d">ATTR_ALIGNED</a>(32) ; </div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment">// ehci_itd_t itd[EHCI_MAX_ITD] ; ///&lt; Iso Transfer Pool</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment">// ehci_sitd_t sitd[EHCI_MAX_SITD] ; ///&lt; Split (FS) Isochronous Transfer Pool</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }device[<a class="code" href="group___t_u_s_b___c_f_g___h_o_s_t.html#gafc4906ab5cb44b1931d4ae55894440c1">TUSB_CFG_HOST_DEVICE_MAX</a>];</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;}<a class="code" href="structehci__data__t.html">ehci_data_t</a>;</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor"></span> }</div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _TUSB_EHCI_H_ */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor"></span></div>
<div class="ttc" id="structehci__qhd__t_html_a521a53b806cafcb364cb0c161bcac87e"><div class="ttname"><a href="structehci__qhd__t.html#a521a53b806cafcb364cb0c161bcac87e">ehci_qhd_t::qtd_overlay</a></div><div class="ttdeci">volatile ehci_qtd_t qtd_overlay</div><div class="ttdoc">Word 4-11: Transfer Overlay. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00186">ehci.h:186</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_gga6cbf3d3e87d6fa2221fc0b467a985aaeae77dec640b6e35bfd1afb7832e5d5ced"><div class="ttname"><a href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeae77dec640b6e35bfd1afb7832e5d5ced">EHCI_QUEUE_ELEMENT_QHD</a></div><div class="ttdoc">1 </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00091">ehci.h:91</a></div></div>
<div class="ttc" id="group___group___binary_html_gaa67325f45e71a327f9e4dbb8455f64ee"><div class="ttname"><a href="group___group___binary.html#gaa67325f45e71a327f9e4dbb8455f64ee">BIT_</a></div><div class="ttdeci">#define BIT_(n)</div><div class="ttdoc">n-th Bit </div><div class="ttdef"><b>Definition:</b> <a href="binary_8h_source.html#l00054">binary.h:54</a></div></div>
<div class="ttc" id="structehci__registers__t_html_aae0e38499dd86de20317ce89a4c074bc"><div class="ttname"><a href="structehci__registers__t.html#aae0e38499dd86de20317ce89a4c074bc">ehci_registers_t::ctrl_ds_seg</a></div><div class="ttdeci">uint32_t ctrl_ds_seg</div><div class="ttdoc">(not used by NXP) This 32-bit register corresponds to the most significant address bits [63:32] for a...</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00411">ehci.h:411</a></div></div>
<div class="ttc" id="structehci__data__t_html_adac2758e568b22df7646940e1c9221f3"><div class="ttname"><a href="structehci__data__t.html#adac2758e568b22df7646940e1c9221f3">ehci_data_t::qhd</a></div><div class="ttdeci">ehci_qhd_t qhd</div><div class="ttdoc">Queue Head Pool. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00466">ehci.h:466</a></div></div>
<div class="ttc" id="structehci__sitd__t_html_a5a6ed8c04a3db86066924b1a1bf4dad3"><div class="ttname"><a href="structehci__sitd__t.html#a5a6ed8c04a3db86066924b1a1bf4dad3">ehci_sitd_t::reserved</a></div><div class="ttdeci">uint16_t reserved</div><div class="ttdoc">reserved </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00259">ehci.h:259</a></div></div>
<div class="ttc" id="group___t_u_s_b___c_f_g___h_o_s_t_html_gafc4906ab5cb44b1931d4ae55894440c1"><div class="ttname"><a href="group___t_u_s_b___c_f_g___h_o_s_t.html#gafc4906ab5cb44b1931d4ae55894440c1">TUSB_CFG_HOST_DEVICE_MAX</a></div><div class="ttdeci">#define TUSB_CFG_HOST_DEVICE_MAX</div><div class="ttdoc">Maximum number of device host stack can manage If hub class is not enabled, set this equal to numbe...</div><div class="ttdef"><b>Definition:</b> <a href="configuration_8txt_source.html#l00035">configuration.txt:35</a></div></div>
<div class="ttc" id="structehci__registers__t_html_a7a0f624309b7e7068948d6cc1fe63da6"><div class="ttname"><a href="structehci__registers__t.html#a7a0f624309b7e7068948d6cc1fe63da6">ehci_registers_t::periodic_list_base</a></div><div class="ttdeci">uint32_t periodic_list_base</div><div class="ttdoc">This 32-bit register contains the beginning address of the Periodic Frame List in the system memory...</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00412">ehci.h:412</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_gab1e3305e65f94c6b12023de02563b284"><div class="ttname"><a href="group___e_h_c_i.html#gab1e3305e65f94c6b12023de02563b284">tusb_pid_</a></div><div class="ttdeci">tusb_pid_</div><div class="ttdoc">EHCI PID. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00097">ehci.h:97</a></div></div>
<div class="ttc" id="structehci__qhd__t_html_acd25df2a0b360a90b8f4337f42965155"><div class="ttname"><a href="structehci__qhd__t.html#acd25df2a0b360a90b8f4337f42965155">ehci_qhd_t::qtd_addr</a></div><div class="ttdeci">volatile uint32_t qtd_addr</div><div class="ttdoc">Word 3: Current qTD Pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00183">ehci.h:183</a></div></div>
<div class="ttc" id="structehci__registers__t_html_acbf6bb470c1d14ab3923031b57734865"><div class="ttname"><a href="structehci__registers__t.html#acbf6bb470c1d14ab3923031b57734865">ehci_registers_t::config_flag</a></div><div class="ttdeci">uint32_t config_flag</div><div class="ttdoc">(not used by NXP) configured flag register </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00416">ehci.h:416</a></div></div>
<div class="ttc" id="structehci__qhd__t_html_a4b1141237b480e4c38afe96a59ca4cad"><div class="ttname"><a href="structehci__qhd__t.html#a4b1141237b480e4c38afe96a59ca4cad">ehci_qhd_t::used</a></div><div class="ttdeci">uint8_t used</div><div class="ttdoc">thus there are 16 bytes padding free that we can make use of. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00192">ehci.h:192</a></div></div>
<div class="ttc" id="structehci__registers__t_html"><div class="ttname"><a href="structehci__registers__t.html">ehci_registers_t</a></div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00346">ehci.h:346</a></div></div>
<div class="ttc" id="structehci__registers__t_html_a05f60adb7ca73495905c236f23d474d6"><div class="ttname"><a href="structehci__registers__t.html#a05f60adb7ca73495905c236f23d474d6">ehci_registers_t::frame_index</a></div><div class="ttdeci">uint32_t frame_index</div><div class="ttdoc">This register is used by the host controller to index into the periodic frame list. The register updates every 125 microseconds (once each micro-frame). Bits [N:3] are used to select a particular entry in the Periodic Frame List during periodic schedule execution. The number of bits used for the index depends on the size of the frame list as set by system software in the Frame List Sizefield in the USBCMD register. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00410">ehci.h:410</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_ga6cbf3d3e87d6fa2221fc0b467a985aae"><div class="ttname"><a href="group___e_h_c_i.html#ga6cbf3d3e87d6fa2221fc0b467a985aae">ehci_queue_element_type_</a></div><div class="ttdeci">ehci_queue_element_type_</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00089">ehci.h:89</a></div></div>
<div class="ttc" id="structehci__sitd__t_html_a8f18d97ad3c8b23a16c6b07c3ce58113"><div class="ttname"><a href="structehci__sitd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">ehci_sitd_t::next</a></div><div class="ttdeci">ehci_link_t next</div><div class="ttdoc">Word 0: Next Link Pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00242">ehci.h:242</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_gga6cbf3d3e87d6fa2221fc0b467a985aaeaedf6f4454f16369d7283f0495d746017"><div class="ttname"><a href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaedf6f4454f16369d7283f0495d746017">EHCI_QUEUE_ELEMENT_SITD</a></div><div class="ttdoc">2 </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00092">ehci.h:92</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_gga6cbf3d3e87d6fa2221fc0b467a985aaea74403c018b0ab2c2391e7d09a97218ac"><div class="ttname"><a href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaea74403c018b0ab2c2391e7d09a97218ac">EHCI_QUEUE_ELEMENT_ITD</a></div><div class="ttdoc">0 </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00090">ehci.h:90</a></div></div>
<div class="ttc" id="structehci__qhd__t_html"><div class="ttname"><a href="structehci__qhd__t.html">ehci_qhd_t</a></div><div class="ttdoc">Queue Head (section 3.6) </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00156">ehci.h:156</a></div></div>
<div class="ttc" id="structehci__registers__t_html_a8003e7311686c7ef8ab9b8a9a50c4573"><div class="ttname"><a href="structehci__registers__t.html#a8003e7311686c7ef8ab9b8a9a50c4573">ehci_registers_t::portsc</a></div><div class="ttdeci">uint32_t portsc</div><div class="ttdoc">port status and control </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00419">ehci.h:419</a></div></div>
<div class="ttc" id="structehci__qtd__t_html_a8f18d97ad3c8b23a16c6b07c3ce58113"><div class="ttname"><a href="structehci__qtd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">ehci_qtd_t::next</a></div><div class="ttdeci">ehci_link_t next</div><div class="ttdoc">Word 0: Next QTD Pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00116">ehci.h:116</a></div></div>
<div class="ttc" id="structehci__registers__t_html_aba0b46810786774adba1dcee94c2b0ca"><div class="ttname"><a href="structehci__registers__t.html#aba0b46810786774adba1dcee94c2b0ca">ehci_registers_t::async_list_base</a></div><div class="ttdeci">uint32_t async_list_base</div><div class="ttdoc">This 32-bit register contains the address of the next asynchronous queue head to be executed...</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00413">ehci.h:413</a></div></div>
<div class="ttc" id="structehci__registers__t_html_aee3539bd214c9f1c3a5b35db1d086fa2"><div class="ttname"><a href="structehci__registers__t.html#aee3539bd214c9f1c3a5b35db1d086fa2">ehci_registers_t::usb_int_enable</a></div><div class="ttdeci">uint32_t usb_int_enable</div><div class="ttdoc">This register enables and disables reporting of the corresponding interrupt to the software...</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00392">ehci.h:392</a></div></div>
<div class="ttc" id="structehci__itd__t_html_a8f18d97ad3c8b23a16c6b07c3ce58113"><div class="ttname"><a href="structehci__itd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">ehci_itd_t::next</a></div><div class="ttdeci">ehci_link_t next</div><div class="ttdoc">Word 0: Next Link Pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00210">ehci.h:210</a></div></div>
<div class="ttc" id="structehci__sitd__t_html_a4b1141237b480e4c38afe96a59ca4cad"><div class="ttname"><a href="structehci__sitd__t.html#a4b1141237b480e4c38afe96a59ca4cad">ehci_sitd_t::used</a></div><div class="ttdeci">uint8_t used</div><div class="ttdoc">SITD is 32-byte aligned but occupies only 28 &gt; 4 bytes for storing extra data. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00296">ehci.h:296</a></div></div>
<div class="ttc" id="structehci__registers__t_html_a8758e103afb55f598eeb082f60537d78"><div class="ttname"><a href="structehci__registers__t.html#a8758e103afb55f598eeb082f60537d78">ehci_registers_t::usb_sts</a></div><div class="ttdeci">uint32_t usb_sts</div><div class="ttdoc">This register indicates pending interrupts and various states of the Host Controller. The status resulting from a transaction on the serial bus is not indicated in this register. Software sets a bit to 0 in this register by writing a 1 to it. See Section 4.15 for additional information concerning USB interrupt conditions. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00368">ehci.h:368</a></div></div>
<div class="ttc" id="group___group___variable_attr_html_ga2438155e62fe9b0185e856ade620cd5d"><div class="ttname"><a href="group___group___variable_attr.html#ga2438155e62fe9b0185e856ade620cd5d">ATTR_ALIGNED</a></div><div class="ttdeci">#define ATTR_ALIGNED(Bytes)</div><div class="ttdoc">This attribute specifies a minimum alignment for the variable or structure field, measured in bytes...</div><div class="ttdef"><b>Definition:</b> <a href="compiler__gcc_8h_source.html#l00072">compiler_gcc.h:72</a></div></div>
<div class="ttc" id="group___e_h_c_i_html_gga6cbf3d3e87d6fa2221fc0b467a985aaeaab40dae76d9558b2b54d9f1d0cc40055"><div class="ttname"><a href="group___e_h_c_i.html#gga6cbf3d3e87d6fa2221fc0b467a985aaeaab40dae76d9558b2b54d9f1d0cc40055">EHCI_QUEUE_ELEMENT_FSTN</a></div><div class="ttdoc">3 </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00093">ehci.h:93</a></div></div>
<div class="ttc" id="structehci__data__t_html"><div class="ttname"><a href="structehci__data__t.html">ehci_data_t</a></div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00451">ehci.h:451</a></div></div>
<div class="ttc" id="common_8h_html"><div class="ttname"><a href="common_8h.html">common.h</a></div></div>
<div class="ttc" id="structehci__qhd__t_html_a8f18d97ad3c8b23a16c6b07c3ce58113"><div class="ttname"><a href="structehci__qhd__t.html#a8f18d97ad3c8b23a16c6b07c3ce58113">ehci_qhd_t::next</a></div><div class="ttdeci">ehci_link_t next</div><div class="ttdoc">Word 0: Queue Head Horizontal Link Pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00158">ehci.h:158</a></div></div>
<div class="ttc" id="structehci__registers__t_html_ada89558b4ff38af9168f5c527b645fe0"><div class="ttname"><a href="structehci__registers__t.html#ada89558b4ff38af9168f5c527b645fe0">ehci_registers_t::usb_cmd</a></div><div class="ttdeci">uint32_t usb_cmd</div><div class="ttdoc">The Command Register indicates the command to be executed by the serial bus host controller. Writing to the register causes a command to be executed. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00348">ehci.h:348</a></div></div>
<div class="ttc" id="unionehci__link__t_html"><div class="ttname"><a href="unionehci__link__t.html">ehci_link_t</a></div><div class="ttdoc">Link pointer. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00104">ehci.h:104</a></div></div>
<div class="ttc" id="structehci__sitd__t_html"><div class="ttname"><a href="structehci__sitd__t.html">ehci_sitd_t</a></div><div class="ttdoc">Split (Full-Speed) Isochronous Transfer Descriptor. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00240">ehci.h:240</a></div></div>
<div class="ttc" id="structehci__qtd__t_html"><div class="ttname"><a href="structehci__qtd__t.html">ehci_qtd_t</a></div><div class="ttdoc">Queue Element Transfer Descriptor (section 3.5) </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00113">ehci.h:113</a></div></div>
<div class="ttc" id="structehci__sitd__t_html_a7e75a0c6735b1dfe67e7d90481b5af1a"><div class="ttname"><a href="structehci__sitd__t.html#a7e75a0c6735b1dfe67e7d90481b5af1a">ehci_sitd_t::interrupt_smask</a></div><div class="ttdeci">uint8_t interrupt_smask</div><div class="ttdoc">Word 2: Micro-frame Schedule Control. </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00257">ehci.h:257</a></div></div>
<div class="ttc" id="structehci__sitd__t_html_a41312c416f7c8ddeb38e652bf0c9f96b"><div class="ttname"><a href="structehci__sitd__t.html#a41312c416f7c8ddeb38e652bf0c9f96b">ehci_sitd_t::non_hs_interrupt_cmask</a></div><div class="ttdeci">uint8_t non_hs_interrupt_cmask</div><div class="ttdoc">This field (along with the Activeand SplitX-statefields in the Statusbyte) are used to determine duri...</div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00258">ehci.h:258</a></div></div>
<div class="ttc" id="structehci__itd__t_html"><div class="ttname"><a href="structehci__itd__t.html">ehci_itd_t</a></div><div class="ttdoc">Highspeed Isochronous Transfer Descriptor (section 3.3) </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00208">ehci.h:208</a></div></div>
<div class="ttc" id="structehci__registers__t_html_adde3355c31e811ed52bb953ca8cb3396"><div class="ttname"><a href="structehci__registers__t.html#adde3355c31e811ed52bb953ca8cb3396">ehci_registers_t::tt_control</a></div><div class="ttdeci">uint32_t tt_control</div><div class="ttdoc">nxp embedded transaction translator (reserved by EHCI specs) </div><div class="ttdef"><b>Definition:</b> <a href="ehci_8h_source.html#l00414">ehci.h:414</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_f44c0f1c8d3a85cc1de1e7f4648a56e6.html">tinyusb</a></li><li class="navelem"><a class="el" href="dir_b871d914c1cc8934d54bd26c3ab0c17f.html">host</a></li><li class="navelem"><a class="el" href="dir_34d4e3f184f092fafd44687e60b33ed9.html">ehci</a></li><li class="navelem"><a class="el" href="ehci_8h.html">ehci.h</a></li>
<li class="footer">Generated on Tue Apr 15 2014 10:49:24 for tinyusb by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>