€•<Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ'/translations/zh_CN/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/zh_TW/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/it_IT/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ja_JP/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/ko_KR/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/pt_BR/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ'/translations/sp_SP/driver-api/usb/dwc3”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ6Synopsys DesignWare Core SuperSpeed USB 3.0 Controller”h]”hŒ6Synopsys DesignWare Core SuperSpeed USB 3.0 Controller”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒA/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3.rst”h´KubhŒ field_list”“”)�”}”(hhh]”(hŒfield”“”)�”}”(hhh]”(hŒ field_name”“”)�”}”(hŒAuthor”h]”hŒAuthor”…”�”}”(hh×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhhÒh³hÊh´KubhŒ field_body”“”)�”}”(hŒ+Felipe Balbi ”h]”hŒ paragraph”“”)�”}”(hhéh]”(hŒFelipe Balbi <”…”�”}”(hhíh²hh³Nh´NubhŒ reference”“”)�”}”(hŒfelipe.balbi@linux.intel.com”h]”hŒfelipe.balbi@linux.intel.com”…”�”}”(hhöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ#mailto:felipe.balbi@linux.intel.com”uh1hôhhíubhŒ>”…”�”}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khhçubah}”(h]”h ]”h"]”h$]”h&]”uh1håhhÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÐh³hÊh´KhhÍh²hubhÑ)�”}”(hhh]”(hÖ)�”}”(hŒDate”h]”hŒDate”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÕhjh³hÊh´Kubhæ)�”}”(hŒ April 2017 ”h]”hì)�”}”(hŒ April 2017”h]”hŒ April 2017”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1håhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÐh³hÊh´KhhÍh²hubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjQh²hh³hÊh´K ubhì)�”}”(hŒ³The *Synopsys DesignWare Core SuperSpeed USB 3.0 Controller* (hereinafter referred to as *DWC3*) is a USB SuperSpeed compliant controller which can be configured in one of 4 ways:”h]”(hŒThe ”…”�”}”(hjbh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ8*Synopsys DesignWare Core SuperSpeed USB 3.0 Controller*”h]”hŒ6Synopsys DesignWare Core SuperSpeed USB 3.0 Controller”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjbubhŒ (hereinafter referred to as ”…”�”}”(hjbh²hh³Nh´Nubjk)�”}”(hŒ*DWC3*”h]”hŒDWC3”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjbubhŒT) is a USB SuperSpeed compliant controller which can be configured in one of 4 ways:”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K hjQh²hubhŒ block_quote”“”)�”}”(hŒl1. Peripheral-only configuration 2. Host-only configuration 3. Dual-Role configuration 4. Hub configuration ”h]”hŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒPeripheral-only configuration”h]”hì)�”}”(hj¥h]”hŒPeripheral-only configuration”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjžubj¢)�”}”(hŒHost-only configuration”h]”hì)�”}”(hj¼h]”hŒHost-only configuration”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjžubj¢)�”}”(hŒDual-Role configuration”h]”hì)�”}”(hjÓh]”hŒDual-Role configuration”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjžubj¢)�”}”(hŒHub configuration ”h]”hì)�”}”(hŒHub configuration”h]”hŒHub configuration”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjžubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jœhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j–h³hÊh´KhjQh²hubhì)�”}”(hXLinux currently supports several versions of this controller. In all likelihood, the version in your SoC is already supported. At the time of this writing, known tested versions range from 2.02a to 3.10a. As a rule of thumb, anything above 2.02a should work reliably well.”h]”hXLinux currently supports several versions of this controller. In all likelihood, the version in your SoC is already supported. At the time of this writing, known tested versions range from 2.02a to 3.10a. As a rule of thumb, anything above 2.02a should work reliably well.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjQh²hubhì)�”}”(hŒKCurrently, we have many known users for this driver. In alphabetical order:”h]”hŒKCurrently, we have many known users for this driver. In alphabetical order:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjQh²hubj—)�”}”(hŒg1. Cavium 2. Intel Corporation 3. Qualcomm 4. Rockchip 5. ST 6. Samsung 7. Texas Instruments 8. Xilinx ”h]”j�)�”}”(hhh]”(j¢)�”}”(hŒCavium”h]”hì)�”}”(hj6h]”hŒCavium”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒIntel Corporation”h]”hì)�”}”(hjMh]”hŒIntel Corporation”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒQualcomm”h]”hì)�”}”(hjdh]”hŒQualcomm”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒRockchip”h]”hì)�”}”(hj{h]”hŒRockchip”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Khjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒST”h]”hì)�”}”(hj’h]”hŒST”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒSamsung”h]”hì)�”}”(hj©h]”hŒSamsung”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K!hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒTexas Instruments”h]”hì)�”}”(hjÀh]”hŒTexas Instruments”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K"hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubj¢)�”}”(hŒXilinx ”h]”hì)�”}”(hŒXilinx”h]”hŒXilinx”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K#hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj1ubeh}”(h]”h ]”h"]”h$]”h&]”jjjhj j uh1jœhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j–h³hÊh´KhjQh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒSummary of Features”h]”hŒSummary of Features”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K&ubhì)�”}”(hŒñFor details about features supported by your version of DWC3, consult your IP team and/or *Synopsys DesignWare Core SuperSpeed USB 3.0 Controller Databook*. Following is a list of features supported by the driver at the time of this writing:”h]”(hŒZFor details about features supported by your version of DWC3, consult your IP team and/or ”…”�”}”(hjh²hh³Nh´Nubjk)�”}”(hŒA*Synopsys DesignWare Core SuperSpeed USB 3.0 Controller Databook*”h]”hŒ?Synopsys DesignWare Core SuperSpeed USB 3.0 Controller Databook”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjubhŒV. Following is a list of features supported by the driver at the time of this writing:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K(hjh²hubj—)�”}”(hX¥1. Up to 16 bidirectional endpoints (including the control pipe - ep0) 2. Flexible endpoint configuration 3. Simultaneous IN and OUT transfer support 4. Scatter-list support 5. Up to 256 TRBs [#trb]_ per endpoint 6. Support for all transfer types (*Control*, *Bulk*, *Interrupt*, and *Isochronous*) 7. SuperSpeed Bulk Streams 8. Link Power Management 9. Trace Events for debugging 10. DebugFS [#debugfs]_ interface ”h]”j�)�”}”(hhh]”(j¢)�”}”(hŒCUp to 16 bidirectional endpoints (including the control pipe - ep0)”h]”hì)�”}”(hŒCUp to 16 bidirectional endpoints (including the control pipe - ep0)”h]”hŒCUp to 16 bidirectional endpoints (including the control pipe - ep0)”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K-hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒFlexible endpoint configuration”h]”hì)�”}”(hjSh]”hŒFlexible endpoint configuration”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K/hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒ(Simultaneous IN and OUT transfer support”h]”hì)�”}”(hjjh]”hŒ(Simultaneous IN and OUT transfer support”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K0hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒScatter-list support”h]”hì)�”}”(hj�h]”hŒScatter-list support”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K1hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒ#Up to 256 TRBs [#trb]_ per endpoint”h]”hì)�”}”(hj˜h]”(hŒUp to 256 TRBs ”…”�”}”(hjšh²hh³Nh´NubhŒfootnote_reference”“”)�”}”(hŒ[#trb]_”h]”hŒ1”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”Œid1”ah ]”h"]”h$]”h&]”Œauto”KŒrefid”Œtrb”Œdocname”Œdriver-api/usb/dwc3”uh1j¡hjšŒresolved”KubhŒ per endpoint”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K2hj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒRSupport for all transfer types (*Control*, *Bulk*, *Interrupt*, and *Isochronous*)”h]”hì)�”}”(hŒRSupport for all transfer types (*Control*, *Bulk*, *Interrupt*, and *Isochronous*)”h]”(hŒ Support for all transfer types (”…”�”}”(hjÌh²hh³Nh´Nubjk)�”}”(hŒ *Control*”h]”hŒControl”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjÌubhŒ, ”…”�”}”(hjÌh²hh³Nh´Nubjk)�”}”(hŒ*Bulk*”h]”hŒBulk”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjÌubhŒ, ”…”�”}”(hjÌh²hh³Nh´Nubjk)�”}”(hŒ *Interrupt*”h]”hŒ Interrupt”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjÌubhŒ, and ”…”�”}”(hjÌh²hh³Nh´Nubjk)�”}”(hŒ *Isochronous*”h]”hŒ Isochronous”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjÌubhŒ)”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K3hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒSuperSpeed Bulk Streams”h]”hì)�”}”(hj*h]”hŒSuperSpeed Bulk Streams”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K5hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒLink Power Management”h]”hì)�”}”(hjAh]”hŒLink Power Management”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K6hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒTrace Events for debugging”h]”hì)�”}”(hjXh]”hŒTrace Events for debugging”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K7hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubj¢)�”}”(hŒDebugFS [#debugfs]_ interface ”h]”hì)�”}”(hŒDebugFS [#debugfs]_ interface”h]”(hŒDebugFS ”…”�”}”(hjqh²hh³Nh´Nubj¢)�”}”(hŒ [#debugfs]_”h]”hŒ3”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”Œid2”ah ]”h"]”h$]”h&]”j²Kj³Œid9”jµj¶uh1j¡hjqj·KubhŒ interface”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K8hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hj6ubeh}”(h]”h ]”h"]”h$]”h&]”jjjhj j uh1jœhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j–h³hÊh´K-hjh²hubhì)�”}”(hŒœThese features have all been exercised with many of the **in-tree** gadget drivers. We have verified both *ConfigFS* [#configfs]_ and legacy gadget drivers.”h]”(hŒ8These features have all been exercised with many of the ”…”�”}”(hj¥h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ **in-tree**”h]”hŒin-tree”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¥ubhŒ' gadget drivers. We have verified both ”…”�”}”(hj¥h²hh³Nh´Nubjk)�”}”(hŒ *ConfigFS*”h]”hŒConfigFS”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhj¥ubhŒ ”…”�”}”(hj¥h²hh³Nh´Nubj¢)�”}”(hŒ [#configfs]_”h]”hŒ4”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”Œid3”ah ]”h"]”h$]”h&]”j²Kj³Œconfigfs”jµj¶uh1j¡hj¥j·KubhŒ and legacy gadget drivers.”…”�”}”(hj¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K:hjh²hubeh}”(h]”Œsummary-of-features”ah ]”h"]”Œsummary of features”ah$]”h&]”uh1hµhh·h²hh³hÊh´K&ubh¶)�”}”(hhh]”(h»)�”}”(hŒ Driver Design”h]”hŒ Driver Design”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjõh²hh³hÊh´K?ubhì)�”}”(hŒÈThe DWC3 driver sits on the *drivers/usb/dwc3/* directory. All files related to this driver are in this one directory. This makes it easy for new-comers to read the code and understand how it behaves.”h]”(hŒThe DWC3 driver sits on the ”…”�”}”(hjh²hh³Nh´Nubjk)�”}”(hŒ*drivers/usb/dwc3/*”h]”hŒdrivers/usb/dwc3/”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjubhŒ™ directory. All files related to this driver are in this one directory. This makes it easy for new-comers to read the code and understand how it behaves.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KAhjõh²hubhì)�”}”(hŒ‘Because of DWC3's configuration flexibility, the driver is a little complex in some places but it should be rather straightforward to understand.”h]”hŒ“Because of DWC3’s configuration flexibility, the driver is a little complex in some places but it should be rather straightforward to understand.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KEhjõh²hubhì)�”}”(hŒ8The biggest part of the driver refers to the Gadget API.”h]”hŒ8The biggest part of the driver refers to the Gadget API.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KIhjõh²hubeh}”(h]”Œ driver-design”ah ]”h"]”Œ driver design”ah$]”h&]”uh1hµhh·h²hh³hÊh´K?ubh¶)�”}”(hhh]”(h»)�”}”(hŒKnown Limitations”h]”hŒKnown Limitations”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjJh²hh³hÊh´KLubhì)�”}”(hŒÃLike any other HW, DWC3 has its own set of limitations. To avoid constant questions about such problems, we decided to document them here and have a single location to where we could point users.”h]”hŒÃLike any other HW, DWC3 has its own set of limitations. To avoid constant questions about such problems, we decided to document them here and have a single location to where we could point users.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KNhjJh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒOUT Transfer Size Requirements”h]”hŒOUT Transfer Size Requirements”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjih²hh³hÊh´KSubhì)�”}”(hXýAccording to Synopsys Databook, all OUT transfer TRBs [#trb]_ must have their *size* field set to a value which is integer divisible by the endpoint's *wMaxPacketSize*. This means that *e.g.* in order to receive a Mass Storage *CBW* [#cbw]_, req->length must either be set to a value that's divisible by *wMaxPacketSize* (1024 on SuperSpeed, 512 on HighSpeed, etc), or DWC3 driver must add a Chained TRB pointing to a throw-away buffer for the remaining length. Without this, OUT transfers will **NOT** start.”h]”(hŒ6According to Synopsys Databook, all OUT transfer TRBs ”…”�”}”(hjzh²hh³Nh´Nubj¢)�”}”(hŒ[#trb]_”h]”hŒ1”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”Œid4”ah ]”h"]”h$]”h&]”j²Kj³j´jµj¶uh1j¡hjzj·KubhŒ must have their ”…”�”}”(hjzh²hh³Nh´Nubjk)�”}”(hŒ*size*”h]”hŒsize”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjzubhŒE field set to a value which is integer divisible by the endpoint’s ”…”�”}”(hjzh²hh³Nh´Nubjk)�”}”(hŒ*wMaxPacketSize*”h]”hŒwMaxPacketSize”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjzubhŒ. This means that ”…”�”}”(hjzh²hh³Nh´Nubjk)�”}”(hŒ*e.g.*”h]”hŒe.g.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjzubhŒ$ in order to receive a Mass Storage ”…”�”}”(hjzh²hh³Nh´Nubjk)�”}”(hŒ*CBW*”h]”hŒCBW”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjzubhŒ ”…”�”}”(hjzh²hh³Nh´Nubj¢)�”}”(hŒ[#cbw]_”h]”hŒ5”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”Œid5”ah ]”h"]”h$]”h&]”j²Kj³Œcbw”jµj¶uh1j¡hjzj·KubhŒB, req->length must either be set to a value that’s divisible by ”…”�”}”(hjzh²hh³Nh´Nubjk)�”}”(hŒ*wMaxPacketSize*”h]”hŒwMaxPacketSize”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjzubhŒ¯ (1024 on SuperSpeed, 512 on HighSpeed, etc), or DWC3 driver must add a Chained TRB pointing to a throw-away buffer for the remaining length. Without this, OUT transfers will ”…”�”}”(hjzh²hh³Nh´Nubj®)�”}”(hŒ**NOT**”h]”hŒNOT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjzubhŒ start.”…”�”}”(hjzh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KUhjih²hubhì)�”}”(hX:Note that as of this writing, this won't be a problem because DWC3 is fully capable of appending a chained TRB for the remaining length and completely hide this detail from the gadget driver. It's still worth mentioning because this seems to be the largest source of queries about DWC3 and *non-working transfers*.”h]”(hX&Note that as of this writing, this won’t be a problem because DWC3 is fully capable of appending a chained TRB for the remaining length and completely hide this detail from the gadget driver. It’s still worth mentioning because this seems to be the largest source of queries about DWC3 and ”…”�”}”(hjh²hh³Nh´Nubjk)�”}”(hŒ*non-working transfers*”h]”hŒnon-working transfers”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K^hjih²hubeh}”(h]”Œout-transfer-size-requirements”ah ]”h"]”Œout transfer size requirements”ah$]”h&]”uh1hµhjJh²hh³hÊh´KSubh¶)�”}”(hhh]”(h»)�”}”(hŒTRB Ring Size Limitation”h]”hŒTRB Ring Size Limitation”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjCh²hh³hÊh´Keubhì)�”}”(hŒìWe, currently, have a hard limit of 256 TRBs [#trb]_ per endpoint, with the last TRB being a Link TRB [#link_trb]_ pointing back to the first. This limit is arbitrary but it has the benefit of adding up to exactly 4096 bytes, or 1 Page.”h]”(hŒ-We, currently, have a hard limit of 256 TRBs ”…”�”}”(hjTh²hh³Nh´Nubj¢)�”}”(hŒ[#trb]_”h]”hŒ1”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”Œid6”ah ]”h"]”h$]”h&]”j²Kj³j´jµj¶uh1j¡hjTj·KubhŒ2 per endpoint, with the last TRB being a Link TRB ”…”�”}”(hjTh²hh³Nh´Nubj¢)�”}”(hŒ [#link_trb]_”h]”hŒ2”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”Œid7”ah ]”h"]”h$]”h&]”j²Kj³Œlink-trb”jµj¶uh1j¡hjTj·KubhŒz pointing back to the first. This limit is arbitrary but it has the benefit of adding up to exactly 4096 bytes, or 1 Page.”…”�”}”(hjTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KghjCh²hubhì)�”}”(hŒÿDWC3 driver will try its best to cope with more than 255 requests and, for the most part, it should work normally. However this is not something that has been exercised very frequently. If you experience any problems, see section **Reporting Bugs** below.”h]”(hŒæDWC3 driver will try its best to cope with more than 255 requests and, for the most part, it should work normally. However this is not something that has been exercised very frequently. If you experience any problems, see section ”…”�”}”(hj‰h²hh³Nh´Nubj®)�”}”(hŒ**Reporting Bugs**”h]”hŒReporting Bugs”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj‰ubhŒ below.”…”�”}”(hj‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KlhjCh²hubeh}”(h]”Œtrb-ring-size-limitation”ah ]”h"]”Œtrb ring size limitation”ah$]”h&]”uh1hµhjJh²hh³hÊh´Keubeh}”(h]”Œknown-limitations”ah ]”h"]”Œknown limitations”ah$]”h&]”uh1hµhh·h²hh³hÊh´KLubh¶)�”}”(hhh]”(h»)�”}”(hŒReporting Bugs”h]”hŒReporting Bugs”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¹h²hh³hÊh´Krubhì)�”}”(hŒYWhenever you encounter a problem with DWC3, first and foremost you should make sure that:”h]”hŒYWhenever you encounter a problem with DWC3, first and foremost you should make sure that:”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kthj¹h²hubj—)�”}”(hŒ¹1. You're running latest tag from `Linus' tree`_ 2. You can reproduce the error without any out-of-tree changes to DWC3 3. You have checked that it's not a fault on the host machine ”h]”j�)�”}”(hhh]”(j¢)�”}”(hŒ-You're running latest tag from `Linus' tree`_”h]”hì)�”}”(hjáh]”(hŒ!You’re running latest tag from ”…”�”}”(hjãh²hh³Nh´Nubhõ)�”}”(hŒ`Linus' tree`_”h]”hŒ Linus’ tree”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ Linus' tree”Œrefuri”ŒChttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/”uh1hôhjãj·Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kwhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjÜubj¢)�”}”(hŒCYou can reproduce the error without any out-of-tree changes to DWC3”h]”hì)�”}”(hŒCYou can reproduce the error without any out-of-tree changes to DWC3”h]”hŒCYou can reproduce the error without any out-of-tree changes to DWC3”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j¡hjÜubj¢)�”}”(hŒ;You have checked that it's not a fault on the host machine ”h]”hì)�”}”(hŒ:You have checked that it's not a fault on the host machine”h]”hŒ /t/buffer_size_kb # echo 1 > /t/events/dwc3/enable”h]”hŒ“# mkdir -p /d # mkdir -p /t # mount -t debugfs none /d # mount -t tracefs none /t # echo 81920 > /t/buffer_size_kb # echo 1 > /t/events/dwc3/enable”…”�”}”hj¦sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”Œforce”‰Œlanguage”Œsh”Œhighlight_args”}”uh1j¤h³hÊh´K‰hjRh²hubhì)�”}”(hŒªAfter this is done, you can connect your USB cable and reproduce the problem. As soon as the fault is reproduced, make a copy of files ``trace`` and ``regdump``, like so:”h]”(hŒ‡After this is done, you can connect your USB cable and reproduce the problem. As soon as the fault is reproduced, make a copy of files ”…”�”}”(hj»h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ ``trace``”h]”hŒtrace”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj»ubhŒ and ”…”�”}”(hj»h²hh³Nh´NubjÄ)�”}”(hŒ ``regdump``”h]”hŒregdump”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj»ubhŒ , like so:”…”�”}”(hj»h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K’hjRh²hubj¥)�”}”(hŒI# cp /t/trace /root/trace.txt # cat /d/*dwc3*/regdump > /root/regdump.txt”h]”hŒI# cp /t/trace /root/trace.txt # cat /d/*dwc3*/regdump > /root/regdump.txt”…”�”}”hjïsbah}”(h]”h ]”h"]”h$]”h&]”j´jµj¶‰j·Œsh”j¹}”uh1j¤h³hÊh´K–hjRh²hubhì)�”}”(hŒÕMake sure to compress ``trace.txt`` and ``regdump.txt`` in a tarball and email it to `me`_ with `linux-usb`_ in Cc. If you want to be extra sure that I'll help you, write your subject line in the following format:”h]”(hŒMake sure to compress ”…”�”}”(hjÿh²hh³Nh´NubjÄ)�”}”(hŒ ``trace.txt``”h]”hŒ trace.txt”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÿubhŒ and ”…”�”}”(hjÿh²hh³Nh´NubjÄ)�”}”(hŒ``regdump.txt``”h]”hŒ regdump.txt”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÿubhŒ in a tarball and email it to ”…”�”}”(hjÿh²hh³Nh´Nubhõ)�”}”(hŒ`me`_”h]”hŒme”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œme”júŒ#mailto:felipe.balbi@linux.intel.com”uh1hôhjÿj·KubhŒ with ”…”�”}”(hjÿh²hh³Nh´Nubhõ)�”}”(hŒ `linux-usb`_”h]”hŒ linux-usb”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ linux-usb”júŒ mailto:linux-usb@vger.kernel.org”uh1hôhjÿj·KubhŒk in Cc. If you want to be extra sure that I’ll help you, write your subject line in the following format:”…”�”}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K›hjRh²hubj—)�”}”(hŒ0**[BUG REPORT] usb: dwc3: Bug while doing XYZ** ”h]”hì)�”}”(hŒ/**[BUG REPORT] usb: dwc3: Bug while doing XYZ**”h]”j®)�”}”(hjah]”hŒ+[BUG REPORT] usb: dwc3: Bug while doing XYZ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j–h³hÊh´K hjRh²hubhì)�”}”(hŒËOn the email body, make sure to detail what you doing, which gadget driver you were using, how to reproduce the problem, what SoC you're using, which OS (and its version) was running on the Host machine.”h]”hŒÍOn the email body, make sure to detail what you doing, which gadget driver you were using, how to reproduce the problem, what SoC you’re using, which OS (and its version) was running on the Host machine.”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¢hjRh²hubhì)�”}”(hŒaWith all this information, we should be able to understand what's going on and be helpful to you.”h]”hŒcWith all this information, we should be able to understand what’s going on and be helpful to you.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¦hjRh²hubeh}”(h]”Œrequired-information”ah ]”h"]”Œrequired information”ah$]”h&]”uh1hµhj¹h²hh³hÊh´K€ubeh}”(h]”Œreporting-bugs”ah ]”h"]”Œreporting bugs”ah$]”h&]”uh1hµhh·h²hh³hÊh´Krubh¶)�”}”(hhh]”(h»)�”}”(hŒ Debugging”h]”hŒ Debugging”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj¨h²hh³hÊh´Kªubhì)�”}”(hŒ!First and foremost a disclaimer::”h]”hŒ First and foremost a disclaimer:”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¬hj¨h²hubj¥)�”}”(hŒÒDISCLAIMER: The information available on DebugFS and/or TraceFS can change at any time at any Major Linux Kernel Release. If writing scripts, do **NOT** assume information to be available in the current format.”h]”hŒÒDISCLAIMER: The information available on DebugFS and/or TraceFS can change at any time at any Major Linux Kernel Release. If writing scripts, do **NOT** assume information to be available in the current format.”…”�”}”hjÇsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´K®hj¨h²hubhì)�”}”(hŒ)With that out of the way, let's carry on.”h]”hŒ+With that out of the way, let’s carry on.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K³hj¨h²hubhì)�”}”(hŒPIf you're willing to debug your own problem, you deserve a round of applause :-)”h]”hŒRIf you’re willing to debug your own problem, you deserve a round of applause :-)”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kµhj¨h²hubhì)�”}”(hŒÁAnyway, there isn't much to say here other than Trace Events will be really helpful in figuring out issues with DWC3. Also, access to Synopsys Databook will be **really** valuable in this case.”h]”(hŒ¢Anyway, there isn’t much to say here other than Trace Events will be really helpful in figuring out issues with DWC3. Also, access to Synopsys Databook will be ”…”�”}”(hjñh²hh³Nh´Nubj®)�”}”(hŒ **really**”h]”hŒreally”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjñubhŒ valuable in this case.”…”�”}”(hjñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¸hj¨h²hubhì)�”}”(hŒ‡A USB Sniffer can be helpful at times but it's not entirely required, there's a lot that can be understood without looking at the wire.”h]”hŒ‹A USB Sniffer can be helpful at times but it’s not entirely required, there’s a lot that can be understood without looking at the wire.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¼hj¨h²hubhì)�”}”(hŒBFeel free to email `me`_ and Cc `linux-usb`_ if you need any help.”h]”(hŒFeel free to email ”…”�”}”(hj h²hh³Nh´Nubhõ)�”}”(hŒ`me`_”h]”hŒme”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œme”júj;uh1hôhj j·KubhŒ and Cc ”…”�”}”(hj h²hh³Nh´Nubhõ)�”}”(hŒ `linux-usb`_”h]”hŒ linux-usb”…”�”}”(hj; h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œ linux-usb”jújPuh1hôhj j·KubhŒ if you need any help.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K¿hj¨h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ ``DebugFS``”h]”jÄ)�”}”(hjZ h]”hŒDebugFS”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjU h²hh³hÊh´KÂubhì)�”}”(hŒb``DebugFS`` is very good for gathering snapshots of what's going on with DWC3 and/or any endpoint.”h]”(jÄ)�”}”(hŒ ``DebugFS``”h]”hŒDebugFS”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjo ubhŒY is very good for gathering snapshots of what’s going on with DWC3 and/or any endpoint.”…”�”}”(hjo h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÄhjU h²hubhì)�”}”(hŒSOn DWC3's ``DebugFS`` directory, you will find the following files and directories:”h]”(hŒ On DWC3’s ”…”�”}”(hj‹ h²hh³Nh´NubjÄ)�”}”(hŒ ``DebugFS``”h]”hŒDebugFS”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‹ ubhŒ> directory, you will find the following files and directories:”…”�”}”(hj‹ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÇhjU h²hubhì)�”}”(hŒ>``ep[0..15]{in,out}/`` ``link_state`` ``regdump`` ``testmode``”h]”(jÄ)�”}”(hŒ``ep[0..15]{in,out}/``”h]”hŒep[0..15]{in,out}/”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj« ubhŒ ”…”�”}”(hj« h²hh³Nh´NubjÄ)�”}”(hŒ``link_state``”h]”hŒ link_state”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj« ubhŒ ”…”�”}”hj« sbjÄ)�”}”(hŒ ``regdump``”h]”hŒregdump”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj« ubhŒ ”…”�”}”hj« sbjÄ)�”}”(hŒ ``testmode``”h]”hŒtestmode”…”�”}”(hjå h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj« ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÊhjU h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ``link_state``”h]”jÄ)�”}”(hjþ h]”hŒ link_state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjù h²hh³hÊh´KÐubhì)�”}”(hŒùWhen read, ``link_state`` will print out one of ``U0``, ``U1``, ``U2``, ``U3``, ``SS.Disabled``, ``RX.Detect``, ``SS.Inactive``, ``Polling``, ``Recovery``, ``Hot Reset``, ``Compliance``, ``Loopback``, ``Reset``, ``Resume`` or ``UNKNOWN link state``.”h]”(hŒ When read, ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ``link_state``”h]”hŒ link_state”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ will print out one of ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ``U0``”h]”hŒU0”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ``U1``”h]”hŒU1”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ``U2``”h]”hŒU2”…”�”}”(hjQ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ``U3``”h]”hŒU3”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ``SS.Disabled``”h]”hŒ SS.Disabled”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``RX.Detect``”h]”hŒ RX.Detect”…”�”}”(hj‡ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ``SS.Inactive``”h]”hŒ SS.Inactive”…”�”}”(hj™ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Polling``”h]”hŒPolling”…”�”}”(hj« h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Recovery``”h]”hŒRecovery”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Hot Reset``”h]”hŒ Hot Reset”…”�”}”(hjÏ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ``Compliance``”h]”hŒ Compliance”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Loopback``”h]”hŒLoopback”…”�”}”(hjó h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Reset``”h]”hŒReset”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ, ”…”�”}”hj sbjÄ)�”}”(hŒ ``Resume``”h]”hŒResume”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ or ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ``UNKNOWN link state``”h]”hŒUNKNOWN link state”…”�”}”(hj) h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÒhjù h²hubhì)�”}”(hŒSThis file can also be written to in order to force link to one of the states above.”h]”hŒSThis file can also be written to in order to force link to one of the states above.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´K×hjù h²hubeh}”(h]”Œ link-state”ah ]”h"]”Œ link_state”ah$]”h&]”uh1hµhjU h²hh³hÊh´KÐubh¶)�”}”(hhh]”(h»)�”}”(hŒ ``regdump``”h]”jÄ)�”}”(hj\ h]”hŒregdump”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjW h²hh³hÊh´KÛubhì)�”}”(hŒ¢File name is self-explanatory. When read, ``regdump`` will print out a register dump of DWC3. Note that this file can be grepped to find the information you want.”h]”(hŒ*File name is self-explanatory. When read, ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ ``regdump``”h]”hŒregdump”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒm will print out a register dump of DWC3. Note that this file can be grepped to find the information you want.”…”�”}”(hjq h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KÝhjW h²hubeh}”(h]”Œregdump”ah ]”h"]”Œregdump”ah$]”h&]”uh1hµhjU h²hh³hÊh´KÛubh¶)�”}”(hhh]”(h»)�”}”(hŒ ``testmode``”h]”jÄ)�”}”(hjž h]”hŒtestmode”…”�”}”(hj  h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjœ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj™ h²hh³hÊh´Kâubhì)�”}”(hŒóWhen read, ``testmode`` will print out a name of one of the specified USB 2.0 Testmodes (``test_j``, ``test_k``, ``test_se0_nak``, ``test_packet``, ``test_force_enable``) or the string ``no test`` in case no tests are currently being executed.”h]”(hŒ When read, ”…”�”}”(hj³ h²hh³Nh´NubjÄ)�”}”(hŒ ``testmode``”h]”hŒtestmode”…”�”}”(hj» h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒB will print out a name of one of the specified USB 2.0 Testmodes (”…”�”}”(hj³ h²hh³Nh´NubjÄ)�”}”(hŒ ``test_j``”h]”hŒtest_j”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ, ”…”�”}”(hj³ h²hh³Nh´NubjÄ)�”}”(hŒ ``test_k``”h]”hŒtest_k”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ, ”…”�”}”hj³ sbjÄ)�”}”(hŒ``test_se0_nak``”h]”hŒ test_se0_nak”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ, ”…”�”}”(hj³ h²hh³Nh´NubjÄ)�”}”(hŒ``test_packet``”h]”hŒ test_packet”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ, ”…”�”}”hj³ sbjÄ)�”}”(hŒ``test_force_enable``”h]”hŒtest_force_enable”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ) or the string ”…”�”}”(hj³ h²hh³Nh´NubjÄ)�”}”(hŒ ``no test``”h]”hŒno test”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ ubhŒ/ in case no tests are currently being executed.”…”�”}”(hj³ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kähj™ h²hubhì)�”}”(hŒƒIn order to start any of these test modes, the same strings can be written to the file and DWC3 will enter the requested test mode.”h]”hŒƒIn order to start any of these test modes, the same strings can be written to the file and DWC3 will enter the requested test mode.”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Kéhj™ h²hubeh}”(h]”Œtestmode”ah ]”h"]”Œtestmode”ah$]”h&]”uh1hµhjU h²hh³hÊh´Kâubh¶)�”}”(hhh]”(h»)�”}”(hŒ``ep[0..15]{in,out}``”h]”jÄ)�”}”(hjZ h]”hŒep[0..15]{in,out}”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjX ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjU h²hh³hÊh´Kîubhì)�”}”(hŒ»For each endpoint we expose one directory following the naming convention ``ep$num$dir`` *(ep0in, ep0out, ep1in, ...)*. Inside each of these directories you will find the following files:”h]”(hŒJFor each endpoint we expose one directory following the naming convention ”…”�”}”(hjo h²hh³Nh´NubjÄ)�”}”(hŒ``ep$num$dir``”h]”hŒ ep$num$dir”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjo ubhŒ ”…”�”}”(hjo h²hh³Nh´Nubjk)�”}”(hŒ*(ep0in, ep0out, ep1in, ...)*”h]”hŒ(ep0in, ep0out, ep1in, ...)”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jjhjo ubhŒE. Inside each of these directories you will find the following files:”…”�”}”(hjo h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KðhjU h²hubhì)�”}”(hŒ©``descriptor_fetch_queue`` ``event_queue`` ``rx_fifo_queue`` ``rx_info_queue`` ``rx_request_queue`` ``transfer_type`` ``trb_ring`` ``tx_fifo_queue`` ``tx_request_queue``”h]”(jÄ)�”}”(hŒ``descriptor_fetch_queue``”h]”hŒdescriptor_fetch_queue”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”(hj¡ h²hh³Nh´NubjÄ)�”}”(hŒ``event_queue``”h]”hŒ event_queue”…”�”}”(hj· h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``rx_fifo_queue``”h]”hŒ rx_fifo_queue”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``rx_info_queue``”h]”hŒ rx_info_queue”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``rx_request_queue``”h]”hŒrx_request_queue”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``transfer_type``”h]”hŒ transfer_type”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ ``trb_ring``”h]”hŒtrb_ring”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``tx_fifo_queue``”h]”hŒ tx_fifo_queue”…”�”}”(hj# h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubhŒ ”…”�”}”hj¡ sbjÄ)�”}”(hŒ``tx_request_queue``”h]”hŒtx_request_queue”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KôhjU h²hubhì)�”}”(hŒIWith access to Synopsys Databook, you can decode the information on them.”h]”hŒIWith access to Synopsys Databook, you can decode the information on them.”…”�”}”(hjI h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´KþhjU h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒ``transfer_type``”h]”jÄ)�”}”(hj\ h]”hŒ transfer_type”…”�”}”(hj^ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjZ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjW h²hh³hÊh´Mubhì)�”}”(hŒÙWhen read, ``transfer_type`` will print out one of ``control``, ``bulk``, ``interrupt`` or ``isochronous`` depending on what the endpoint descriptor says. If the endpoint hasn't been enabled yet, it will print ``--``.”h]”(hŒ When read, ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ``transfer_type``”h]”hŒ transfer_type”…”�”}”(hjy h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒ will print out one of ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ ``control``”h]”hŒcontrol”…”�”}”(hj‹ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒ, ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ``bulk``”h]”hŒbulk”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒ, ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ ``interrupt``”h]”hŒ interrupt”…”�”}”(hj¯ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒ or ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ``isochronous``”h]”hŒ isochronous”…”�”}”(hjÁ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒj depending on what the endpoint descriptor says. If the endpoint hasn’t been enabled yet, it will print ”…”�”}”(hjq h²hh³Nh´NubjÄ)�”}”(hŒ``--``”h]”hŒ--”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq ubhŒ.”…”�”}”(hjq h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjW h²hubeh}”(h]”Œ transfer-type”ah ]”h"]”Œ transfer_type”ah$]”h&]”uh1hµhjU h²hh³hÊh´Mubh¶)�”}”(hhh]”(h»)�”}”(hŒ ``trb_ring``”h]”jÄ)�”}”(hjø h]”hŒtrb_ring”…”�”}”(hjú h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjö ubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjó h²hh³hÊh´M ubhì)�”}”(hŒ When read, ``trb_ring`` will print out details about all TRBs on the ring. It will also tell you where our enqueue and dequeue pointers are located in the ring:”h]”(hŒ When read, ”…”�”}”(hj h²hh³Nh´NubjÄ)�”}”(hŒ ``trb_ring``”h]”hŒtrb_ring”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubhŒ‰ will print out details about all TRBs on the ring. It will also tell you where our enqueue and dequeue pointers are located in the ring:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M hjó h²hubj¥)�”}”(hXš'buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo 000000002c754000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c75c000,512,normal,1,0,1,0,0,1 D 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 E 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 00000000381ab000,0,link,0,0,0,0,0,1”h]”hXš'buffer_addr,size,type,ioc,isp_imi,csp,chn,lst,hwo 000000002c754000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c75c000,481,normal,1,0,1,0,0,0 000000002c780000,481,normal,1,0,1,0,0,0 000000002c784000,481,normal,1,0,1,0,0,0 000000002c788000,481,normal,1,0,1,0,0,0 000000002c78c000,481,normal,1,0,1,0,0,0 000000002c790000,481,normal,1,0,1,0,0,0 000000002c754000,481,normal,1,0,1,0,0,0 000000002c758000,481,normal,1,0,1,0,0,0 000000002c75c000,512,normal,1,0,1,0,0,1 D 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 E 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 0000000000000000,0,UNKNOWN,0,0,0,0,0,0 00000000381ab000,0,link,0,0,0,0,0,1”…”�”}”hj-sbah}”(h]”h ]”h"]”h$]”h&]”j´jµj¶‰j·Œsh”j¹}”uh1j¤h³hÊh´Mhjó h²hubeh}”(h]”Œtrb-ring”ah ]”h"]”Œtrb_ring”ah$]”h&]”uh1hµhjU h²hh³hÊh´M ubeh}”(h]”Œep-0-15-in-out”ah ]”h"]”Œep[0..15]{in,out}”ah$]”h&]”uh1hµhjU h²hh³hÊh´Kîubeh}”(h]”Œdebugfs”ah ]”h"]”h$]”Œdebugfs”ah&]”uh1hµhj¨h²hh³hÊh´KÂŒ referenced”Kubh¶)�”}”(hhh]”(h»)�”}”(hŒ Trace Events”h]”hŒ Trace Events”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjVh²hh³hÊh´Mubhì)�”}”(hŒ|DWC3 also provides several trace events which help us gathering information about the behavior of the driver during runtime.”•h]”hŒ|DWC3 also provides several trace events which help us gathering information about the behavior of the driver during runtime.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjVh²hubhì)�”}”(hŒVIn order to use these events, you must enable ``CONFIG_FTRACE`` in your kernel config.”h]”(hŒ.In order to use these events, you must enable ”…”�”}”(hjuh²hh³Nh´NubjÄ)�”}”(hŒ``CONFIG_FTRACE``”h]”hŒ CONFIG_FTRACE”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjuubhŒ in your kernel config.”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjVh²hubhì)�”}”(hŒIFor details about how enable DWC3 events, see section **Reporting Bugs**.”h]”(hŒ6For details about how enable DWC3 events, see section ”…”�”}”(hj•h²hh³Nh´Nubj®)�”}”(hŒ**Reporting Bugs**”h]”hŒReporting Bugs”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj•ubhŒ.”…”�”}”(hj•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MhjVh²hubhì)�”}”(hŒbThe following subsections will give details about each Event Class and each Event defined by DWC3.”h]”hŒbThe following subsections will give details about each Event Class and each Event defined by DWC3.”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M!hjVh²hubh¶)�”}”(hhh]”(h»)�”}”(hŒMMIO”h]”hŒMMIO”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÃh²hh³hÊh´M%ubhì)�”}”(hŒÂIt is sometimes useful to look at every MMIO access when looking for bugs. Because of that, DWC3 offers two Trace Events (one for dwc3_readl() and one for dwc3_writel()). ``TP_printk`` follows::”h]”(hŒ«It is sometimes useful to look at every MMIO access when looking for bugs. Because of that, DWC3 offers two Trace Events (one for dwc3_readl() and one for dwc3_writel()). ”…”�”}”(hjÔh²hh³Nh´NubjÄ)�”}”(hŒ ``TP_printk``”h]”hŒ TP_printk”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÔubhŒ follows:”…”�”}”(hjÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M'hjÃh²hubj¥)�”}”(hŒ^TP_printk("addr %p value %08x", __entry->base + __entry->offset, __entry->value)”h]”hŒ^TP_printk("addr %p value %08x", __entry->base + __entry->offset, __entry->value)”…”�”}”hjôsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´M+hjÃh²hubeh}”(h]”Œmmio”ah ]”h"]”Œmmio”ah$]”h&]”uh1hµhjVh²hh³hÊh´M%ubh¶)�”}”(hhh]”(h»)�”}”(hŒInterrupt Events”h]”hŒInterrupt Events”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj h²hh³hÊh´M/ubhì)�”}”(hŒ²Every IRQ event can be logged and decoded into a human readable string. Because every event will be different, we don't give an example other than the ``TP_printk`` format used::”h]”(hŒ™Every IRQ event can be logged and decoded into a human readable string. Because every event will be different, we don’t give an example other than the ”…”�”}”(hjh²hh³Nh´NubjÄ)�”}”(hŒ ``TP_printk``”h]”hŒ TP_printk”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjubhŒ format used:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M1hj h²hubj¥)�”}”(hŒqTP_printk("event (%08x): %s", __entry->event, dwc3_decode_event(__entry->event, __entry->ep0state))”h]”hŒqTP_printk("event (%08x): %s", __entry->event, dwc3_decode_event(__entry->event, __entry->ep0state))”…”�”}”hj;sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´M5hj h²hubeh}”(h]”Œinterrupt-events”ah ]”h"]”Œinterrupt events”ah$]”h&]”uh1hµhjVh²hh³hÊh´M/ubh¶)�”}”(hhh]”(h»)�”}”(hŒControl Request”h]”hŒControl Request”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjQh²hh³hÊh´M9ubhì)�”}”(hŒSEvery USB Control Request can be logged to the trace buffer. The output format is::”h]”hŒREvery USB Control Request can be logged to the trace buffer. The output format is:”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M;hjQh²hubj¥)�”}”(hŒ¼TP_printk("%s", dwc3_decode_ctrl(__entry->bRequestType, __entry->bRequest, __entry->wValue, __entry->wIndex, __entry->wLength) )”h]”hŒ¼TP_printk("%s", dwc3_decode_ctrl(__entry->bRequestType, __entry->bRequest, __entry->wValue, __entry->wIndex, __entry->wLength) )”…”�”}”hjpsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´M>hjQh²hubhì)�”}”(hŒÃNote that Standard Control Requests will be decoded into human-readable strings with their respective arguments. Class and Vendor requests will be printed out a sequence of 8 bytes in hex format.”h]”hŒÃNote that Standard Control Requests will be decoded into human-readable strings with their respective arguments. Class and Vendor requests will be printed out a sequence of 8 bytes in hex format.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MChjQh²hubeh}”(h]”Œcontrol-request”ah ]”h"]”Œcontrol request”ah$]”h&]”uh1hµhjVh²hh³hÊh´M9ubh¶)�”}”(hhh]”(h»)�”}”(hŒ$Lifetime of a ``struct usb_request``”h]”(hŒLifetime of a ”…”�”}”(hj—h²hh³Nh´NubjÄ)�”}”(hŒ``struct usb_request``”h]”hŒstruct usb_request”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hºhj”h²hh³hÊh´MIubhì)�”}”(hŒºThe entire lifetime of a ``struct usb_request`` can be tracked on the trace buffer. We have one event for each of allocation, free, queueing, dequeueing, and giveback. Output format is::”h]”(hŒThe entire lifetime of a ”…”�”}”(hj³h²hh³Nh´NubjÄ)�”}”(hŒ``struct usb_request``”h]”hŒstruct usb_request”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³ubhŒŠ can be tracked on the trace buffer. We have one event for each of allocation, free, queueing, dequeueing, and giveback. Output format is:”…”�”}”(hj³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MKhj”h²hubj¥)�”}”(hXTP_printk("%s: req %p length %u/%u %s%s%s ==> %d", __get_str(name), __entry->req, __entry->actual, __entry->length, __entry->zero ? "Z" : "z", __entry->short_not_ok ? "S" : "s", __entry->no_interrupt ? "i" : "I", __entry->status )”h]”hXTP_printk("%s: req %p length %u/%u %s%s%s ==> %d", __get_str(name), __entry->req, __entry->actual, __entry->length, __entry->zero ? "Z" : "z", __entry->short_not_ok ? "S" : "s", __entry->no_interrupt ? "i" : "I", __entry->status )”…”�”}”hjÓsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´MOhj”h²hubeh}”(h]”Œ lifetime-of-a-struct-usb-request”ah ]”h"]”Œ lifetime of a struct usb_request”ah$]”h&]”uh1hµhjVh²hh³hÊh´MIubh¶)�”}”(hhh]”(h»)�”}”(hŒGeneric Commands”h]”hŒGeneric Commands”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjéh²hh³hÊh´MXubhì)�”}”(hŒQWe can log and decode every Generic Command with its completion code. Format is::”h]”hŒPWe can log and decode every Generic Command with its completion code. Format is:”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MZhjéh²hubj¥)�”}”(hŒËTP_printk("cmd '%s' [%x] param %08x --> status: %s", dwc3_gadget_generic_cmd_string(__entry->cmd), __entry->cmd, __entry->param, dwc3_gadget_generic_cmd_status_string(__entry->status) )”h]”hŒËTP_printk("cmd '%s' [%x] param %08x --> status: %s", dwc3_gadget_generic_cmd_string(__entry->cmd), __entry->cmd, __entry->param, dwc3_gadget_generic_cmd_status_string(__entry->status) )”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´M]hjéh²hubeh}”(h]”Œgeneric-commands”ah ]”h"]”Œgeneric commands”ah$]”h&]”uh1hµhjVh²hh³hÊh´MXubh¶)�”}”(hhh]”(h»)�”}”(hŒEndpoint Commands”h]”hŒEndpoint Commands”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´Mdubhì)�”}”(hŒPEndpoints commands can also be logged together with completion code. Format is::”h]”hŒOEndpoints commands can also be logged together with completion code. Format is:”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´Mfhjh²hubj¥)�”}”(hXTP_printk("%s: cmd '%s' [%d] params %08x %08x %08x --> status: %s", __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd), __entry->cmd, __entry->param0, __entry->param1, __entry->param2, dwc3_ep_cmd_status_string(__entry->cmd_status) )”h]”hXTP_printk("%s: cmd '%s' [%d] params %08x %08x %08x --> status: %s", __get_str(name), dwc3_gadget_ep_cmd_string(__entry->cmd), __entry->cmd, __entry->param0, __entry->param1, __entry->param2, dwc3_ep_cmd_status_string(__entry->cmd_status) )”…”�”}”hj=sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´Mihjh²hubeh}”(h]”Œendpoint-commands”ah ]”h"]”Œendpoint commands”ah$]”h&]”uh1hµhjVh²hh³hÊh´Mdubh¶)�”}”(hhh]”(h»)�”}”(hŒLifetime of a ``TRB``”h]”(hŒLifetime of a ”…”�”}”(hjVh²hh³Nh´NubjÄ)�”}”(hŒ``TRB``”h]”hŒTRB”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjVubeh}”(h]”h ]”h"]”h$]”h&]”uh1hºhjSh²hh³hÊh´Mqubhì)�”}”(hŒ A ``TRB`` Lifetime is simple. We are either preparing a ``TRB`` or completing it. With these two events, we can see how a ``TRB`` changes over time. Format is::”h]”(hŒA ”…”�”}”(hjrh²hh³Nh´NubjÄ)�”}”(hŒ``TRB``”h]”hŒTRB”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjrubhŒ/ Lifetime is simple. We are either preparing a ”…”�”}”(hjrh²hh³Nh´NubjÄ)�”}”(hŒ``TRB``”h]”hŒTRB”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjrubhŒ; or completing it. With these two events, we can see how a ”…”�”}”(hjrh²hh³Nh´NubjÄ)�”}”(hŒ``TRB``”h]”hŒTRB”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjrubhŒ changes over time. Format is:”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MshjSh²hubj¥)�”}”(hXxTP_printk("%s: %d/%d trb %p buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)", __get_str(name), __entry->queued, __entry->allocated, __entry->trb, __entry->bph, __entry->bpl, ({char *s; int pcm = ((__entry->size >> 24) & 3) + 1; switch (__entry->type) { case USB_ENDPOINT_XFER_INT: case USB_ENDPOINT_XFER_ISOC: switch (pcm) { case 1: s = "1x "; break; case 2: s = "2x "; break; case 3: s = "3x "; break; } default: s = ""; } s; }), DWC3_TRB_SIZE_LENGTH(__entry->size), __entry->ctrl, __entry->ctrl & DWC3_TRB_CTRL_HWO ? 'H' : 'h', __entry->ctrl & DWC3_TRB_CTRL_LST ? 'L' : 'l', __entry->ctrl & DWC3_TRB_CTRL_CHN ? 'C' : 'c', __entry->ctrl & DWC3_TRB_CTRL_CSP ? 'S' : 's', __entry->ctrl & DWC3_TRB_CTRL_ISP_IMI ? 'S' : 's', __entry->ctrl & DWC3_TRB_CTRL_IOC ? 'C' : 'c', dwc3_trb_type_string(DWC3_TRBCTL_TYPE(__entry->ctrl)) )”h]”hXxTP_printk("%s: %d/%d trb %p buf %08x%08x size %s%d ctrl %08x (%c%c%c%c:%c%c:%s)", __get_str(name), __entry->queued, __entry->allocated, __entry->trb, __entry->bph, __entry->bpl, ({char *s; int pcm = ((__entry->size >> 24) & 3) + 1; switch (__entry->type) { case USB_ENDPOINT_XFER_INT: case USB_ENDPOINT_XFER_ISOC: switch (pcm) { case 1: s = "1x "; break; case 2: s = "2x "; break; case 3: s = "3x "; break; } default: s = ""; } s; }), DWC3_TRB_SIZE_LENGTH(__entry->size), __entry->ctrl, __entry->ctrl & DWC3_TRB_CTRL_HWO ? 'H' : 'h', __entry->ctrl & DWC3_TRB_CTRL_LST ? 'L' : 'l', __entry->ctrl & DWC3_TRB_CTRL_CHN ? 'C' : 'c', __entry->ctrl & DWC3_TRB_CTRL_CSP ? 'S' : 's', __entry->ctrl & DWC3_TRB_CTRL_ISP_IMI ? 'S' : 's', __entry->ctrl & DWC3_TRB_CTRL_IOC ? 'C' : 'c', dwc3_trb_type_string(DWC3_TRBCTL_TYPE(__entry->ctrl)) )”…”�”}”hj¶sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´MwhjSh²hubeh}”(h]”Œlifetime-of-a-trb”ah ]”h"]”Œlifetime of a trb”ah$]”h&]”uh1hµhjVh²hh³hÊh´Mqubh¶)�”}”(hhh]”(h»)�”}”(hŒLifetime of an Endpoint”h]”hŒLifetime of an Endpoint”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjÌh²hh³hÊh´M˜ubhì)�”}”(hŒrAnd endpoint's lifetime is summarized with enable and disable operations, both of which can be traced. Format is::”h]”hŒsAnd endpoint’s lifetime is summarized with enable and disable operations, both of which can be traced. Format is:”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MšhjÌh²hubj¥)�”}”(hXxTP_printk("%s: mps %d/%d streams %d burst %d ring %d/%d flags %c:%c%c%c%c%c:%c:%c", __get_str(name), __entry->maxpacket, __entry->maxpacket_limit, __entry->max_streams, __entry->maxburst, __entry->trb_enqueue, __entry->trb_dequeue, __entry->flags & DWC3_EP_ENABLED ? 'E' : 'e', __entry->flags & DWC3_EP_STALL ? 'S' : 's', __entry->flags & DWC3_EP_WEDGE ? 'W' : 'w', __entry->flags & DWC3_EP_TRANSFER_STARTED ? 'B' : 'b', __entry->flags & DWC3_EP_PENDING_REQUEST ? 'P' : 'p', __entry->flags & DWC3_EP_END_TRANSFER_PENDING ? 'E' : 'e', __entry->direction ? '<' : '>' )”h]”hXxTP_printk("%s: mps %d/%d streams %d burst %d ring %d/%d flags %c:%c%c%c%c%c:%c:%c", __get_str(name), __entry->maxpacket, __entry->maxpacket_limit, __entry->max_streams, __entry->maxburst, __entry->trb_enqueue, __entry->trb_dequeue, __entry->flags & DWC3_EP_ENABLED ? 'E' : 'e', __entry->flags & DWC3_EP_STALL ? 'S' : 's', __entry->flags & DWC3_EP_WEDGE ? 'W' : 'w', __entry->flags & DWC3_EP_TRANSFER_STARTED ? 'B' : 'b', __entry->flags & DWC3_EP_PENDING_REQUEST ? 'P' : 'p', __entry->flags & DWC3_EP_END_TRANSFER_PENDING ? 'E' : 'e', __entry->direction ? '<' : '>' )”…”�”}”hjësbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³hÊh´M�hjÌh²hubeh}”(h]”Œlifetime-of-an-endpoint”ah ]”h"]”Œlifetime of an endpoint”ah$]”h&]”uh1hµhjVh²hh³hÊh´M˜ubeh}”(h]”Œ trace-events”ah ]”h"]”Œ trace events”ah$]”h&]”uh1hµhj¨h²hh³hÊh´Mubeh}”(h]”Œ debugging”ah ]”h"]”Œ debugging”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kªubh¶)�”}”(hhh]”(h»)�”}”(hŒ#Structures, Methods and Definitions”h]”hŒ#Structures, Methods and Definitions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´M­ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œdwc3_event_buffer (C struct)”Œc.dwc3_event_buffer”hNt”auh1j"hjh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒdwc3_event_buffer”h]”hŒdesc_signature_line”“”)�”}”(hŒstruct dwc3_event_buffer”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jDhj@h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jVhj@h²hh³jUh´KubhŒ desc_name”“”)�”}”(hŒdwc3_event_buffer”h]”hŒ desc_sig_name”“”)�”}”(hj<h]”hŒdwc3_event_buffer”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jmhjiubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”j´jµuh1jghj@h²hh³jUh´Kubeh}”(h]”h ]”h"]”h$]”h&]”j´jµŒ add_permalink”ˆuh1j>Œsphinx_line_type”Œ declarator”hj:h²hh³jUh´Kubah}”(h]”j1ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j8h³jUh´Khj5h²hubhŒ desc_content”“”)�”}”(hhh]”hì)�”}”(hŒ$Software event buffer representation”h]”hŒ$Software event buffer representation”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M®hj›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj5h²hh³jUh´Kubeh}”(h]”h ]”(Œc”Œstruct”eh"]”h$]”h&]”Œdomain”j¶Œobjtype”j·Œdesctype”j·Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1j3h²hhjh³Nh´NubhŒ container”“”)�”}”(hXŒ**Definition**:: struct dwc3_event_buffer { void *buf; void *cache; unsigned int length; unsigned int lpos; unsigned int count; unsigned int flags; #define DWC3_EVENT_PENDING BIT(0); dma_addr_t dma; struct dwc3 *dwc; }; **Members** ``buf`` _THE_ buffer ``cache`` The buffer cache used in the threaded interrupt ``length`` size of this buffer ``lpos`` event offset ``count`` cache of last read event count register ``flags`` flags related to this event buffer ``dma`` dma_addr_t ``dwc`` pointer to DWC controller”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÇubhŒ:”…”�”}”(hjÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M²hjÃubj¥)�”}”(hX'struct dwc3_event_buffer { void *buf; void *cache; unsigned int length; unsigned int lpos; unsigned int count; unsigned int flags; #define DWC3_EVENT_PENDING BIT(0); dma_addr_t dma; struct dwc3 *dwc; };”h]”hX'struct dwc3_event_buffer { void *buf; void *cache; unsigned int length; unsigned int lpos; unsigned int count; unsigned int flags; #define DWC3_EVENT_PENDING BIT(0); dma_addr_t dma; struct dwc3 *dwc; };”…”�”}”hjäsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M´hjÃubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjõh]”hŒMembers”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÀhjÃubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ``buf`` _THE_ buffer ”h]”(hŒterm”“”)�”}”(hŒ``buf``”h]”jÄ)�”}”(hjh]”hŒbuf”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M°hjubhŒ definition”“”)�”}”(hhh]”hì)�”}”(hŒ _THE_ buffer”h]”hŒ _THE_ buffer”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/h´M°hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/h´M°hj ubj)�”}”(hŒ:``cache`` The buffer cache used in the threaded interrupt ”h]”(j)�”}”(hŒ ``cache``”h]”jÄ)�”}”(hjUh]”hŒcache”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjSubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M±hjOubj1)�”}”(hhh]”hì)�”}”(hŒ/The buffer cache used in the threaded interrupt”h]”hŒ/The buffer cache used in the threaded interrupt”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jjh´M±hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jjh´M±hj ubj)�”}”(hŒ``length`` size of this buffer ”h]”(j)�”}”(hŒ ``length``”h]”jÄ)�”}”(hjŽh]”hŒlength”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M²hjˆubj1)�”}”(hhh]”hì)�”}”(hŒsize of this buffer”h]”hŒsize of this buffer”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j£h´M²hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£h´M²hj ubj)�”}”(hŒ``lpos`` event offset ”h]”(j)�”}”(hŒ``lpos``”h]”jÄ)�”}”(hjÇh]”hŒlpos”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M³hjÁubj1)�”}”(hhh]”hì)�”}”(hŒ event offset”h]”hŒ event offset”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÜh´M³hjÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÜh´M³hj ubj)�”}”(hŒ2``count`` cache of last read event count register ”h]”(j)�”}”(hŒ ``count``”h]”jÄ)�”}”(hjh]”hŒcount”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjþubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M´hjúubj1)�”}”(hhh]”hì)�”}”(hŒ'cache of last read event count register”h]”hŒ'cache of last read event count register”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´M´hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´M´hj ubj)�”}”(hŒ-``flags`` flags related to this event buffer ”h]”(j)�”}”(hŒ ``flags``”h]”jÄ)�”}”(hj9h]”hŒflags”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mµhj3ubj1)�”}”(hhh]”hì)�”}”(hŒ"flags related to this event buffer”h]”hŒ"flags related to this event buffer”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jNh´MµhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jNh´Mµhj ubj)�”}”(hŒ``dma`` dma_addr_t ”h]”(j)�”}”(hŒ``dma``”h]”jÄ)�”}”(hjrh]”hŒdma”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¶hjlubj1)�”}”(hhh]”hì)�”}”(hŒ dma_addr_t”h]”hŒ dma_addr_t”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡h´M¶hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‡h´M¶hj ubj)�”}”(hŒ!``dwc`` pointer to DWC controller”h]”(j)�”}”(hŒ``dwc``”h]”jÄ)�”}”(hj«h]”hŒdwc”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¶hj¥ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to DWC controller”h]”hŒpointer to DWC controller”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M·hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÀh´M¶hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÃubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_ep (C struct)”Œ c.dwc3_ep”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_ep”h]”j?)�”}”(hŒstruct dwc3_ep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M½ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjh²hh³jh´M½ubjh)�”}”(hŒdwc3_ep”h]”jn)�”}”(hjÿh]”hŒdwc3_ep”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj!ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjh²hh³jh´M½ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjýh²hh³jh´M½ubah}”(h]”jøah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jh´M½hjúh²hubjš)�”}”(hhh]”hì)�”}”(hŒ#device side endpoint representation”h]”hŒ#device side endpoint representation”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÐhjDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjúh²hh³jh´M½ubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j_j½j_j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXð **Definition**:: struct dwc3_ep { struct usb_ep endpoint; struct delayed_work nostream_work; struct list_head cancelled_list; struct list_head pending_list; struct list_head started_list; struct dwc3_trb *trb_pool; dma_addr_t trb_pool_dma; struct dwc3 *dwc; u32 saved_state; unsigned int flags; #define DWC3_EP_ENABLED BIT(0); #define DWC3_EP_STALL BIT(1); #define DWC3_EP_WEDGE BIT(2); #define DWC3_EP_TRANSFER_STARTED BIT(3); #define DWC3_EP_END_TRANSFER_PENDING BIT(4); #define DWC3_EP_PENDING_REQUEST BIT(5); #define DWC3_EP_DELAY_START BIT(6); #define DWC3_EP_WAIT_TRANSFER_COMPLETE BIT(7); #define DWC3_EP_IGNORE_NEXT_NOSTREAM BIT(8); #define DWC3_EP_FORCE_RESTART_STREAM BIT(9); #define DWC3_EP_STREAM_PRIMED BIT(10); #define DWC3_EP_PENDING_CLEAR_STALL BIT(11); #define DWC3_EP_TXFIFO_RESIZED BIT(12); #define DWC3_EP_DELAY_STOP BIT(13); #define DWC3_EP_RESOURCE_ALLOCATED BIT(14); #define DWC3_EP0_DIR_IN BIT(31); u8 trb_enqueue; u8 trb_dequeue; u8 number; u8 type; u8 resource_index; u32 frame_number; u32 interval; char name[20]; unsigned direction:1; unsigned stream_capable:1; u8 combo_num; int start_cmd_status; }; **Members** ``endpoint`` usb endpoint ``nostream_work`` work for handling bulk NoStream ``cancelled_list`` list of cancelled requests for this endpoint ``pending_list`` list of pending requests for this endpoint ``started_list`` list of started requests on this endpoint ``trb_pool`` array of transaction buffers ``trb_pool_dma`` dma address of **trb_pool** ``dwc`` pointer to DWC controller ``saved_state`` ep state saved during hibernation ``flags`` endpoint flags (wedged, stalled, ...) ``trb_enqueue`` enqueue 'pointer' into TRB array ``trb_dequeue`` dequeue 'pointer' into TRB array ``number`` endpoint number (1 - 15) ``type`` set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ``resource_index`` Resource transfer index ``frame_number`` set to the frame number we want this transfer to start (ISOC) ``interval`` the interval on which the ISOC transfer is started ``name`` a human readable name e.g. ep1out-bulk ``direction`` true for TX, false for RX ``stream_capable`` true when streams are enabled ``combo_num`` the test combination BIT[15:14] of the frame number to test isochronous START TRANSFER command failure workaround ``start_cmd_status`` the status of testing START TRANSFER command with combo_num = 'b00”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjgubhŒ:”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÔhjcubj¥)�”}”(hX‚struct dwc3_ep { struct usb_ep endpoint; struct delayed_work nostream_work; struct list_head cancelled_list; struct list_head pending_list; struct list_head started_list; struct dwc3_trb *trb_pool; dma_addr_t trb_pool_dma; struct dwc3 *dwc; u32 saved_state; unsigned int flags; #define DWC3_EP_ENABLED BIT(0); #define DWC3_EP_STALL BIT(1); #define DWC3_EP_WEDGE BIT(2); #define DWC3_EP_TRANSFER_STARTED BIT(3); #define DWC3_EP_END_TRANSFER_PENDING BIT(4); #define DWC3_EP_PENDING_REQUEST BIT(5); #define DWC3_EP_DELAY_START BIT(6); #define DWC3_EP_WAIT_TRANSFER_COMPLETE BIT(7); #define DWC3_EP_IGNORE_NEXT_NOSTREAM BIT(8); #define DWC3_EP_FORCE_RESTART_STREAM BIT(9); #define DWC3_EP_STREAM_PRIMED BIT(10); #define DWC3_EP_PENDING_CLEAR_STALL BIT(11); #define DWC3_EP_TXFIFO_RESIZED BIT(12); #define DWC3_EP_DELAY_STOP BIT(13); #define DWC3_EP_RESOURCE_ALLOCATED BIT(14); #define DWC3_EP0_DIR_IN BIT(31); u8 trb_enqueue; u8 trb_dequeue; u8 number; u8 type; u8 resource_index; u32 frame_number; u32 interval; char name[20]; unsigned direction:1; unsigned stream_capable:1; u8 combo_num; int start_cmd_status; };”h]”hX‚struct dwc3_ep { struct usb_ep endpoint; struct delayed_work nostream_work; struct list_head cancelled_list; struct list_head pending_list; struct list_head started_list; struct dwc3_trb *trb_pool; dma_addr_t trb_pool_dma; struct dwc3 *dwc; u32 saved_state; unsigned int flags; #define DWC3_EP_ENABLED BIT(0); #define DWC3_EP_STALL BIT(1); #define DWC3_EP_WEDGE BIT(2); #define DWC3_EP_TRANSFER_STARTED BIT(3); #define DWC3_EP_END_TRANSFER_PENDING BIT(4); #define DWC3_EP_PENDING_REQUEST BIT(5); #define DWC3_EP_DELAY_START BIT(6); #define DWC3_EP_WAIT_TRANSFER_COMPLETE BIT(7); #define DWC3_EP_IGNORE_NEXT_NOSTREAM BIT(8); #define DWC3_EP_FORCE_RESTART_STREAM BIT(9); #define DWC3_EP_STREAM_PRIMED BIT(10); #define DWC3_EP_PENDING_CLEAR_STALL BIT(11); #define DWC3_EP_TXFIFO_RESIZED BIT(12); #define DWC3_EP_DELAY_STOP BIT(13); #define DWC3_EP_RESOURCE_ALLOCATED BIT(14); #define DWC3_EP0_DIR_IN BIT(31); u8 trb_enqueue; u8 trb_dequeue; u8 number; u8 type; u8 resource_index; u32 frame_number; u32 interval; char name[20]; unsigned direction:1; unsigned stream_capable:1; u8 combo_num; int start_cmd_status; };”…”�”}”hj„sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÖhjcubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hj•h]”hŒMembers”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mÿhjcubj )�”}”(hhh]”(j)�”}”(hŒ``endpoint`` usb endpoint ”h]”(j)�”}”(hŒ ``endpoint``”h]”jÄ)�”}”(hj´h]”hŒendpoint”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÒhj®ubj1)�”}”(hhh]”hì)�”}”(hŒ usb endpoint”h]”hŒ usb endpoint”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉh´MÒhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉh´MÒhj«ubj)�”}”(hŒ2``nostream_work`` work for handling bulk NoStream ”h]”(j)�”}”(hŒ``nostream_work``”h]”jÄ)�”}”(hjíh]”hŒ nostream_work”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjëubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÓhjçubj1)�”}”(hhh]”hì)�”}”(hŒwork for handling bulk NoStream”h]”hŒwork for handling bulk NoStream”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MÓhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjçubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´MÓhj«ubj)�”}”(hŒ@``cancelled_list`` list of cancelled requests for this endpoint ”h]”(j)�”}”(hŒ``cancelled_list``”h]”jÄ)�”}”(hj&h]”hŒcancelled_list”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÔhj ubj1)�”}”(hhh]”hì)�”}”(hŒ,list of cancelled requests for this endpoint”h]”hŒ,list of cancelled requests for this endpoint”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j;h´MÔhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j;h´MÔhj«ubj)�”}”(hŒ<``pending_list`` list of pending requests for this endpoint ”h]”(j)�”}”(hŒ``pending_list``”h]”jÄ)�”}”(hj_h]”hŒ pending_list”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÕhjYubj1)�”}”(hhh]”hì)�”}”(hŒ*list of pending requests for this endpoint”h]”hŒ*list of pending requests for this endpoint”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jth´MÕhjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jth´MÕhj«ubj)�”}”(hŒ;``started_list`` list of started requests on this endpoint ”h]”(j)�”}”(hŒ``started_list``”h]”jÄ)�”}”(hj˜h]”hŒ started_list”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÖhj’ubj1)�”}”(hhh]”hì)�”}”(hŒ)list of started requests on this endpoint”h]”hŒ)list of started requests on this endpoint”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­h´MÖhj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j­h´MÖhj«ubj)�”}”(hŒ*``trb_pool`` array of transaction buffers ”h]”(j)�”}”(hŒ ``trb_pool``”h]”jÄ)�”}”(hjÑh]”hŒtrb_pool”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M×hjËubj1)�”}”(hhh]”hì)�”}”(hŒarray of transaction buffers”h]”hŒarray of transaction buffers”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jæh´M×hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjËubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jæh´M×hj«ubj)�”}”(hŒ-``trb_pool_dma`` dma address of **trb_pool** ”h]”(j)�”}”(hŒ``trb_pool_dma``”h]”jÄ)�”}”(hj h]”hŒ trb_pool_dma”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MØhjubj1)�”}”(hhh]”hì)�”}”(hŒdma address of **trb_pool**”h]”(hŒdma address of ”…”�”}”(hj#h²hh³Nh´Nubj®)�”}”(hŒ **trb_pool**”h]”hŒtrb_pool”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MØhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´MØhj«ubj)�”}”(hŒ"``dwc`` pointer to DWC controller ”h]”(j)�”}”(hŒ``dwc``”h]”jÄ)�”}”(hjQh]”hŒdwc”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÛhjKubj1)�”}”(hhh]”hì)�”}”(hŒpointer to DWC controller”h]”hŒpointer to DWC controller”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jfh´MÛhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jfh´MÛhj«ubj)�”}”(hŒ2``saved_state`` ep state saved during hibernation ”h]”(j)�”}”(hŒ``saved_state``”h]”jÄ)�”}”(hjŠh]”hŒ saved_state”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÜhj„ubj1)�”}”(hhh]”hì)�”}”(hŒ!ep state saved during hibernation”h]”hŒ!ep state saved during hibernation”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸh´MÜhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŸh´MÜhj«ubj)�”}”(hŒ0``flags`` endpoint flags (wedged, stalled, ...) ”h]”(j)�”}”(hŒ ``flags``”h]”jÄ)�”}”(hjÃh]”hŒflags”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÝhj½ubj1)�”}”(hhh]”hì)�”}”(hŒ%endpoint flags (wedged, stalled, ...)”h]”hŒ%endpoint flags (wedged, stalled, ...)”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØh´MÝhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jØh´MÝhj«ubj)�”}”(hŒ1``trb_enqueue`` enqueue 'pointer' into TRB array ”h]”(j)�”}”(hŒ``trb_enqueue``”h]”jÄ)�”}”(hjüh]”hŒ trb_enqueue”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÙhjöubj1)�”}”(hhh]”hì)�”}”(hŒ enqueue 'pointer' into TRB array”h]”hŒ$enqueue ‘pointer’ into TRB array”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´MÙhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´MÙhj«ubj)�”}”(hŒ1``trb_dequeue`` dequeue 'pointer' into TRB array ”h]”(j)�”}”(hŒ``trb_dequeue``”h]”jÄ)�”}”(hj5h]”hŒ trb_dequeue”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÚhj/ubj1)�”}”(hhh]”hì)�”}”(hŒ dequeue 'pointer' into TRB array”h]”hŒ$dequeue ‘pointer’ into TRB array”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJh´MÚhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jJh´MÚhj«ubj)�”}”(hŒ$``number`` endpoint number (1 - 15) ”h]”(j)�”}”(hŒ ``number``”h]”jÄ)�”}”(hjnh]”hŒnumber”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÞhjhubj1)�”}”(hhh]”hì)�”}”(hŒendpoint number (1 - 15)”h]”hŒendpoint number (1 - 15)”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒh´MÞhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒh´MÞhj«ubj)�”}”(hŒ:``type`` set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK ”h]”(j)�”}”(hŒ``type``”h]”jÄ)�”}”(hj§h]”hŒtype”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mßhj¡ubj1)�”}”(hhh]”hì)�”}”(hŒ0set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK”h]”hŒ0set to bmAttributes & USB_ENDPOINT_XFERTYPE_MASK”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼h´Mßhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼h´Mßhj«ubj)�”}”(hŒ+``resource_index`` Resource transfer index ”h]”(j)�”}”(hŒ``resource_index``”h]”jÄ)�”}”(hjàh]”hŒresource_index”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MàhjÚubj1)�”}”(hhh]”hì)�”}”(hŒResource transfer index”h]”hŒResource transfer index”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jõh´Màhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõh´Màhj«ubj)�”}”(hŒO``frame_number`` set to the frame number we want this transfer to start (ISOC) ”h]”(j)�”}”(hŒ``frame_number``”h]”jÄ)�”}”(hjh]”hŒ frame_number”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Máhjubj1)�”}”(hhh]”hì)�”}”(hŒ=set to the frame number we want this transfer to start (ISOC)”h]”hŒ=set to the frame number we want this transfer to start (ISOC)”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j.h´Máhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j.h´Máhj«ubj)�”}”(hŒ@``interval`` the interval on which the ISOC transfer is started ”h]”(j)�”}”(hŒ ``interval``”h]”jÄ)�”}”(hjRh]”hŒinterval”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MâhjLubj1)�”}”(hhh]”hì)�”}”(hŒ2the interval on which the ISOC transfer is started”h]”hŒ2the interval on which the ISOC transfer is started”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jgh´Mâhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jgh´Mâhj«ubj)�”}”(hŒ0``name`` a human readable name e.g. ep1out-bulk ”h]”(j)�”}”(hŒ``name``”h]”jÄ)�”}”(hj‹h]”hŒname”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mãhj…ubj1)�”}”(hhh]”hì)�”}”(hŒ&a human readable name e.g. ep1out-bulk”h]”hŒ&a human readable name e.g. ep1out-bulk”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´Mãhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´Mãhj«ubj)�”}”(hŒ(``direction`` true for TX, false for RX ”h]”(j)�”}”(hŒ ``direction``”h]”jÄ)�”}”(hjÄh]”hŒ direction”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mähj¾ubj1)�”}”(hhh]”hì)�”}”(hŒtrue for TX, false for RX”h]”hŒtrue for TX, false for RX”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙh´MähjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÙh´Mähj«ubj)�”}”(hŒ1``stream_capable`` true when streams are enabled ”h]”(j)�”}”(hŒ``stream_capable``”h]”jÄ)�”}”(hjýh]”hŒstream_capable”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Måhj÷ubj1)�”}”(hhh]”hì)�”}”(hŒtrue when streams are enabled”h]”hŒtrue when streams are enabled”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh´Måhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Måhj«ubj)�”}”(hŒ€``combo_num`` the test combination BIT[15:14] of the frame number to test isochronous START TRANSFER command failure workaround ”h]”(j)�”}”(hŒ ``combo_num``”h]”jÄ)�”}”(hj6h]”hŒ combo_num”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mçhj0ubj1)�”}”(hhh]”hì)�”}”(hŒqthe test combination BIT[15:14] of the frame number to test isochronous START TRANSFER command failure workaround”h]”hŒqthe test combination BIT[15:14] of the frame number to test isochronous START TRANSFER command failure workaround”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MæhjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jKh´Mçhj«ubj)�”}”(hŒW``start_cmd_status`` the status of testing START TRANSFER command with combo_num = 'b00”h]”(j)�”}”(hŒ``start_cmd_status``”h]”jÄ)�”}”(hjph]”hŒstart_cmd_status”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mèhjjubj1)�”}”(hhh]”hì)�”}”(hŒBthe status of testing START TRANSFER command with combo_num = 'b00”h]”hŒDthe status of testing START TRANSFER command with combo_num = ‘b00”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j…h´Mèhj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j…h´Mèhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_trb (C struct)”Œ c.dwc3_trb”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_trb”h]”j?)�”}”(hŒstruct dwc3_trb”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÅh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MïubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÅh²hh³jÖh´Mïubjh)�”}”(hŒdwc3_trb”h]”jn)�”}”(hjÃh]”hŒdwc3_trb”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjåubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjÅh²hh³jÖh´Mïubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÁh²hh³jÖh´Mïubah}”(h]”j¼ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jÖh´Mïhj¾h²hubjš)�”}”(hhh]”hì)�”}”(hŒ"transfer request block (hw format)”h]”hŒ"transfer request block (hw format)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mthjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj¾h²hh³jÖh´Mïubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j#j½j#j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ»**Definition**:: struct dwc3_trb { u32 bpl; u32 bph; u32 size; u32 ctrl; }; **Members** ``bpl`` DW0-3 ``bph`` DW4-7 ``size`` DW8-B ``ctrl`` DWC-F”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj+ubhŒ:”…”�”}”(hj+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mxhj'ubj¥)�”}”(hŒJstruct dwc3_trb { u32 bpl; u32 bph; u32 size; u32 ctrl; };”h]”hŒJstruct dwc3_trb { u32 bpl; u32 bph; u32 size; u32 ctrl; };”…”�”}”hjHsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mzhj'ubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjYh]”hŒMembers”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hj'ubj )�”}”(hhh]”(j)�”}”(hŒ``bpl`` DW0-3 ”h]”(j)�”}”(hŒ``bpl``”h]”jÄ)�”}”(hjxh]”hŒbpl”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mvhjrubj1)�”}”(hhh]”hì)�”}”(hŒDW0-3”h]”hŒDW0-3”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�h´MvhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�h´Mvhjoubj)�”}”(hŒ``bph`` DW4-7 ”h]”(j)�”}”(hŒ``bph``”h]”jÄ)�”}”(hj±h]”hŒbph”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mwhj«ubj1)�”}”(hhh]”hì)�”}”(hŒDW4-7”h]”hŒDW4-7”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÆh´MwhjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÆh´Mwhjoubj)�”}”(hŒ``size`` DW8-B ”h]”(j)�”}”(hŒ``size``”h]”jÄ)�”}”(hjêh]”hŒsize”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjèubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mxhjäubj1)�”}”(hhh]”hì)�”}”(hŒDW8-B”h]”hŒDW8-B”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿh´Mxhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÿh´Mxhjoubj)�”}”(hŒ``ctrl`` DWC-F”h]”(j)�”}”(hŒ``ctrl``”h]”jÄ)�”}”(hj#h]”hŒctrl”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mxhjubj1)�”}”(hhh]”hì)�”}”(hŒDWC-F”h]”hŒDWC-F”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Myhj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8h´Mxhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj'ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_hwparams (C struct)”Œc.dwc3_hwparams”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ dwc3_hwparams”h]”j?)�”}”(hŒstruct dwc3_hwparams”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjyh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjyh²hh³jŠh´Mubjh)�”}”(hŒ dwc3_hwparams”h]”jn)�”}”(hjwh]”hŒ dwc3_hwparams”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj™ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjyh²hh³jŠh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjuh²hh³jŠh´Mubah}”(h]”jpah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jŠh´Mhjrh²hubjš)�”}”(hhh]”hì)�”}”(hŒcopy of HWPARAMS registers”h]”hŒcopy of HWPARAMS registers”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‚hj¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjrh²hh³jŠh´Mubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j×j½j×j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX&**Definition**:: struct dwc3_hwparams { u32 hwparams0; u32 hwparams1; u32 hwparams2; u32 hwparams3; u32 hwparams4; u32 hwparams5; u32 hwparams6; u32 hwparams7; u32 hwparams8; u32 hwparams9; }; **Members** ``hwparams0`` GHWPARAMS0 ``hwparams1`` GHWPARAMS1 ``hwparams2`` GHWPARAMS2 ``hwparams3`` GHWPARAMS3 ``hwparams4`` GHWPARAMS4 ``hwparams5`` GHWPARAMS5 ``hwparams6`` GHWPARAMS6 ``hwparams7`` GHWPARAMS7 ``hwparams8`` GHWPARAMS8 ``hwparams9`` GHWPARAMS9”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjßubhŒ:”…”�”}”(hjßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M†hjÛubj¥)�”}”(hŒ×struct dwc3_hwparams { u32 hwparams0; u32 hwparams1; u32 hwparams2; u32 hwparams3; u32 hwparams4; u32 hwparams5; u32 hwparams6; u32 hwparams7; u32 hwparams8; u32 hwparams9; };”h]”hŒ×struct dwc3_hwparams { u32 hwparams0; u32 hwparams1; u32 hwparams2; u32 hwparams3; u32 hwparams4; u32 hwparams5; u32 hwparams6; u32 hwparams7; u32 hwparams8; u32 hwparams9; };”…”�”}”hjüsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MˆhjÛubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hj h]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M•hjÛubj )�”}”(hhh]”(j)�”}”(hŒ``hwparams0`` GHWPARAMS0 ”h]”(j)�”}”(hŒ ``hwparams0``”h]”jÄ)�”}”(hj,h]”hŒ hwparams0”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M„hj&ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS0”h]”hŒ GHWPARAMS0”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jAh´M„hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jAh´M„hj#ubj)�”}”(hŒ``hwparams1`` GHWPARAMS1 ”h]”(j)�”}”(hŒ ``hwparams1``”h]”jÄ)�”}”(hjeh]”hŒ hwparams1”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M…hj_ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS1”h]”hŒ GHWPARAMS1”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jzh´M…hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jzh´M…hj#ubj)�”}”(hŒ``hwparams2`` GHWPARAMS2 ”h]”(j)�”}”(hŒ ``hwparams2``”h]”jÄ)�”}”(hjžh]”hŒ hwparams2”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjœubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M†hj˜ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS2”h]”hŒ GHWPARAMS2”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j³h´M†hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j³h´M†hj#ubj)�”}”(hŒ``hwparams3`` GHWPARAMS3 ”h]”(j)�”}”(hŒ ``hwparams3``”h]”jÄ)�”}”(hj×h]”hŒ hwparams3”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‡hjÑubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS3”h]”hŒ GHWPARAMS3”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jìh´M‡hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jìh´M‡hj#ubj)�”}”(hŒ``hwparams4`` GHWPARAMS4 ”h]”(j)�”}”(hŒ ``hwparams4``”h]”jÄ)�”}”(hjh]”hŒ hwparams4”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mˆhj ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS4”h]”hŒ GHWPARAMS4”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j%h´Mˆhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%h´Mˆhj#ubj)�”}”(hŒ``hwparams5`` GHWPARAMS5 ”h]”(j)�”}”(hŒ ``hwparams5``”h]”jÄ)�”}”(hjIh]”hŒ hwparams5”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‰hjCubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS5”h]”hŒ GHWPARAMS5”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j^h´M‰hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j^h´M‰hj#ubj)�”}”(hŒ``hwparams6`` GHWPARAMS6 ”h]”(j)�”}”(hŒ ``hwparams6``”h]”jÄ)�”}”(hj‚h]”hŒ hwparams6”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŠhj|ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS6”h]”hŒ GHWPARAMS6”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j—h´MŠhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j—h´MŠhj#ubj)�”}”(hŒ``hwparams7`` GHWPARAMS7 ”h]”(j)�”}”(hŒ ``hwparams7``”h]”jÄ)�”}”(hj»h]”hŒ hwparams7”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‹hjµubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS7”h]”hŒ GHWPARAMS7”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÐh´M‹hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjµubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÐh´M‹hj#ubj)�”}”(hŒ``hwparams8`` GHWPARAMS8 ”h]”(j)�”}”(hŒ ``hwparams8``”h]”jÄ)�”}”(hjôh]”hŒ hwparams8”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŒhjîubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS8”h]”hŒ GHWPARAMS8”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j h´MŒhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´MŒhj#ubj)�”}”(hŒ``hwparams9`` GHWPARAMS9”h]”(j)�”}”(hŒ ``hwparams9``”h]”jÄ)�”}”(hj-h]”hŒ hwparams9”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŒhj'ubj1)�”}”(hhh]”hì)�”}”(hŒ GHWPARAMS9”h]”hŒ GHWPARAMS9”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jBh´MŒhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÛubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_request (C struct)”Œc.dwc3_request”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ dwc3_request”h]”j?)�”}”(hŒstruct dwc3_request”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjƒh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M“ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjƒh²hh³j”h´M“ubjh)�”}”(hŒ dwc3_request”h]”jn)�”}”(hj�h]”hŒ dwc3_request”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj£ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjƒh²hh³j”h´M“ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjh²hh³j”h´M“ubah}”(h]”jzah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j”h´M“hj|h²hubjš)�”}”(hhh]”hì)�”}”(hŒ$representation of a transfer request”h]”hŒ$representation of a transfer request”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MµhjÆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj|h²hh³j”h´M“ubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼jáj½jáj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Definition**:: struct dwc3_request { struct usb_request request; struct list_head list; struct dwc3_ep *dep; struct scatterlist *start_sg; unsigned int num_pending_sgs; unsigned int remaining; unsigned int status; #define DWC3_REQUEST_STATUS_QUEUED 0; #define DWC3_REQUEST_STATUS_STARTED 1; #define DWC3_REQUEST_STATUS_DISCONNECTED 2; #define DWC3_REQUEST_STATUS_DEQUEUED 3; #define DWC3_REQUEST_STATUS_STALLED 4; #define DWC3_REQUEST_STATUS_COMPLETED 5; #define DWC3_REQUEST_STATUS_UNKNOWN -1; u8 epnum; struct dwc3_trb *trb; dma_addr_t trb_dma; unsigned int num_trbs; unsigned int direction:1; unsigned int mapped:1; }; **Members** ``request`` struct usb_request to be transferred ``list`` a list_head used for request queueing ``dep`` struct dwc3_ep owning this request ``start_sg`` pointer to the sg which should be queued next ``num_pending_sgs`` counter to pending sgs ``remaining`` amount of data remaining ``status`` internal dwc3 request status tracking ``epnum`` endpoint number to which this request refers ``trb`` pointer to struct dwc3_trb ``trb_dma`` DMA address of **trb** ``num_trbs`` number of TRBs used by this request ``direction`` IN or OUT direction flag ``mapped`` true when request has been dma-mapped”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjéubhŒ:”…”�”}”(hjéh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¹hjåubj¥)�”}”(hXCstruct dwc3_request { struct usb_request request; struct list_head list; struct dwc3_ep *dep; struct scatterlist *start_sg; unsigned int num_pending_sgs; unsigned int remaining; unsigned int status; #define DWC3_REQUEST_STATUS_QUEUED 0; #define DWC3_REQUEST_STATUS_STARTED 1; #define DWC3_REQUEST_STATUS_DISCONNECTED 2; #define DWC3_REQUEST_STATUS_DEQUEUED 3; #define DWC3_REQUEST_STATUS_STALLED 4; #define DWC3_REQUEST_STATUS_COMPLETED 5; #define DWC3_REQUEST_STATUS_UNKNOWN -1; u8 epnum; struct dwc3_trb *trb; dma_addr_t trb_dma; unsigned int num_trbs; unsigned int direction:1; unsigned int mapped:1; };”h]”hXCstruct dwc3_request { struct usb_request request; struct list_head list; struct dwc3_ep *dep; struct scatterlist *start_sg; unsigned int num_pending_sgs; unsigned int remaining; unsigned int status; #define DWC3_REQUEST_STATUS_QUEUED 0; #define DWC3_REQUEST_STATUS_STARTED 1; #define DWC3_REQUEST_STATUS_DISCONNECTED 2; #define DWC3_REQUEST_STATUS_DEQUEUED 3; #define DWC3_REQUEST_STATUS_STALLED 4; #define DWC3_REQUEST_STATUS_COMPLETED 5; #define DWC3_REQUEST_STATUS_UNKNOWN -1; u8 epnum; struct dwc3_trb *trb; dma_addr_t trb_dma; unsigned int num_trbs; unsigned int direction:1; unsigned int mapped:1; };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M»hjåubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjh]”hŒMembers”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”u•$h1j­hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÒhjåubj )�”}”(hhh]”(j)�”}”(hŒ1``request`` struct usb_request to be transferred ”h]”(j)�”}”(hŒ ``request``”h]”jÄ)�”}”(hj6h]”hŒrequest”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M·hj0ubj1)�”}”(hhh]”hì)�”}”(hŒ$struct usb_request to be transferred”h]”hŒ$struct usb_request to be transferred”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jKh´M·hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jKh´M·hj-ubj)�”}”(hŒ/``list`` a list_head used for request queueing ”h]”(j)�”}”(hŒ``list``”h]”jÄ)�”}”(hjoh]”hŒlist”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjmubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¸hjiubj1)�”}”(hhh]”hì)�”}”(hŒ%a list_head used for request queueing”h]”hŒ%a list_head used for request queueing”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„h´M¸hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„h´M¸hj-ubj)�”}”(hŒ+``dep`` struct dwc3_ep owning this request ”h]”(j)�”}”(hŒ``dep``”h]”jÄ)�”}”(hj¨h]”hŒdep”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¹hj¢ubj1)�”}”(hhh]”hì)�”}”(hŒ"struct dwc3_ep owning this request”h]”hŒ"struct dwc3_ep owning this request”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j½h´M¹hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½h´M¹hj-ubj)�”}”(hŒ;``start_sg`` pointer to the sg which should be queued next ”h]”(j)�”}”(hŒ ``start_sg``”h]”jÄ)�”}”(hjáh]”hŒstart_sg”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MºhjÛubj1)�”}”(hhh]”hì)�”}”(hŒ-pointer to the sg which should be queued next”h]”hŒ-pointer to the sg which should be queued next”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jöh´Mºhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jöh´Mºhj-ubj)�”}”(hŒ+``num_pending_sgs`` counter to pending sgs ”h]”(j)�”}”(hŒ``num_pending_sgs``”h]”jÄ)�”}”(hj h]”hŒnum_pending_sgs”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M»hj ubj1)�”}”(hhh]”hì)�”}”(hŒcounter to pending sgs”h]”hŒcounter to pending sgs”…”�”}”(hj3 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/ h´M»hj0 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/ h´M»hj-ubj)�”}”(hŒ'``remaining`` amount of data remaining ”h]”(j)�”}”(hŒ ``remaining``”h]”jÄ)�”}”(hjS h]”hŒ remaining”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjQ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¼hjM ubj1)�”}”(hhh]”hì)�”}”(hŒamount of data remaining”h]”hŒamount of data remaining”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jh h´M¼hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjM ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh h´M¼hj-ubj)�”}”(hŒ1``status`` internal dwc3 request status tracking ”h]”(j)�”}”(hŒ ``status``”h]”jÄ)�”}”(hjŒ h]”hŒstatus”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŠ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M½hj† ubj1)�”}”(hhh]”hì)�”}”(hŒ%internal dwc3 request status tracking”h]”hŒ%internal dwc3 request status tracking”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡ h´M½hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj† ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¡ h´M½hj-ubj)�”}”(hŒ7``epnum`` endpoint number to which this request refers ”h]”(j)�”}”(hŒ ``epnum``”h]”jÄ)�”}”(hjÅ h]”hŒepnum”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¾hj¿ ubj1)�”}”(hhh]”hì)�”}”(hŒ,endpoint number to which this request refers”h]”hŒ,endpoint number to which this request refers”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚ h´M¾hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÚ h´M¾hj-ubj)�”}”(hŒ#``trb`` pointer to struct dwc3_trb ”h]”(j)�”}”(hŒ``trb``”h]”jÄ)�”}”(hjþ h]”hŒtrb”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¿hjø ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to struct dwc3_trb”h]”hŒpointer to struct dwc3_trb”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!h´M¿hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjø ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j!h´M¿hj-ubj)�”}”(hŒ#``trb_dma`` DMA address of **trb** ”h]”(j)�”}”(hŒ ``trb_dma``”h]”jÄ)�”}”(hj7!h]”hŒtrb_dma”…”�”}”(hj9!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÀhj1!ubj1)�”}”(hhh]”hì)�”}”(hŒDMA address of **trb**”h]”(hŒDMA address of ”…”�”}”(hjP!h²hh³Nh´Nubj®)�”}”(hŒ**trb**”h]”hŒtrb”…”�”}”(hjX!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjP!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jL!h´MÀhjM!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj1!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jL!h´MÀhj-ubj)�”}”(hŒ1``num_trbs`` number of TRBs used by this request ”h]”(j)�”}”(hŒ ``num_trbs``”h]”jÄ)�”}”(hj~!h]”hŒnum_trbs”…”�”}”(hj€!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj|!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÁhjx!ubj1)�”}”(hhh]”hì)�”}”(hŒ#number of TRBs used by this request”h]”hŒ#number of TRBs used by this request”…”�”}”(hj—!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“!h´MÁhj”!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjx!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j“!h´MÁhj-ubj)�”}”(hŒ'``direction`` IN or OUT direction flag ”h]”(j)�”}”(hŒ ``direction``”h]”jÄ)�”}”(hj·!h]”hŒ direction”…”�”}”(hj¹!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjµ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÂhj±!ubj1)�”}”(hhh]”hì)�”}”(hŒIN or OUT direction flag”h]”hŒIN or OUT direction flag”…”�”}”(hjÐ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ!h´MÂhjÍ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj±!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÌ!h´MÂhj-ubj)�”}”(hŒ0``mapped`` true when request has been dma-mapped”h]”(j)�”}”(hŒ ``mapped``”h]”jÄ)�”}”(hjð!h]”hŒmapped”…”�”}”(hjò!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjî!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÂhjê!ubj1)�”}”(hhh]”hì)�”}”(hŒ%true when request has been dma-mapped”h]”hŒ%true when request has been dma-mapped”…”�”}”(hj "h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÃhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjê!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"h´MÂhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjåubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_glue_ops (C struct)”Œc.dwc3_glue_ops”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ dwc3_glue_ops”h]”j?)�”}”(hŒstruct dwc3_glue_ops”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjJ"h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjF"h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÉubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX"h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjF"h²hh³jW"h´MÉubjh)�”}”(hŒ dwc3_glue_ops”h]”jn)�”}”(hjD"h]”hŒ dwc3_glue_ops”…”�”}”(hjj"h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjf"ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjF"h²hh³jW"h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjB"h²hh³jW"h´MÉubah}”(h]”j="ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jW"h´MÉhj?"h²hubjš)�”}”(hhh]”hì)�”}”(hŒJThe ops indicate the notifications that need to be passed on to glue layer”h]”hŒJThe ops indicate the notifications that need to be passed on to glue layer”…”�”}”(hjŒ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Méhj‰"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj?"h²hh³jW"h´MÉubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j¤"j½j¤"j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX<**Definition**:: struct dwc3_glue_ops { void (*pre_set_role)(struct dwc3 *dwc, enum usb_role role); void (*pre_run_stop)(struct dwc3 *dwc, bool is_on); }; **Members** ``pre_set_role`` Notify glue of role switch notifications ``pre_run_stop`` Notify run stop enable/disable information to glue”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj°"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¬"ubhŒ:”…”�”}”(hj¬"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Míhj¨"ubj¥)�”}”(hŒ‘struct dwc3_glue_ops { void (*pre_set_role)(struct dwc3 *dwc, enum usb_role role); void (*pre_run_stop)(struct dwc3 *dwc, bool is_on); };”h]”hŒ‘struct dwc3_glue_ops { void (*pre_set_role)(struct dwc3 *dwc, enum usb_role role); void (*pre_run_stop)(struct dwc3 *dwc, bool is_on); };”…”�”}”hjÉ"sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mïhj¨"ubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjÚ"h]”hŒMembers”…”�”}”(hjÜ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjØ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Môhj¨"ubj )�”}”(hhh]”(j)�”}”(hŒ:``pre_set_role`` Notify glue of role switch notifications ”h]”(j)�”}”(hŒ``pre_set_role``”h]”jÄ)�”}”(hjù"h]”hŒ pre_set_role”…”�”}”(hjû"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj÷"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mìhjó"ubj1)�”}”(hhh]”hì)�”}”(hŒ(Notify glue of role switch notifications”h]”hŒ(Notify glue of role switch notifications”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j#h´Mìhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjó"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#h´Mìhjð"ubj)�”}”(hŒC``pre_run_stop`` Notify run stop enable/disable information to glue”h]”(j)�”}”(hŒ``pre_run_stop``”h]”jÄ)�”}”(hj2#h]”hŒ pre_run_stop”…”�”}”(hj4#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj0#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mìhj,#ubj1)�”}”(hhh]”hì)�”}”(hŒ2Notify run stop enable/disable information to glue”h]”hŒ2Notify run stop enable/disable information to glue”…”�”}”(hjK#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MíhjH#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj,#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jG#h´Mìhjð"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¨"ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3 (C struct)”Œc.dwc3”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3”h]”j?)�”}”(hŒ struct dwc3”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjŒ#h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjˆ#h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MóubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš#h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjˆ#h²hh³j™#h´Móubjh)�”}”(hŒdwc3”h]”jn)�”}”(hj†#h]”hŒdwc3”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¨#ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjˆ#h²hh³j™#h´Móubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj„#h²hh³j™#h´Móubah}”(h]”j#ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j™#h´Móhj�#h²hubjš)�”}”(hhh]”hì)�”}”(hŒ representation of our controller”h]”hŒ representation of our controller”…”�”}”(hjÎ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MôhjË#h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj�#h²hh³j™#h´Móubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼jæ#j½jæ#j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXÚD**Definition**:: struct dwc3 { struct work_struct drd_work; struct work_struct err_recovery_work; struct dwc3_trb *ep0_trb; void *bounce; u8 *setup_buf; dma_addr_t ep0_trb_addr; dma_addr_t bounce_addr; struct dwc3_request ep0_usb_req; struct completion ep0_in_setup; spinlock_t lock; struct mutex mutex; struct mutex connect_mutex; struct device *dev; struct device *sysdev; struct platform_device *xhci; struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM]; struct dwc3_event_buffer *ev_buf; struct dwc3_ep *eps[DWC3_ENDPOINTS_NUM]; struct usb_gadget *gadget; struct usb_gadget_driver *gadget_driver; const struct dwc3_glue_ops *glue_ops; struct clk *bus_clk; struct clk *ref_clk; struct clk *susp_clk; struct clk *utmi_clk; struct clk *pipe_clk; struct reset_control *reset; struct usb_phy *usb2_phy; struct usb_phy *usb3_phy; struct phy *usb2_generic_phy[DWC3_USB2_MAX_PORTS]; struct phy *usb3_generic_phy[DWC3_USB3_MAX_PORTS]; u8 num_usb2_ports; u8 num_usb3_ports; bool phys_ready; struct ulpi *ulpi; bool ulpi_ready; void __iomem *regs; size_t regs_size; enum usb_dr_mode dr_mode; u32 current_dr_role; u32 desired_dr_role; struct extcon_dev *edev; struct notifier_block edev_nb; enum usb_phy_interface hsphy_mode; struct usb_role_switch *role_sw; enum usb_dr_mode role_switch_default_mode; struct power_supply *usb_psy; const char *usb_psy_name; struct notifier_block psy_nb; struct work_struct vbus_draw_work; unsigned int current_limit; #define DWC3_CURRENT_UNSPECIFIED UINT_MAX; u32 fladj; u32 ref_clk_per; u32 irq_gadget; u32 otg_irq; u32 current_otg_role; u32 desired_otg_role; bool otg_restart_host; u32 u1u2; u32 maximum_speed; u32 gadget_max_speed; enum usb_ssp_rate max_ssp_rate; enum usb_ssp_rate gadget_ssp_rate; u32 ip; #define DWC3_IP 0x5533; #define DWC31_IP 0x3331; #define DWC32_IP 0x3332; #define DWC4_IP 0x3430; u32 revision; #define DWC3_REVISION_ANY 0x0; #define DWC3_REVISION_173A 0x5533173a; #define DWC3_REVISION_175A 0x5533175a; #define DWC3_REVISION_180A 0x5533180a; #define DWC3_REVISION_183A 0x5533183a; #define DWC3_REVISION_185A 0x5533185a; #define DWC3_REVISION_187A 0x5533187a; #define DWC3_REVISION_188A 0x5533188a; #define DWC3_REVISION_190A 0x5533190a; #define DWC3_REVISION_194A 0x5533194a; #define DWC3_REVISION_200A 0x5533200a; #define DWC3_REVISION_202A 0x5533202a; #define DWC3_REVISION_210A 0x5533210a; #define DWC3_REVISION_220A 0x5533220a; #define DWC3_REVISION_230A 0x5533230a; #define DWC3_REVISION_240A 0x5533240a; #define DWC3_REVISION_250A 0x5533250a; #define DWC3_REVISION_260A 0x5533260a; #define DWC3_REVISION_270A 0x5533270a; #define DWC3_REVISION_280A 0x5533280a; #define DWC3_REVISION_290A 0x5533290a; #define DWC3_REVISION_300A 0x5533300a; #define DWC3_REVISION_310A 0x5533310a; #define DWC3_REVISION_320A 0x5533320a; #define DWC3_REVISION_330A 0x5533330a; #define DWC31_REVISION_ANY 0x0; #define DWC31_REVISION_110A 0x3131302a; #define DWC31_REVISION_120A 0x3132302a; #define DWC31_REVISION_160A 0x3136302a; #define DWC31_REVISION_170A 0x3137302a; #define DWC31_REVISION_180A 0x3138302a; #define DWC31_REVISION_190A 0x3139302a; #define DWC31_REVISION_200A 0x3230302a; #define DWC32_REVISION_ANY 0x0; #define DWC32_REVISION_100A 0x3130302a; u32 version_type; #define DWC31_VERSIONTYPE_ANY 0x0; #define DWC31_VERSIONTYPE_EA01 0x65613031; #define DWC31_VERSIONTYPE_EA02 0x65613032; #define DWC31_VERSIONTYPE_EA03 0x65613033; #define DWC31_VERSIONTYPE_EA04 0x65613034; #define DWC31_VERSIONTYPE_EA05 0x65613035; #define DWC31_VERSIONTYPE_EA06 0x65613036; enum dwc3_ep0_next ep0_next_event; enum dwc3_ep0_state ep0state; enum dwc3_link_state link_state; enum dwc3_err_state err_state; u32 err_recovery_count; u16 u2sel; u16 u2pel; u8 u1sel; u8 u1pel; u8 speed; u8 num_eps; struct dwc3_hwparams hwparams; struct debugfs_regset32 *regset; u32 dbg_lsp_select; u8 test_mode; u8 test_mode_nr; u8 lpm_nyet_threshold; u8 hird_threshold; u8 rx_thr_num_pkt; u8 rx_max_burst; u8 tx_thr_num_pkt; u8 tx_max_burst; u8 rx_thr_num_pkt_prd; u8 rx_max_burst_prd; u8 tx_thr_num_pkt_prd; u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; u16 num_hc_interrupters; const char *hsphy_interface; unsigned connected:1; unsigned softconnect:1; unsigned delayed_status:1; unsigned ep0_bounced:1; unsigned ep0_expect_in:1; unsigned sysdev_is_parent:1; unsigned has_lpm_erratum:1; unsigned is_utmi_l1_suspend:1; unsigned is_fpga:1; unsigned pending_events:1; unsigned do_fifo_resize:1; unsigned pullups_connected:1; unsigned setup_packet_pending:1; unsigned three_stage_setup:1; unsigned dis_start_transfer_quirk:1; unsigned usb3_lpm_capable:1; unsigned usb2_lpm_disable:1; unsigned usb2_gadget_lpm_disable:1; unsigned needs_full_reinit:1; unsigned disable_scramble_quirk:1; unsigned u2exit_lfps_quirk:1; unsigned u2ss_inp3_quirk:1; unsigned req_p1p2p3_quirk:1; unsigned del_p1p2p3_quirk:1; unsigned del_phy_power_chg_quirk:1; unsigned lfps_filter_quirk:1; unsigned rx_detect_poll_quirk:1; unsigned dis_u3_susphy_quirk:1; unsigned dis_u2_susphy_quirk:1; unsigned dis_enblslpm_quirk:1; unsigned dis_u1_entry_quirk:1; unsigned dis_u2_entry_quirk:1; unsigned dis_rxdet_inp3_quirk:1; unsigned dis_u2_freeclk_exists_quirk:1; unsigned dis_del_phy_power_chg_quirk:1; unsigned dis_tx_ipgap_linecheck_quirk:1; unsigned resume_hs_terminations:1; unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; unsigned gfladj_refclk_lpm_sel:1; unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis:2; unsigned dis_metastability_quirk:1; unsigned dis_split_quirk:1; unsigned enable_usb2_transceiver_delay:1; unsigned async_callbacks:1; unsigned sys_wakeup:1; unsigned wakeup_configured:1; unsigned suspended:1; unsigned susphy_state:1; u16 imod_interval; int max_cfg_eps; int last_fifo_depth; int num_ep_resized; struct dentry *debug_root; u32 gsbuscfg0_reqinfo; u32 wakeup_pending_funcs; }; **Members** ``drd_work`` workqueue used for role swapping ``err_recovery_work`` workqueue used for controller error recovery ``ep0_trb`` trb which is used for the ctrl_req ``bounce`` address of bounce buffer ``setup_buf`` used while precessing STD USB requests ``ep0_trb_addr`` dma address of **ep0_trb** ``bounce_addr`` dma address of **bounce** ``ep0_usb_req`` dummy req used while handling STD USB requests ``ep0_in_setup`` one control transfer is completed and enter setup phase ``lock`` for synchronizing ``mutex`` for mode switching ``connect_mutex`` for the pull-up and err_recovery_work ``dev`` pointer to our struct device ``sysdev`` pointer to the DMA-capable device ``xhci`` pointer to our xHCI child ``xhci_resources`` struct resources for our **xhci** child ``ev_buf`` struct dwc3_event_buffer pointer ``eps`` endpoint array ``gadget`` device side representation of the peripheral controller ``gadget_driver`` pointer to the gadget driver ``glue_ops`` Vendor callbacks for flattened device implementations. ``bus_clk`` clock for accessing the registers ``ref_clk`` reference clock ``susp_clk`` clock used when the SS phy is in low power (S3) state ``utmi_clk`` clock used for USB2 PHY communication ``pipe_clk`` clock used for USB3 PHY communication ``reset`` reset control ``usb2_phy`` pointer to USB2 PHY ``usb3_phy`` pointer to USB3 PHY ``usb2_generic_phy`` pointer to array of USB2 PHYs ``usb3_generic_phy`` pointer to array of USB3 PHYs ``num_usb2_ports`` number of USB2 ports ``num_usb3_ports`` number of USB3 ports ``phys_ready`` flag to indicate that PHYs are ready ``ulpi`` pointer to ulpi interface ``ulpi_ready`` flag to indicate that ULPI is initialized ``regs`` base address for our registers ``regs_size`` address space size ``dr_mode`` requested mode of operation ``current_dr_role`` current role of operation when in dual-role mode ``desired_dr_role`` desired role of operation when in dual-role mode ``edev`` extcon handle ``edev_nb`` extcon notifier ``hsphy_mode`` UTMI phy mode, one of following: - USBPHY_INTERFACE_MODE_UTMI - USBPHY_INTERFACE_MODE_UTMIW ``role_sw`` usb_role_switch handle ``role_switch_default_mode`` default operation mode of controller while usb role is USB_ROLE_NONE. ``usb_psy`` pointer to power supply interface. ``usb_psy_name`` name of the USB power supply ``psy_nb`` power supply notifier block ``vbus_draw_work`` Work to set the vbus drawing limit ``current_limit`` How much current to draw from vbus, in milliAmperes. ``fladj`` frame length adjustment ``ref_clk_per`` reference clock period configuration ``irq_gadget`` peripheral controller's IRQ number ``otg_irq`` IRQ number for OTG IRQs ``current_otg_role`` current role of operation while using the OTG block ``desired_otg_role`` desired role of operation while using the OTG block ``otg_restart_host`` flag that OTG controller needs to restart host ``u1u2`` only used on revisions <1.83a for workaround ``maximum_speed`` maximum speed requested (mainly for testing purposes) ``gadget_max_speed`` maximum gadget speed requested ``max_ssp_rate`` SuperSpeed Plus maximum signaling rate and lane count ``gadget_ssp_rate`` Gadget driver's maximum supported SuperSpeed Plus signaling rate and lane count. ``ip`` controller's ID ``revision`` controller's version of an IP ``version_type`` VERSIONTYPE register contents, a sub release of a revision ``ep0_next_event`` hold the next expected event ``ep0state`` state of endpoint zero ``link_state`` link state ``err_state`` current error recovery state. ``err_recovery_count`` number of consecutive error recovery attempts until confirmed healthy and reset to 0 on reset event. ``u2sel`` parameter from Set SEL request. ``u2pel`` parameter from Set SEL request. ``u1sel`` parameter from Set SEL request. ``u1pel`` parameter from Set SEL request. ``speed`` device speed (super, high, full, low) ``num_eps`` number of endpoints ``hwparams`` copy of hwparams registers ``regset`` debugfs pointer to regdump file ``dbg_lsp_select`` current debug lsp mux register selection ``test_mode`` true when we're entering a USB test mode ``test_mode_nr`` test feature selector ``lpm_nyet_threshold`` LPM NYET response threshold ``hird_threshold`` HIRD threshold ``rx_thr_num_pkt`` USB receive packet count ``rx_max_burst`` max USB receive burst size ``tx_thr_num_pkt`` USB transmit packet count ``tx_max_burst`` max USB transmit burst size ``rx_thr_num_pkt_prd`` periodic ESS receive packet count ``rx_max_burst_prd`` max periodic ESS receive burst size ``tx_thr_num_pkt_prd`` periodic ESS transmit packet count ``tx_max_burst_prd`` max periodic ESS transmit burst size ``tx_fifo_resize_max_num`` max number of fifos allocated during txfifo resize ``clear_stall_protocol`` endpoint number that requires a delayed status phase ``num_hc_interrupters`` number of host controller interrupters ``hsphy_interface`` "utmi" or "ulpi" ``connected`` true when we're connected to a host, false otherwise ``softconnect`` true when gadget connect is called, false when disconnect runs ``delayed_status`` true when gadget driver asks for delayed status ``ep0_bounced`` true when we used bounce buffer ``ep0_expect_in`` true when we expect a DATA IN transfer ``sysdev_is_parent`` true when dwc3 device has a parent driver ``has_lpm_erratum`` true when core was configured with LPM Erratum. Note that there's now way for software to detect this in runtime. ``is_utmi_l1_suspend`` the core asserts output signal 0 - utmi_sleep_n 1 - utmi_l1_suspend_n ``is_fpga`` true when we are using the FPGA board ``pending_events`` true when we have pending IRQs to be handled ``do_fifo_resize`` true when txfifo resizing is enabled for dwc3 endpoints ``pullups_connected`` true when Run/Stop bit is set ``setup_packet_pending`` true when there's a Setup Packet in FIFO. Workaround ``three_stage_setup`` set if we perform a three phase setup ``dis_start_transfer_quirk`` set if start_transfer failure SW workaround is not needed for DWC_usb31 version 1.70a-ea06 and below ``usb3_lpm_capable`` set if hadrware supports Link Power Management ``usb2_lpm_disable`` set to disable usb2 lpm for host ``usb2_gadget_lpm_disable`` set to disable usb2 lpm for gadget ``needs_full_reinit`` set to indicate the core may lose power and need full initialization during system pm ``disable_scramble_quirk`` set if we enable the disable scramble quirk ``u2exit_lfps_quirk`` set if we enable u2exit lfps quirk ``u2ss_inp3_quirk`` set if we enable P3 OK for U2/SS Inactive quirk ``req_p1p2p3_quirk`` set if we enable request p1p2p3 quirk ``del_p1p2p3_quirk`` set if we enable delay p1p2p3 quirk ``del_phy_power_chg_quirk`` set if we enable delay phy power change quirk ``lfps_filter_quirk`` set if we enable LFPS filter quirk ``rx_detect_poll_quirk`` set if we enable rx_detect to polling lfps quirk ``dis_u3_susphy_quirk`` set if we disable usb3 suspend phy ``dis_u2_susphy_quirk`` set if we disable usb2 suspend phy ``dis_enblslpm_quirk`` set if we clear enblslpm in GUSB2PHYCFG, disabling the suspend signal to the PHY. ``dis_u1_entry_quirk`` set if link entering into U1 state needs to be disabled. ``dis_u2_entry_quirk`` set if link entering into U2 state needs to be disabled. ``dis_rxdet_inp3_quirk`` set if we disable Rx.Detect in P3 ``dis_u2_freeclk_exists_quirk`` set if we clear u2_freeclk_exists in GUSB2PHYCFG, specify that USB2 PHY doesn't provide a free-running PHY clock. ``dis_del_phy_power_chg_quirk`` set if we disable delay phy power change quirk. ``dis_tx_ipgap_linecheck_quirk`` set if we disable u2mac linestate check during HS transmit. ``resume_hs_terminations`` Set if we enable quirk for fixing improper crc generation after resume from suspend. ``ulpi_ext_vbus_drv`` Set to confiure the upli chip to drives CPEN pin VBUS with an external supply. ``parkmode_disable_ss_quirk`` set if we need to disable all SuperSpeed instances in park mode. ``parkmode_disable_hs_quirk`` set if we need to disable all HighSpeed instances in park mode. ``gfladj_refclk_lpm_sel`` set if we need to enable SOF/ITP counter running based on ref_clk ``tx_de_emphasis_quirk`` set if we enable Tx de-emphasis quirk ``tx_de_emphasis`` Tx de-emphasis value 0 - -6dB de-emphasis 1 - -3.5dB de-emphasis 2 - No de-emphasis 3 - Reserved ``dis_metastability_quirk`` set to disable metastability quirk. ``dis_split_quirk`` set to disable split boundary. ``enable_usb2_transceiver_delay`` Set to insert a delay before the assertion of the TxValid signal during a HS Chirp. ``async_callbacks`` if set, indicate that async callbacks will be used. ``sys_wakeup`` set if the device may do system wakeup. ``wakeup_configured`` set if the device is configured for remote wakeup. ``suspended`` set to track suspend event due to U3/L2. ``susphy_state`` state of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY before PM suspend. ``imod_interval`` set the interrupt moderation interval in 250ns increments or 0 to disable. ``max_cfg_eps`` current max number of IN eps used across all USB configs. ``last_fifo_depth`` last fifo depth used to determine next fifo ram start address. ``num_ep_resized`` carries the current number endpoints which have had its tx fifo resized. ``debug_root`` root debugfs directory for this device to put its files in. ``gsbuscfg0_reqinfo`` store GSBUSCFG0.DATRDREQINFO, DESRDREQINFO, DATWRREQINFO, and DESWRREQINFO value passed from glue driver. ``wakeup_pending_funcs`` Indicates whether any interface has requested for function wakeup in bitmap format where bit position represents interface_id.”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjò#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjî#ubhŒ:”…”�”}”(hjî#h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Møhjê#ubj¥)�”}”(hXÕstruct dwc3 { struct work_struct drd_work; struct work_struct err_recovery_work; struct dwc3_trb *ep0_trb; void *bounce; u8 *setup_buf; dma_addr_t ep0_trb_addr; dma_addr_t bounce_addr; struct dwc3_request ep0_usb_req; struct completion ep0_in_setup; spinlock_t lock; struct mutex mutex; struct mutex connect_mutex; struct device *dev; struct device *sysdev; struct platform_device *xhci; struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM]; struct dwc3_event_buffer *ev_buf; struct dwc3_ep *eps[DWC3_ENDPOINTS_NUM]; struct usb_gadget *gadget; struct usb_gadget_driver *gadget_driver; const struct dwc3_glue_ops *glue_ops; struct clk *bus_clk; struct clk *ref_clk; struct clk *susp_clk; struct clk *utmi_clk; struct clk *pipe_clk; struct reset_control *reset; struct usb_phy *usb2_phy; struct usb_phy *usb3_phy; struct phy *usb2_generic_phy[DWC3_USB2_MAX_PORTS]; struct phy *usb3_generic_phy[DWC3_USB3_MAX_PORTS]; u8 num_usb2_ports; u8 num_usb3_ports; bool phys_ready; struct ulpi *ulpi; bool ulpi_ready; void __iomem *regs; size_t regs_size; enum usb_dr_mode dr_mode; u32 current_dr_role; u32 desired_dr_role; struct extcon_dev *edev; struct notifier_block edev_nb; enum usb_phy_interface hsphy_mode; struct usb_role_switch *role_sw; enum usb_dr_mode role_switch_default_mode; struct power_supply *usb_psy; const char *usb_psy_name; struct notifier_block psy_nb; struct work_struct vbus_draw_work; unsigned int current_limit; #define DWC3_CURRENT_UNSPECIFIED UINT_MAX; u32 fladj; u32 ref_clk_per; u32 irq_gadget; u32 otg_irq; u32 current_otg_role; u32 desired_otg_role; bool otg_restart_host; u32 u1u2; u32 maximum_speed; u32 gadget_max_speed; enum usb_ssp_rate max_ssp_rate; enum usb_ssp_rate gadget_ssp_rate; u32 ip; #define DWC3_IP 0x5533; #define DWC31_IP 0x3331; #define DWC32_IP 0x3332; #define DWC4_IP 0x3430; u32 revision; #define DWC3_REVISION_ANY 0x0; #define DWC3_REVISION_173A 0x5533173a; #define DWC3_REVISION_175A 0x5533175a; #define DWC3_REVISION_180A 0x5533180a; #define DWC3_REVISION_183A 0x5533183a; #define DWC3_REVISION_185A 0x5533185a; #define DWC3_REVISION_187A 0x5533187a; #define DWC3_REVISION_188A 0x5533188a; #define DWC3_REVISION_190A 0x5533190a; #define DWC3_REVISION_194A 0x5533194a; #define DWC3_REVISION_200A 0x5533200a; #define DWC3_REVISION_202A 0x5533202a; #define DWC3_REVISION_210A 0x5533210a; #define DWC3_REVISION_220A 0x5533220a; #define DWC3_REVISION_230A 0x5533230a; #define DWC3_REVISION_240A 0x5533240a; #define DWC3_REVISION_250A 0x5533250a; #define DWC3_REVISION_260A 0x5533260a; #define DWC3_REVISION_270A 0x5533270a; #define DWC3_REVISION_280A 0x5533280a; #define DWC3_REVISION_290A 0x5533290a; #define DWC3_REVISION_300A 0x5533300a; #define DWC3_REVISION_310A 0x5533310a; #define DWC3_REVISION_320A 0x5533320a; #define DWC3_REVISION_330A 0x5533330a; #define DWC31_REVISION_ANY 0x0; #define DWC31_REVISION_110A 0x3131302a; #define DWC31_REVISION_120A 0x3132302a; #define DWC31_REVISION_160A 0x3136302a; #define DWC31_REVISION_170A 0x3137302a; #define DWC31_REVISION_180A 0x3138302a; #define DWC31_REVISION_190A 0x3139302a; #define DWC31_REVISION_200A 0x3230302a; #define DWC32_REVISION_ANY 0x0; #define DWC32_REVISION_100A 0x3130302a; u32 version_type; #define DWC31_VERSIONTYPE_ANY 0x0; #define DWC31_VERSIONTYPE_EA01 0x65613031; #define DWC31_VERSIONTYPE_EA02 0x65613032; #define DWC31_VERSIONTYPE_EA03 0x65613033; #define DWC31_VERSIONTYPE_EA04 0x65613034; #define DWC31_VERSIONTYPE_EA05 0x65613035; #define DWC31_VERSIONTYPE_EA06 0x65613036; enum dwc3_ep0_next ep0_next_event; enum dwc3_ep0_state ep0state; enum dwc3_link_state link_state; enum dwc3_err_state err_state; u32 err_recovery_count; u16 u2sel; u16 u2pel; u8 u1sel; u8 u1pel; u8 speed; u8 num_eps; struct dwc3_hwparams hwparams; struct debugfs_regset32 *regset; u32 dbg_lsp_select; u8 test_mode; u8 test_mode_nr; u8 lpm_nyet_threshold; u8 hird_threshold; u8 rx_thr_num_pkt; u8 rx_max_burst; u8 tx_thr_num_pkt; u8 tx_max_burst; u8 rx_thr_num_pkt_prd; u8 rx_max_burst_prd; u8 tx_thr_num_pkt_prd; u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; u16 num_hc_interrupters; const char *hsphy_interface; unsigned connected:1; unsigned softconnect:1; unsigned delayed_status:1; unsigned ep0_bounced:1; unsigned ep0_expect_in:1; unsigned sysdev_is_parent:1; unsigned has_lpm_erratum:1; unsigned is_utmi_l1_suspend:1; unsigned is_fpga:1; unsigned pending_events:1; unsigned do_fifo_resize:1; unsigned pullups_connected:1; unsigned setup_packet_pending:1; unsigned three_stage_setup:1; unsigned dis_start_transfer_quirk:1; unsigned usb3_lpm_capable:1; unsigned usb2_lpm_disable:1; unsigned usb2_gadget_lpm_disable:1; unsigned needs_full_reinit:1; unsigned disable_scramble_quirk:1; unsigned u2exit_lfps_quirk:1; unsigned u2ss_inp3_quirk:1; unsigned req_p1p2p3_quirk:1; unsigned del_p1p2p3_quirk:1; unsigned del_phy_power_chg_quirk:1; unsigned lfps_filter_quirk:1; unsigned rx_detect_poll_quirk:1; unsigned dis_u3_susphy_quirk:1; unsigned dis_u2_susphy_quirk:1; unsigned dis_enblslpm_quirk:1; unsigned dis_u1_entry_quirk:1; unsigned dis_u2_entry_quirk:1; unsigned dis_rxdet_inp3_quirk:1; unsigned dis_u2_freeclk_exists_quirk:1; unsigned dis_del_phy_power_chg_quirk:1; unsigned dis_tx_ipgap_linecheck_quirk:1; unsigned resume_hs_terminations:1; unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; unsigned gfladj_refclk_lpm_sel:1; unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis:2; unsigned dis_metastability_quirk:1; unsigned dis_split_quirk:1; unsigned enable_usb2_transceiver_delay:1; unsigned async_callbacks:1; unsigned sys_wakeup:1; unsigned wakeup_configured:1; unsigned suspended:1; unsigned susphy_state:1; u16 imod_interval; int max_cfg_eps; int last_fifo_depth; int num_ep_resized; struct dentry *debug_root; u32 gsbuscfg0_reqinfo; u32 wakeup_pending_funcs; };”h]”hXÕstruct dwc3 { struct work_struct drd_work; struct work_struct err_recovery_work; struct dwc3_trb *ep0_trb; void *bounce; u8 *setup_buf; dma_addr_t ep0_trb_addr; dma_addr_t bounce_addr; struct dwc3_request ep0_usb_req; struct completion ep0_in_setup; spinlock_t lock; struct mutex mutex; struct mutex connect_mutex; struct device *dev; struct device *sysdev; struct platform_device *xhci; struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM]; struct dwc3_event_buffer *ev_buf; struct dwc3_ep *eps[DWC3_ENDPOINTS_NUM]; struct usb_gadget *gadget; struct usb_gadget_driver *gadget_driver; const struct dwc3_glue_ops *glue_ops; struct clk *bus_clk; struct clk *ref_clk; struct clk *susp_clk; struct clk *utmi_clk; struct clk *pipe_clk; struct reset_control *reset; struct usb_phy *usb2_phy; struct usb_phy *usb3_phy; struct phy *usb2_generic_phy[DWC3_USB2_MAX_PORTS]; struct phy *usb3_generic_phy[DWC3_USB3_MAX_PORTS]; u8 num_usb2_ports; u8 num_usb3_ports; bool phys_ready; struct ulpi *ulpi; bool ulpi_ready; void __iomem *regs; size_t regs_size; enum usb_dr_mode dr_mode; u32 current_dr_role; u32 desired_dr_role; struct extcon_dev *edev; struct notifier_block edev_nb; enum usb_phy_interface hsphy_mode; struct usb_role_switch *role_sw; enum usb_dr_mode role_switch_default_mode; struct power_supply *usb_psy; const char *usb_psy_name; struct notifier_block psy_nb; struct work_struct vbus_draw_work; unsigned int current_limit; #define DWC3_CURRENT_UNSPECIFIED UINT_MAX; u32 fladj; u32 ref_clk_per; u32 irq_gadget; u32 otg_irq; u32 current_otg_role; u32 desired_otg_role; bool otg_restart_host; u32 u1u2; u32 maximum_speed; u32 gadget_max_speed; enum usb_ssp_rate max_ssp_rate; enum usb_ssp_rate gadget_ssp_rate; u32 ip; #define DWC3_IP 0x5533; #define DWC31_IP 0x3331; #define DWC32_IP 0x3332; #define DWC4_IP 0x3430; u32 revision; #define DWC3_REVISION_ANY 0x0; #define DWC3_REVISION_173A 0x5533173a; #define DWC3_REVISION_175A 0x5533175a; #define DWC3_REVISION_180A 0x5533180a; #define DWC3_REVISION_183A 0x5533183a; #define DWC3_REVISION_185A 0x5533185a; #define DWC3_REVISION_187A 0x5533187a; #define DWC3_REVISION_188A 0x5533188a; #define DWC3_REVISION_190A 0x5533190a; #define DWC3_REVISION_194A 0x5533194a; #define DWC3_REVISION_200A 0x5533200a; #define DWC3_REVISION_202A 0x5533202a; #define DWC3_REVISION_210A 0x5533210a; #define DWC3_REVISION_220A 0x5533220a; #define DWC3_REVISION_230A 0x5533230a; #define DWC3_REVISION_240A 0x5533240a; #define DWC3_REVISION_250A 0x5533250a; #define DWC3_REVISION_260A 0x5533260a; #define DWC3_REVISION_270A 0x5533270a; #define DWC3_REVISION_280A 0x5533280a; #define DWC3_REVISION_290A 0x5533290a; #define DWC3_REVISION_300A 0x5533300a; #define DWC3_REVISION_310A 0x5533310a; #define DWC3_REVISION_320A 0x5533320a; #define DWC3_REVISION_330A 0x5533330a; #define DWC31_REVISION_ANY 0x0; #define DWC31_REVISION_110A 0x3131302a; #define DWC31_REVISION_120A 0x3132302a; #define DWC31_REVISION_160A 0x3136302a; #define DWC31_REVISION_170A 0x3137302a; #define DWC31_REVISION_180A 0x3138302a; #define DWC31_REVISION_190A 0x3139302a; #define DWC31_REVISION_200A 0x3230302a; #define DWC32_REVISION_ANY 0x0; #define DWC32_REVISION_100A 0x3130302a; u32 version_type; #define DWC31_VERSIONTYPE_ANY 0x0; #define DWC31_VERSIONTYPE_EA01 0x65613031; #define DWC31_VERSIONTYPE_EA02 0x65613032; #define DWC31_VERSIONTYPE_EA03 0x65613033; #define DWC31_VERSIONTYPE_EA04 0x65613034; #define DWC31_VERSIONTYPE_EA05 0x65613035; #define DWC31_VERSIONTYPE_EA06 0x65613036; enum dwc3_ep0_next ep0_next_event; enum dwc3_ep0_state ep0state; enum dwc3_link_state link_state; enum dwc3_err_state err_state; u32 err_recovery_count; u16 u2sel; u16 u2pel; u8 u1sel; u8 u1pel; u8 speed; u8 num_eps; struct dwc3_hwparams hwparams; struct debugfs_regset32 *regset; u32 dbg_lsp_select; u8 test_mode; u8 test_mode_nr; u8 lpm_nyet_threshold; u8 hird_threshold; u8 rx_thr_num_pkt; u8 rx_max_burst; u8 tx_thr_num_pkt; u8 tx_max_burst; u8 rx_thr_num_pkt_prd; u8 rx_max_burst_prd; u8 tx_thr_num_pkt_prd; u8 tx_max_burst_prd; u8 tx_fifo_resize_max_num; u8 clear_stall_protocol; u16 num_hc_interrupters; const char *hsphy_interface; unsigned connected:1; unsigned softconnect:1; unsigned delayed_status:1; unsigned ep0_bounced:1; unsigned ep0_expect_in:1; unsigned sysdev_is_parent:1; unsigned has_lpm_erratum:1; unsigned is_utmi_l1_suspend:1; unsigned is_fpga:1; unsigned pending_events:1; unsigned do_fifo_resize:1; unsigned pullups_connected:1; unsigned setup_packet_pending:1; unsigned three_stage_setup:1; unsigned dis_start_transfer_quirk:1; unsigned usb3_lpm_capable:1; unsigned usb2_lpm_disable:1; unsigned usb2_gadget_lpm_disable:1; unsigned needs_full_reinit:1; unsigned disable_scramble_quirk:1; unsigned u2exit_lfps_quirk:1; unsigned u2ss_inp3_quirk:1; unsigned req_p1p2p3_quirk:1; unsigned del_p1p2p3_quirk:1; unsigned del_phy_power_chg_quirk:1; unsigned lfps_filter_quirk:1; unsigned rx_detect_poll_quirk:1; unsigned dis_u3_susphy_quirk:1; unsigned dis_u2_susphy_quirk:1; unsigned dis_enblslpm_quirk:1; unsigned dis_u1_entry_quirk:1; unsigned dis_u2_entry_quirk:1; unsigned dis_rxdet_inp3_quirk:1; unsigned dis_u2_freeclk_exists_quirk:1; unsigned dis_del_phy_power_chg_quirk:1; unsigned dis_tx_ipgap_linecheck_quirk:1; unsigned resume_hs_terminations:1; unsigned ulpi_ext_vbus_drv:1; unsigned parkmode_disable_ss_quirk:1; unsigned parkmode_disable_hs_quirk:1; unsigned gfladj_refclk_lpm_sel:1; unsigned tx_de_emphasis_quirk:1; unsigned tx_de_emphasis:2; unsigned dis_metastability_quirk:1; unsigned dis_split_quirk:1; unsigned enable_usb2_transceiver_delay:1; unsigned async_callbacks:1; unsigned sys_wakeup:1; unsigned wakeup_configured:1; unsigned suspended:1; unsigned susphy_state:1; u16 imod_interval; int max_cfg_eps; int last_fifo_depth; int num_ep_resized; struct dentry *debug_root; u32 gsbuscfg0_reqinfo; u32 wakeup_pending_funcs; };”…”�”}”hj $sbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Múhjê#ubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hj$h]”hŒMembers”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÆhjê#ubj )�”}”(hhh]”(j)�”}”(hŒ.``drd_work`` workqueue used for role swapping ”h]”(j)�”}”(hŒ ``drd_work``”h]”jÄ)�”}”(hj;$h]”hŒdrd_work”…”�”}”(hj=$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj9$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Möhj5$ubj1)�”}”(hhh]”hì)�”}”(hŒ workqueue used for role swapping”h]”hŒ workqueue used for role swapping”…”�”}”(hjT$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jP$h´MöhjQ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj5$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jP$h´Möhj2$ubj)�”}”(hŒC``err_recovery_work`` workqueue used for controller error recovery ”h]”(j)�”}”(hŒ``err_recovery_work``”h]”jÄ)�”}”(hjt$h]”hŒerr_recovery_work”…”�”}”(hjv$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjr$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M÷hjn$ubj1)�”}”(hhh]”hì)�”}”(hŒ,workqueue used for controller error recovery”h]”hŒ,workqueue used for controller error recovery”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‰$h´M÷hjŠ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjn$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‰$h´M÷hj2$ubj)�”}”(hŒ/``ep0_trb`` trb which is used for the ctrl_req ”h]”(j)�”}”(hŒ ``ep0_trb``”h]”jÄ)�”}”(hj­$h]”hŒep0_trb”…”�”}”(hj¯$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj«$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Møhj§$ubj1)�”}”(hhh]”hì)�”}”(hŒ"trb which is used for the ctrl_req”h]”hŒ"trb which is used for the ctrl_req”…”�”}”(hjÆ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÂ$h´MøhjÃ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj§$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÂ$h´Møhj2$ubj)�”}”(hŒ$``bounce`` address of bounce buffer ”h]”(j)�”}”(hŒ ``bounce``”h]”jÄ)�”}”(hjæ$h]”hŒbounce”…”�”}”(hjè$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjä$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mùhjà$ubj1)�”}”(hhh]”hì)�”}”(hŒaddress of bounce buffer”h]”hŒaddress of bounce buffer”…”�”}”(hjÿ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jû$h´Mùhjü$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjà$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jû$h´Mùhj2$ubj)�”}”(hŒ5``setup_buf`` used while precessing STD USB requests ”h]”(j)�”}”(hŒ ``setup_buf``”h]”jÄ)�”}”(hj%h]”hŒ setup_buf”…”�”}”(hj!%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Múhj%ubj1)�”}”(hhh]”hì)�”}”(hŒ&used while precessing STD USB requests”h]”hŒ&used while precessing STD USB requests”…”�”}”(hj8%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4%h´Múhj5%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4%h´Múhj2$ubj)�”}”(hŒ,``ep0_trb_addr`` dma address of **ep0_trb** ”h]”(j)�”}”(hŒ``ep0_trb_addr``”h]”jÄ)�”}”(hjX%h]”hŒ ep0_trb_addr”…”�”}”(hjZ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjV%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MûhjR%ubj1)�”}”(hhh]”hì)�”}”(hŒdma address of **ep0_trb**”h]”(hŒdma address of ”…”�”}”(hjq%h²hh³Nh´Nubj®)�”}”(hŒ **ep0_trb**”h]”hŒep0_trb”…”�”}”(hjy%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjq%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jm%h´Mûhjn%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjR%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jm%h´Mûhj2$ubj)�”}”(hŒ*``bounce_addr`` dma address of **bounce** ”h]”(j)�”}”(hŒ``bounce_addr``”h]”jÄ)�”}”(hjŸ%h]”hŒ bounce_addr”…”�”}”(hj¡%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mühj™%ubj1)�”}”(hhh]”hì)�”}”(hŒdma address of **bounce**”h]”(hŒdma address of ”…”�”}”(hj¸%h²hh³Nh´Nubj®)�”}”(hŒ **bounce**”h]”hŒbounce”…”�”}”(hjÀ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¸%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j´%h´Mühjµ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj™%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´%h´Mühj2$ubj)�”}”(hŒ?``ep0_usb_req`` dummy req used while handling STD USB requests ”h]”(j)�”}”(hŒ``ep0_usb_req``”h]”jÄ)�”}”(hjæ%h]”hŒ ep0_usb_req”…”�”}”(hjè%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjä%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mýhjà%ubj1)�”}”(hhh]”hì)�”}”(hŒ.dummy req used while handling STD USB requests”h]”hŒ.dummy req used while handling STD USB requests”…”�”}”(hjÿ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jû%h´Mýhjü%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjà%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jû%h´Mýhj2$ubj)�”}”(hŒI``ep0_in_setup`` one control transfer is completed and enter setup phase ”h]”(j)�”}”(hŒ``ep0_in_setup``”h]”jÄ)�”}”(hj&h]”hŒ ep0_in_setup”…”�”}”(hj!&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mþhj&ubj1)�”}”(hhh]”hì)�”}”(hŒ7one control transfer is completed and enter setup phase”h]”hŒ7one control transfer is completed and enter setup phase”…”�”}”(hj8&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4&h´Mþhj5&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4&h´Mþhj2$ubj)�”}”(hŒ``lock`` for synchronizing ”h]”(j)�”}”(hŒ``lock``”h]”jÄ)�”}”(hjX&h]”hŒlock”…”�”}”(hjZ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjV&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÿhjR&ubj1)�”}”(hhh]”hì)�”}”(hŒfor synchronizing”h]”hŒfor synchronizing”…”�”}”(hjq&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jm&h´Mÿhjn&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjR&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jm&h´Mÿhj2$ubj)�”}”(hŒ``mutex`` for mode switching ”h]”(j)�”}”(hŒ ``mutex``”h]”jÄ)�”}”(hj‘&h]”hŒmutex”…”�”}”(hj“&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj‹&ubj1)�”}”(hhh]”hì)�”}”(hŒfor mode switching”h]”hŒfor mode switching”…”�”}”(hjª&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¦&h´Mhj§&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‹&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¦&h´Mhj2$ubj)�”}”(hŒ8``connect_mutex`` for the pull-up and err_recovery_work ”h]”(j)�”}”(hŒ``connect_mutex``”h]”jÄ)�”}”(hjÊ&h]”hŒ connect_mutex”…”�”}”(hjÌ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÈ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjÄ&ubj1)�”}”(hhh]”hì)�”}”(hŒ%for the pull-up and err_recovery_work”h]”hŒ%for the pull-up and err_recovery_work”…”�”}”(hjã&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jß&h´Mhjà&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÄ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jß&h´Mhj2$ubj)�”}”(hŒ%``dev`` pointer to our struct device ”h]”(j)�”}”(hŒ``dev``”h]”jÄ)�”}”(hj'h]”hŒdev”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjý&ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to our struct device”h]”hŒpointer to our struct device”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j'h´Mhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjý&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'h´Mhj2$ubj)�”}”(hŒ-``sysdev`` pointer to the DMA-capable device ”h]”(j)�”}”(hŒ ``sysdev``”h]”jÄ)�”}”(hj<'h]”hŒsysdev”…”�”}”(hj>'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj:'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj6'ubj1)�”}”(hhh]”hì)�”}”(hŒ!pointer to the DMA-capable device”h]”hŒ!pointer to the DMA-capable device”…”�”}”(hjU'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQ'h´MhjR'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj6'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jQ'h´Mhj2$ubj)�”}”(hŒ#``xhci`` pointer to our xHCI child ”h]”(j)�”}”(hŒ``xhci``”h]”jÄ)�”}”(hju'h]”hŒxhci”…”�”}”(hjw'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjs'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjo'ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to our xHCI child”h]”hŒpointer to our xHCI child”…”�”}”(hjŽ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠ'h´Mhj‹'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjo'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŠ'h´Mhj2$ubj)�”}”(hŒ;``xhci_resources`` struct resources for our **xhci** child ”h]”(j)�”}”(hŒ``xhci_resources``”h]”jÄ)�”}”(hj®'h]”hŒxhci_resources”…”�”}”(hj°'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¬'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj¨'ubj1)�”}”(hhh]”hì)�”}”(hŒ'struct resources for our **xhci** child”h]”(hŒstruct resources for our ”…”�”}”(hjÇ'h²hh³Nh´Nubj®)�”}”(hŒ**xhci**”h]”hŒxhci”…”�”}”(hjÏ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÇ'ubhŒ child”…”�”}”(hjÇ'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃ'h´MhjÄ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¨'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃ'h´Mhj2$ubj)�”}”(hŒ,``ev_buf`` struct dwc3_event_buffer pointer ”h]”(j)�”}”(hŒ ``ev_buf``”h]”jÄ)�”}”(hjù'h]”hŒev_buf”…”�”}”(hjû'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj÷'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjó'ubj1)�”}”(hhh]”hì)�”}”(hŒ struct dwc3_event_buffer pointer”h]”hŒ struct dwc3_event_buffer pointer”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j(h´Mhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjó'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j(h´Mhj2$ubj)�”}”(hŒ``eps`` endpoint array ”h]”(j)�”}”(hŒ``eps``”h]”jÄ)�”}”(hj2(h]”hŒeps”…”�”}”(hj4(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj0(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj,(ubj1)�”}”(hhh]”hì)�”}”(hŒendpoint array”h]”hŒendpoint array”…”�”}”(hjK(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jG(h´MhjH(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj,(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jG(h´Mhj2$ubj)�”}”(hŒC``gadget`` device side representation of the peripheral controller ”h]”(j)�”}”(hŒ ``gadget``”h]”jÄ)�”}”(hjk(h]”hŒgadget”…”�”}”(hjm(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhji(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhje(ubj1)�”}”(hhh]”hì)�”}”(hŒ7device side representation of the peripheral controller”h]”hŒ7device side representation of the peripheral controller”…”�”}”(hj„(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€(h´Mhj�(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hje(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€(h´Mhj2$ubj)�”}”(hŒ/``gadget_driver`` pointer to the gadget driver ”h]”(j)�”}”(hŒ``gadget_driver``”h]”jÄ)�”}”(hj¤(h]”hŒ gadget_driver”…”�”}”(hj¦(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¢(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjž(ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the gadget driver”h]”hŒpointer to the gadget driver”…”�”}”(hj½(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹(h´M hjº(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjž(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¹(h´M hj2$ubj)�”}”(hŒD``glue_ops`` Vendor callbacks for flattened device implementations. ”h]”(j)�”}”(hŒ ``glue_ops``”h]”jÄ)�”}”(hjÝ(h]”hŒglue_ops”…”�”}”(hjß(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÛ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hj×(ubj1)�”}”(hhh]”hì)�”}”(hŒ6Vendor callbacks for flattened device implementations.”h]”hŒ6Vendor callbacks for flattened device implementations.”…”�”}”(hjö(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jò(h´M hjó(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj×(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jò(h´M hj2$ubj)�”}”(hŒ.``bus_clk`` clock for accessing the registers ”h]”(j)�”}”(hŒ ``bus_clk``”h]”jÄ)�”}”(hj)h]”hŒbus_clk”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hj)ubj1)�”}”(hhh]”hì)�”}”(hŒ!clock for accessing the registers”h]”hŒ!clock for accessing the registers”…”�”}”(hj/)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j+)h´M hj,)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j+)h´M hj2$ubj)�”}”(hŒ``ref_clk`` reference clock ”h]”(j)�”}”(hŒ ``ref_clk``”h]”jÄ)�”}”(hjO)h]”hŒref_clk”…”�”}”(hjQ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjM)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjI)ubj1)�”}”(hhh]”hì)�”}”(hŒreference clock”h]”hŒreference clock”…”�”}”(hjh)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jd)h´M hje)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjI)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jd)h´M hj2$ubj)�”}”(hŒC``susp_clk`` clock used when the SS phy is in low power (S3) state ”h]”(j)�”}”(hŒ ``susp_clk``”h]”jÄ)�”}”(hjˆ)h]”hŒsusp_clk”…”�”}”(hjŠ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj†)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hj‚)ubj1)�”}”(hhh]”hì)�”}”(hŒ5clock used when the SS phy is in low power (S3) state”h]”hŒ5clock used when the SS phy is in low power (S3) state”…”�”}”(hj¡)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�)h´M hjž)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‚)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�)h´M hj2$ubj)�”}”(hŒ3``utmi_clk`` clock used for USB2 PHY communication ”h]”(j)�”}”(hŒ ``utmi_clk``”h]”jÄ)�”}”(hjÁ)h]”hŒutmi_clk”…”�”}”(hjÃ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¿)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj»)ubj1)�”}”(hhh]”hì)�”}”(hŒ%clock used for USB2 PHY communication”h]”hŒ%clock used for USB2 PHY communication”…”�”}”(hjÚ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÖ)h´Mhj×)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj»)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖ)h´Mhj2$ubj)�”}”(hŒ3``pipe_clk`` clock used for USB3 PHY communication ”h]”(j)�”}”(hŒ ``pipe_clk``”h]”jÄ)�”}”(hjú)h]”hŒpipe_clk”…”�”}”(hjü)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjø)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjô)ubj1)�”}”(hhh]”hì)�”}”(hŒ%clock used for USB3 PHY communication”h]”hŒ%clock used for USB3 PHY communication”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*h´Mhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjô)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j*h´Mhj2$ubj)�”}”(hŒ``reset`` reset control ”h]”(j)�”}”(hŒ ``reset``”h]”jÄ)�”}”(hj3*h]”hŒreset”…”�”}”(hj5*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj1*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj-*ubj1)�”}”(hhh]”hì)�”}”(hŒ reset control”h]”hŒ reset control”…”�”}”(hjL*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jH*h´MhjI*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj-*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jH*h´Mhj2$ubj)�”}”(hŒ!``usb2_phy`` pointer to USB2 PHY ”h]”(j)�”}”(hŒ ``usb2_phy``”h]”jÄ)�”}”(hjl*h]”hŒusb2_phy”…”�”}”(hjn*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M3hjf*ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to USB2 PHY”h]”hŒpointer to USB2 PHY”…”�”}”(hj…*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�*h´M3hj‚*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjf*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�*h´M3hj2$ubj)�”}”(hŒ!``usb3_phy`` pointer to USB3 PHY ”h]”(j)�”}”(hŒ ``usb3_phy``”h]”jÄ)�”}”(hj¥*h]”hŒusb3_phy”…”�”}”(hj§*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj£*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”•h´M4hjŸ*ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to USB3 PHY”h]”hŒpointer to USB3 PHY”…”�”}”(hj¾*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jº*h´M4hj»*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŸ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jº*h´M4hj2$ubj)�”}”(hŒ3``usb2_generic_phy`` pointer to array of USB2 PHYs ”h]”(j)�”}”(hŒ``usb2_generic_phy``”h]”jÄ)�”}”(hjÞ*h]”hŒusb2_generic_phy”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÜ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M5hjØ*ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to array of USB2 PHYs”h]”hŒpointer to array of USB2 PHYs”…”�”}”(hj÷*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jó*h´M5hjô*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjØ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jó*h´M5hj2$ubj)�”}”(hŒ3``usb3_generic_phy`` pointer to array of USB3 PHYs ”h]”(j)�”}”(hŒ``usb3_generic_phy``”h]”jÄ)�”}”(hj+h]”hŒusb3_generic_phy”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M6hj+ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to array of USB3 PHYs”h]”hŒpointer to array of USB3 PHYs”…”�”}”(hj0+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,+h´M6hj-+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,+h´M6hj2$ubj)�”}”(hŒ(``num_usb2_ports`` number of USB2 ports ”h]”(j)�”}”(hŒ``num_usb2_ports``”h]”jÄ)�”}”(hjP+h]”hŒnum_usb2_ports”…”�”}”(hjR+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjN+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M7hjJ+ubj1)�”}”(hhh]”hì)�”}”(hŒnumber of USB2 ports”h]”hŒnumber of USB2 ports”…”�”}”(hji+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³je+h´M7hjf+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjJ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³je+h´M7hj2$ubj)�”}”(hŒ(``num_usb3_ports`` number of USB3 ports ”h]”(j)�”}”(hŒ``num_usb3_ports``”h]”jÄ)�”}”(hj‰+h]”hŒnum_usb3_ports”…”�”}”(hj‹+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‡+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M8hjƒ+ubj1)�”}”(hhh]”hì)�”}”(hŒnumber of USB3 ports”h]”hŒnumber of USB3 ports”…”�”}”(hj¢+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jž+h´M8hjŸ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjƒ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jž+h´M8hj2$ubj)�”}”(hŒ4``phys_ready`` flag to indicate that PHYs are ready ”h]”(j)�”}”(hŒ``phys_ready``”h]”jÄ)�”}”(hjÂ+h]”hŒ phys_ready”…”�”}”(hjÄ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÀ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M9hj¼+ubj1)�”}”(hhh]”hì)�”}”(hŒ$flag to indicate that PHYs are ready”h]”hŒ$flag to indicate that PHYs are ready”…”�”}”(hjÛ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j×+h´M9hjØ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¼+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j×+h´M9hj2$ubj)�”}”(hŒ#``ulpi`` pointer to ulpi interface ”h]”(j)�”}”(hŒ``ulpi``”h]”jÄ)�”}”(hjû+h]”hŒulpi”…”�”}”(hjý+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjù+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M:hjõ+ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to ulpi interface”h]”hŒpointer to ulpi interface”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,h´M:hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjõ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,h´M:hj2$ubj)�”}”(hŒ9``ulpi_ready`` flag to indicate that ULPI is initialized ”h]”(j)�”}”(hŒ``ulpi_ready``”h]”jÄ)�”}”(hj4,h]”hŒ ulpi_ready”…”�”}”(hj6,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj2,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M;hj.,ubj1)�”}”(hhh]”hì)�”}”(hŒ)flag to indicate that ULPI is initialized”h]”hŒ)flag to indicate that ULPI is initialized”…”�”}”(hjM,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jI,h´M;hjJ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj.,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jI,h´M;hj2$ubj)�”}”(hŒ(``regs`` base address for our registers ”h]”(j)�”}”(hŒ``regs``”h]”jÄ)�”}”(hjm,h]”hŒregs”…”�”}”(hjo,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjk,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjg,ubj1)�”}”(hhh]”hì)�”}”(hŒbase address for our registers”h]”hŒbase address for our registers”…”�”}”(hj†,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‚,h´Mhjƒ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjg,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‚,h´Mhj2$ubj)�”}”(hŒ!``regs_size`` address space size ”h]”(j)�”}”(hŒ ``regs_size``”h]”jÄ)�”}”(hj¦,h]”hŒ regs_size”…”�”}”(hj¨,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¤,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj ,ubj1)�”}”(hhh]”hì)�”}”(hŒaddress space size”h]”hŒaddress space size”…”�”}”(hj¿,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j»,h´Mhj¼,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j»,h´Mhj2$ubj)�”}”(hŒ(``dr_mode`` requested mode of operation ”h]”(j)�”}”(hŒ ``dr_mode``”h]”jÄ)�”}”(hjß,h]”hŒdr_mode”…”�”}”(hjá,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÝ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M#hjÙ,ubj1)�”}”(hhh]”hì)�”}”(hŒrequested mode of operation”h]”hŒrequested mode of operation”…”�”}”(hjø,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jô,h´M#hjõ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÙ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jô,h´M#hj2$ubj)�”}”(hŒE``current_dr_role`` current role of operation when in dual-role mode ”h]”(j)�”}”(hŒ``current_dr_role``”h]”jÄ)�”}”(hj-h]”hŒcurrent_dr_role”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M$hj-ubj1)�”}”(hhh]”hì)�”}”(hŒ0current role of operation when in dual-role mode”h]”hŒ0current role of operation when in dual-role mode”…”�”}”(hj1-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j--h´M$hj.-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j--h´M$hj2$ubj)�”}”(hŒE``desired_dr_role`` desired role of operation when in dual-role mode ”h]”(j)�”}”(hŒ``desired_dr_role``”h]”jÄ)�”}”(hjQ-h]”hŒdesired_dr_role”…”�”}”(hjS-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjO-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M%hjK-ubj1)�”}”(hhh]”hì)�”}”(hŒ0desired role of operation when in dual-role mode”h]”hŒ0desired role of operation when in dual-role mode”…”�”}”(hjj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jf-h´M%hjg-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjK-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jf-h´M%hj2$ubj)�”}”(hŒ``edev`` extcon handle ”h]”(j)�”}”(hŒ``edev``”h]”jÄ)�”}”(hjŠ-h]”hŒedev”…”�”}”(hjŒ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjˆ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M&hj„-ubj1)�”}”(hhh]”hì)�”}”(hŒ extcon handle”h]”hŒ extcon handle”…”�”}”(hj£-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸ-h´M&hj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj„-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŸ-h´M&hj2$ubj)�”}”(hŒ``edev_nb`` extcon notifier ”h]”(j)�”}”(hŒ ``edev_nb``”h]”jÄ)�”}”(hjÃ-h]”hŒedev_nb”…”�”}”(hjÅ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÁ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M'hj½-ubj1)�”}”(hhh]”hì)�”}”(hŒextcon notifier”h]”hŒextcon notifier”…”�”}”(hjÜ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jØ-h´M'hjÙ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj½-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jØ-h´M'hj2$ubj)�”}”(hŒk``hsphy_mode`` UTMI phy mode, one of following: - USBPHY_INTERFACE_MODE_UTMI - USBPHY_INTERFACE_MODE_UTMIW ”h]”(j)�”}”(hŒ``hsphy_mode``”h]”jÄ)�”}”(hjü-h]”hŒ hsphy_mode”…”�”}”(hjþ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjú-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M*hjö-ubj1)�”}”(hhh]”hì)�”}”(hŒ[UTMI phy mode, one of following: - USBPHY_INTERFACE_MODE_UTMI - USBPHY_INTERFACE_MODE_UTMIW”h]”hŒ[UTMI phy mode, one of following: - USBPHY_INTERFACE_MODE_UTMI - USBPHY_INTERFACE_MODE_UTMIW”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M(hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjö-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j.h´M*hj2$ubj)�”}”(hŒ#``role_sw`` usb_role_switch handle ”h]”(j)�”}”(hŒ ``role_sw``”h]”jÄ)�”}”(hj6.h]”hŒrole_sw”…”�”}”(hj8.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj4.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M+hj0.ubj1)�”}”(hhh]”hì)�”}”(hŒusb_role_switch handle”h]”hŒusb_role_switch handle”…”�”}”(hjO.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jK.h´M+hjL.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj0.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jK.h´M+hj2$ubj)�”}”(hŒc``role_switch_default_mode`` default operation mode of controller while usb role is USB_ROLE_NONE. ”h]”(j)�”}”(hŒ``role_switch_default_mode``”h]”jÄ)�”}”(hjo.h]”hŒrole_switch_default_mode”…”�”}”(hjq.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjm.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M-hji.ubj1)�”}”(hhh]”hì)�”}”(hŒEdefault operation mode of controller while usb role is USB_ROLE_NONE.”h]”hŒEdefault operation mode of controller while usb role is USB_ROLE_NONE.”…”�”}”(hjˆ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M,hj….ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hji.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„.h´M-hj2$ubj)�”}”(hŒ/``usb_psy`` pointer to power supply interface. ”h]”(j)�”}”(hŒ ``usb_psy``”h]”jÄ)�”}”(hj©.h]”hŒusb_psy”…”�”}”(hj«.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj§.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M.hj£.ubj1)�”}”(hhh]”hì)�”}”(hŒ"pointer to power supply interface.”h]”hŒ"pointer to power supply interface.”…”�”}”(hjÂ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾.h´M.hj¿.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj£.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¾.h´M.hj2$ubj)�”}”(hŒ.``usb_psy_name`` name of the USB power supply ”h]”(j)�”}”(hŒ``usb_psy_name``”h]”jÄ)�”}”(hjâ.h]”hŒ usb_psy_name”…”�”}”(hjä.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjà.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M/hjÜ.ubj1)�”}”(hhh]”hì)�”}”(hŒname of the USB power supply”h]”hŒname of the USB power supply”…”�”}”(hjû.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j÷.h´M/hjø.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÜ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j÷.h´M/hj2$ubj)�”}”(hŒ'``psy_nb`` power supply notifier block ”h]”(j)�”}”(hŒ ``psy_nb``”h]”jÄ)�”}”(hj/h]”hŒpsy_nb”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M0hj/ubj1)�”}”(hhh]”hì)�”}”(hŒpower supply notifier block”h]”hŒpower supply notifier block”…”�”}”(hj4/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0/h´M0hj1/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0/h´M0hj2$ubj)�”}”(hŒ6``vbus_draw_work`` Work to set the vbus drawing limit ”h]”(j)�”}”(hŒ``vbus_draw_work``”h]”jÄ)�”}”(hjT/h]”hŒvbus_draw_work”…”�”}”(hjV/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjR/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M1hjN/ubj1)�”}”(hhh]”hì)�”}”(hŒ"Work to set the vbus drawing limit”h]”hŒ"Work to set the vbus drawing limit”…”�”}”(hjm/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ji/h´M1hjj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjN/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji/h´M1hj2$ubj)�”}”(hŒG``current_limit`` How much current to draw from vbus, in milliAmperes. ”h]”(j)�”}”(hŒ``current_limit``”h]”jÄ)�”}”(hj�/h]”hŒ current_limit”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‹/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M2hj‡/ubj1)�”}”(hhh]”hì)�”}”(hŒ4How much current to draw from vbus, in milliAmperes.”h]”hŒ4How much current to draw from vbus, in milliAmperes.”…”�”}”(hj¦/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¢/h´M2hj£/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‡/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¢/h´M2hj2$ubj)�”}”(hŒ"``fladj`` frame length adjustment ”h]”(j)�”}”(hŒ ``fladj``”h]”jÄ)�”}”(hjÆ/h]”hŒfladj”…”�”}”(hjÈ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÄ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjÀ/ubj1)�”}”(hhh]”hì)�”}”(hŒframe length adjustment”h]”hŒframe length adjustment”…”�”}”(hjß/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÛ/h´MhjÜ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÀ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÛ/h´Mhj2$ubj)�”}”(hŒ5``ref_clk_per`` reference clock period configuration ”h]”(j)�”}”(hŒ``ref_clk_per``”h]”jÄ)�”}”(hjÿ/h]”hŒ ref_clk_per”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjý/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjù/ubj1)�”}”(hhh]”hì)�”}”(hŒ$reference clock period configuration”h]”hŒ$reference clock period configuration”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j0h´Mhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjù/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0h´Mhj2$ubj)�”}”(hŒ2``irq_gadget`` peripheral controller's IRQ number ”h]”(j)�”}”(hŒ``irq_gadget``”h]”jÄ)�”}”(hj80h]”hŒ irq_gadget”…”�”}”(hj:0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj60ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj20ubj1)�”}”(hhh]”hì)�”}”(hŒ"peripheral controller's IRQ number”h]”hŒ$peripheral controller’s IRQ number”…”�”}”(hjQ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jM0h´MhjN0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj20ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jM0h´Mhj2$ubj)�”}”(hŒ$``otg_irq`` IRQ number for OTG IRQs ”h]”(j)�”}”(hŒ ``otg_irq``”h]”jÄ)�”}”(hjq0h]”hŒotg_irq”…”�”}”(hjs0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjo0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjk0ubj1)�”}”(hhh]”hì)�”}”(hŒIRQ number for OTG IRQs”h]”hŒIRQ number for OTG IRQs”…”�”}”(hjŠ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j†0h´Mhj‡0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjk0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j†0h´Mhj2$ubj)�”}”(hŒI``current_otg_role`` current role of operation while using the OTG block ”h]”(j)�”}”(hŒ``current_otg_role``”h]”jÄ)�”}”(hjª0h]”hŒcurrent_otg_role”…”�”}”(hj¬0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¨0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj¤0ubj1)�”}”(hhh]”hì)�”}”(hŒ3current role of operation while using the OTG block”h]”hŒ3current role of operation while using the OTG block”…”�”}”(hjÃ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¿0h´MhjÀ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¤0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¿0h´Mhj2$ubj)�”}”(hŒI``desired_otg_role`` desired role of operation while using the OTG block ”h]”(j)�”}”(hŒ``desired_otg_role``”h]”jÄ)�”}”(hjã0h]”hŒdesired_otg_role”…”�”}”(hjå0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjá0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjÝ0ubj1)�”}”(hhh]”hì)�”}”(hŒ3desired role of operation while using the OTG block”h]”hŒ3desired role of operation while using the OTG block”…”�”}”(hjü0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jø0h´Mhjù0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÝ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jø0h´Mhj2$ubj)�”}”(hŒD``otg_restart_host`` flag that OTG controller needs to restart host ”h]”(j)�”}”(hŒ``otg_restart_host``”h]”jÄ)�”}”(hj1h]”hŒotg_restart_host”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj1ubj1)�”}”(hhh]”hì)�”}”(hŒ.flag that OTG controller needs to restart host”h]”hŒ.flag that OTG controller needs to restart host”…”�”}”(hj51h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j11h´Mhj21ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j11h´Mhj2$ubj)�”}”(hŒ6``u1u2`` only used on revisions <1.83a for workaround ”h]”(j)�”}”(hŒ``u1u2``”h]”jÄ)�”}”(hjU1h]”hŒu1u2”…”�”}”(hjW1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjS1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjO1ubj1)�”}”(hhh]”hì)�”}”(hŒ,only used on revisions <1.83a for workaround”h]”hŒ,only used on revisions <1.83a for workaround”…”�”}”(hjn1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jj1h´Mhjk1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjO1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jj1h´Mhj2$ubj)�”}”(hŒH``maximum_speed`` maximum speed requested (mainly for testing purposes) ”h]”(j)�”}”(hŒ``maximum_speed``”h]”jÄ)�”}”(hjŽ1h]”hŒ maximum_speed”…”�”}”(hj�1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŒ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjˆ1ubj1)�”}”(hhh]”hì)�”}”(hŒ5maximum speed requested (mainly for testing purposes)”h]”hŒ5maximum speed requested (mainly for testing purposes)”…”�”}”(hj§1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j£1h´Mhj¤1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjˆ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£1h´Mhj2$ubj)�”}”(hŒ4``gadget_max_speed`` maximum gadget speed requested ”h]”(j)�”}”(hŒ``gadget_max_speed``”h]”jÄ)�”}”(hjÇ1h]”hŒgadget_max_speed”…”�”}”(hjÉ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÅ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjÁ1ubj1)�”}”(hhh]”hì)�”}”(hŒmaximum gadget speed requested”h]”hŒmaximum gadget speed requested”…”�”}”(hjà1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÜ1h´MhjÝ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÁ1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÜ1h´Mhj2$ubj)�”}”(hŒG``max_ssp_rate`` SuperSpeed Plus maximum signaling rate and lane count ”h]”(j)�”}”(hŒ``max_ssp_rate``”h]”jÄ)�”}”(hj2h]”hŒ max_ssp_rate”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjþ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjú1ubj1)�”}”(hhh]”hì)�”}”(hŒ5SuperSpeed Plus maximum signaling rate and lane count”h]”hŒ5SuperSpeed Plus maximum signaling rate and lane count”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j2h´Mhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjú1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j2h´Mhj2$ubj)�”}”(hŒe``gadget_ssp_rate`` Gadget driver's maximum supported SuperSpeed Plus signaling rate and lane count. ”h]”(j)�”}”(hŒ``gadget_ssp_rate``”h]”jÄ)�”}”(hj92h]”hŒgadget_ssp_rate”…”�”}”(hj;2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj72ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj32ubj1)�”}”(hhh]”hì)�”}”(hŒPGadget driver's maximum supported SuperSpeed Plus signaling rate and lane count.”h]”hŒRGadget driver’s maximum supported SuperSpeed Plus signaling rate and lane count.”…”�”}”(hjR2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjO2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj32ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jN2h´Mhj2$ubj)�”}”(hŒ``ip`` controller's ID ”h]”(j)�”}”(hŒ``ip``”h]”jÄ)�”}”(hjs2h]”hŒip”…”�”}”(hju2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjm2ubj1)�”}”(hhh]”hì)�”}”(hŒcontroller's ID”h]”hŒcontroller’s ID”…”�”}”(hjŒ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆ2h´M hj‰2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjm2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jˆ2h´M hj2$ubj)�”}”(hŒ+``revision`` controller's version of an IP ”h]”(j)�”}”(hŒ ``revision``”h]”jÄ)�”}”(hj¬2h]”hŒrevision”…”�”}”(hj®2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjª2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M!hj¦2ubj1)�”}”(hhh]”hì)�”}”(hŒcontroller's version of an IP”h]”hŒcontroller’s version of an IP”…”�”}”(hjÅ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÁ2h´M!hjÂ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¦2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁ2h´M!hj2$ubj)�”}”(hŒL``version_type`` VERSIONTYPE register contents, a sub release of a revision ”h]”(j)�”}”(hŒ``version_type``”h]”jÄ)�”}”(hjå2h]”hŒ version_type”…”�”}”(hjç2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjã2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M"hjß2ubj1)�”}”(hhh]”hì)�”}”(hŒ:VERSIONTYPE register contents, a sub release of a revision”h]”hŒ:VERSIONTYPE register contents, a sub release of a revision”…”�”}”(hjþ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jú2h´M"hjû2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjß2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jú2h´M"hj2$ubj)�”}”(hŒ0``ep0_next_event`` hold the next expected event ”h]”(j)�”}”(hŒ``ep0_next_event``”h]”jÄ)�”}”(hj3h]”hŒep0_next_event”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MAhj3ubj1)�”}”(hhh]”hì)�”}”(hŒhold the next expected event”h]”hŒhold the next expected event”…”�”}”(hj73h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j33h´MAhj43ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j33h´MAhj2$ubj)�”}”(hŒ$``ep0state`` state of endpoint zero ”h]”(j)�”}”(hŒ ``ep0state``”h]”jÄ)�”}”(hjW3h]”hŒep0state”…”�”}”(hjY3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjU3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MBhjQ3ubj1)�”}”(hhh]”hì)�”}”(hŒstate of endpoint zero”h]”hŒstate of endpoint zero”…”�”}”(hjp3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jl3h´MBhjm3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjQ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jl3h´MBhj2$ubj)�”}”(hŒ``link_state`` link state ”h]”(j)�”}”(hŒ``link_state``”h]”jÄ)�”}”(hj�3h]”hŒ link_state”…”�”}”(hj’3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŽ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MChjŠ3ubj1)�”}”(hhh]”hì)�”}”(hŒ link state”h]”hŒ link state”…”�”}”(hj©3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¥3h´MChj¦3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŠ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¥3h´MChj2$ubj)�”}”(hŒ,``err_state`` current error recovery state. ”h]”(j)�”}”(hŒ ``err_state``”h]”jÄ)�”}”(hjÉ3h]”hŒ err_state”…”�”}”(hjË3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÇ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MDhjÃ3ubj1)�”}”(hhh]”hì)�”}”(hŒcurrent error recovery state.”h]”hŒcurrent error recovery state.”…”�”}”(hjâ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÞ3h´MDhjß3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÃ3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞ3h´MDhj2$ubj)�”}”(hŒ|``err_recovery_count`` number of consecutive error recovery attempts until confirmed healthy and reset to 0 on reset event. ”h]”(j)�”}”(hŒ``err_recovery_count``”h]”jÄ)�”}”(hj4h]”hŒerr_recovery_count”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MFhjü3ubj1)�”}”(hhh]”hì)�”}”(hŒdnumber of consecutive error recovery attempts until confirmed healthy and reset to 0 on reset event.”h]”hŒdnumber of consecutive error recovery attempts until confirmed healthy and reset to 0 on reset event.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MEhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjü3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4h´MFhj2$ubj)�”}”(hŒ*``u2sel`` parameter from Set SEL request. ”h]”(j)�”}”(hŒ ``u2sel``”h]”jÄ)�”}”(hj<4h]”hŒu2sel”…”�”}”(hj>4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj:4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M<hj64ubj1)�”}”(hhh]”hì)�”}”(hŒparameter from Set SEL request.”h]”hŒparameter from Set SEL request.”…”�”}”(hjU4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jQ4h´M<hjR4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj64ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jQ4h´M<hj2$ubj)�”}”(hŒ*``u2pel`` parameter from Set SEL request. ”h]”(j)�”}”(hŒ ``u2pel``”h]”jÄ)�”}”(hju4h]”hŒu2pel”…”�”}”(hjw4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjs4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M=hjo4ubj1)�”}”(hhh]”hì)�”}”(hŒparameter from Set SEL request.”h]”hŒparameter from Set SEL request.”…”�”}”(hjŽ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŠ4h´M=hj‹4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjo4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŠ4h´M=hj2$ubj)�”}”(hŒ*``u1sel`` parameter from Set SEL request. ”h]”(j)�”}”(hŒ ``u1sel``”h]”jÄ)�”}”(hj®4h]”hŒu1sel”…”�”}”(hj°4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¬4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M>hj¨4ubj1)�”}”(hhh]”hì)�”}”(hŒparameter from Set SEL request.”h]”hŒparameter from Set SEL request.”…”�”}”(hjÇ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÃ4h´M>hjÄ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¨4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÃ4h´M>hj2$ubj)�”}”(hŒ*``u1pel`` parameter from Set SEL request. ”h]”(j)�”}”(hŒ ``u1pel``”h]”jÄ)�”}”(hjç4h]”hŒu1pel”…”�”}”(hjé4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjå4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M?hjá4ubj1)�”}”(hhh]”hì)�”}”(hŒparameter from Set SEL request.”h]”hŒparameter from Set SEL request.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jü4h´M?hjý4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjá4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jü4h´M?hj2$ubj)�”}”(hŒ0``speed`` device speed (super, high, full, low) ”h]”(j)�”}”(hŒ ``speed``”h]”jÄ)�”}”(hj 5h]”hŒspeed”…”�”}”(hj"5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MGhj5ubj1)�”}”(hhh]”hì)�”}”(hŒ%device speed (super, high, full, low)”h]”hŒ%device speed (super, high, full, low)”…”�”}”(hj95h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j55h´MGhj65ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j55h´MGhj2$ubj)�”}”(hŒ ``num_eps`` number of endpoints ”h]”(j)�”}”(hŒ ``num_eps``”h]”jÄ)�”}”(hjY5h]”hŒnum_eps”…”�”}”(hj[5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjW5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M@hjS5ubj1)�”}”(hhh]”hì)�”}”(hŒnumber of endpoints”h]”hŒnumber of endpoints”…”�”}”(hjr5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jn5h´M@hjo5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjS5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jn5h´M@hj2$ubj)�”}”(hŒ(``hwparams`` copy of hwparams registers ”h]”(j)�”}”(hŒ ``hwparams``”h]”jÄ)�”}”(hj’5h]”hŒhwparams”…”�”}”(hj”5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MHhjŒ5ubj1)�”}”(hhh]”hì)�”}”(hŒcopy of hwparams registers”h]”hŒcopy of hwparams registers”…”�”}”(hj«5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j§5h´MHhj¨5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŒ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j§5h´MHhj2$ubj)�”}”(hŒ+``regset`` debugfs pointer to regdump file ”h]”(j)�”}”(hŒ ``regset``”h]”jÄ)�”}”(hjË5h]”hŒregset”…”�”}”(hjÍ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÉ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MIhjÅ5ubj1)�”}”(hhh]”hì)�”}”(hŒdebugfs pointer to regdump file”h]”hŒdebugfs pointer to regdump file”…”�”}”(hjä5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jà5h´MIhjá5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÅ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jà5h´MIhj2$ubj)�”}”(hŒ<``dbg_lsp_select`` current debug lsp mux register selection ”h]”(j)�”}”(hŒ``dbg_lsp_select``”h]”jÄ)�”}”(hj6h]”hŒdbg_lsp_select”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MJhjþ5ubj1)�”}”(hhh]”hì)�”}”(hŒ(current debug lsp mux register selection”h]”hŒ(current debug lsp mux register selection”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j6h´MJhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjþ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j6h´MJhj2$ubj)�”}”(hŒ7``test_mode`` true when we're entering a USB test mode ”h]”(j)�”}”(hŒ ``test_mode``”h]”jÄ)�”}”(hj=6h]”hŒ test_mode”…”�”}”(hj?6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj;6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MKhj76ubj1)�”}”(hhh]”hì)�”}”(hŒ(true when we're entering a USB test mode”h]”hŒ*true when we’re entering a USB test mode”…”�”}”(hjV6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jR6h´MKhjS6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj76ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jR6h´MKhj2$ubj)�”}”(hŒ'``test_mode_nr`` test feature selector ”h]”(j)�”}”(hŒ``test_mode_nr``”h]”jÄ)�”}”(hjv6h]”hŒ test_mode_nr”…”�”}”(hjx6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjt6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MLhjp6ubj1)�”}”(hhh]”hì)�”}”(hŒtest feature selector”h]”hŒtest feature selector”…”�”}”(hj�6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‹6h´MLhjŒ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjp6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‹6h´MLhj2$ubj)�”}”(hŒ3``lpm_nyet_threshold`` LPM NYET response threshold ”h]”(j)�”}”(hŒ``lpm_nyet_threshold``”h]”jÄ)�”}”(hj¯6h]”hŒlpm_nyet_threshold”…”�”}”(hj±6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj­6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MMhj©6ubj1)�”}”(hhh]”hì)�”}”(hŒLPM NYET response threshold”h]”hŒLPM NYET response threshold”…”�”}”(hjÈ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÄ6h´MMhjÅ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj©6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÄ6h´MMhj2$ubj)�”}”(hŒ"``hird_threshold`` HIRD threshold ”h]”(j)�”}”(hŒ``hird_threshold``”h]”jÄ)�”}”(hjè6h]”hŒhird_threshold”…”�”}”(hjê6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjæ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MNhjâ6ubj1)�”}”(hhh]”hì)�”}”(hŒHIRD threshold”h]”hŒHIRD threshold”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jý6h´MNhjþ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjâ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jý6h´MNhj2$ubj)�”}”(hŒ,``rx_thr_num_pkt`` USB receive packet count ”h]”(j)�”}”(hŒ``rx_thr_num_pkt``”h]”jÄ)�”}”(hj!7h]”hŒrx_thr_num_pkt”…”�”}”(hj#7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MOhj7ubj1)�”}”(hhh]”hì)�”}”(hŒUSB receive packet count”h]”hŒUSB receive packet count”…”�”}”(hj:7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j67h´MOhj77ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j67h´MOhj2$ubj)�”}”(hŒ,``rx_max_burst`` max USB receive burst size ”h]”(j)�”}”(hŒ``rx_max_burst``”h]”jÄ)�”}”(hjZ7h]”hŒ rx_max_burst”…”�”}”(hj\7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjX7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MPhjT7ubj1)�”}”(hhh]”hì)�”}”(hŒmax USB receive burst size”h]”hŒmax USB receive burst size”…”�”}”(hjs7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jo7h´MPhjp7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjT7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jo7h´MPhj2$ubj)�”}”(hŒ-``tx_thr_num_pkt`` USB transmit packet count ”h]”(j)�”}”(hŒ``tx_thr_num_pkt``”h]”jÄ)�”}”(hj“7h]”hŒtx_thr_num_pkt”…”�”}”(hj•7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‘7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MQhj�7ubj1)�”}”(hhh]”hì)�”}”(hŒUSB transmit packet count”h]”hŒUSB transmit packet count”…”�”}”(hj¬7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¨7h´MQhj©7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj�7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¨7h´MQhj2$ubj)�”}”(hŒ-``tx_max_burst`` max USB transmit burst size ”h]”(j)�”}”(hŒ``tx_max_burst``”h]”jÄ)�”}”(hjÌ7h]”hŒ tx_max_burst”…”�”}”(hjÎ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÊ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MRhjÆ7ubj1)�”}”(hhh]”hì)�”}”(hŒmax USB transmit burst size”h]”hŒmax USB transmit burst size”…”�”}”(hjå7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³já7h´MRhjâ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÆ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³já7h´MRhj2$ubj)�”}”(hŒ9``rx_thr_num_pkt_prd`` periodic ESS receive packet count ”h]”(j)�”}”(hŒ``rx_thr_num_pkt_prd``”h]”jÄ)�”}”(hj8h]”hŒrx_thr_num_pkt_prd”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MShjÿ7ubj1)�”}”(hhh]”hì)�”}”(hŒ!periodic ESS receive packet count”h]”hŒ!periodic ESS receive packet count”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j8h´MShj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÿ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8h´MShj2$ubj)�”}”(hŒ9``rx_max_burst_prd`` max periodic ESS receive burst size ”h]”(j)�”}”(hŒ``rx_max_burst_prd``”h]”jÄ)�”}”(hj>8h]”hŒrx_max_burst_prd”…”�”}”(hj@8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj<8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MThj88ubj1)�”}”(hhh]”hì)�”}”(hŒ#max periodic ESS receive burst size”h]”hŒ#max periodic ESS receive burst size”…”�”}”(hjW8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jS8h´MThjT8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj88ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jS8h´MThj2$ubj)�”}”(hŒ:``tx_thr_num_pkt_prd`` periodic ESS transmit packet count ”h]”(j)�”}”(hŒ``tx_thr_num_pkt_prd``”h]”jÄ)�”}”(hjw8h]”hŒtx_thr_num_pkt_prd”…”�”}”(hjy8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhju8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MUhjq8ubj1)�”}”(hhh]”hì)�”}”(hŒ"periodic ESS transmit packet count”h]”hŒ"periodic ESS transmit packet count”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŒ8h´MUhj�8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjq8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒ8h´MUhj2$ubj)�”}”(hŒ:``tx_max_burst_prd`` max periodic ESS transmit burst size ”h]”(j)�”}”(hŒ``tx_max_burst_prd``”h]”jÄ)�”}”(hj°8h]”hŒtx_max_burst_prd”…”�”}”(hj²8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj®8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MVhjª8ubj1)�”}”(hhh]”hì)�”}”(hŒ$max periodic ESS transmit burst size”h]”hŒ$max periodic ESS transmit burst size”…”�”}”(hjÉ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÅ8h´MVhjÆ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjª8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅ8h´MVhj2$ubj)�”}”(hŒN``tx_fifo_resize_max_num`` max number of fifos allocated during txfifo resize ”h]”(j)�”}”(hŒ``tx_fifo_resize_max_num``”h]”jÄ)�”}”(hjé8h]”hŒtx_fifo_resize_max_num”…”�”}”(hjë8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjç8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MWhjã8ubj1)�”}”(hhh]”hì)�”}”(hŒ2max number of fifos allocated during txfifo resize”h]”hŒ2max number of fifos allocated during txfifo resize”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþ8h´MWhjÿ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjã8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jþ8h´MWhj2$ubj)�”}”(hŒN``clear_stall_protocol`` endpoint number that requires a delayed status phase ”h]”(j)�”}”(hŒ``clear_stall_protocol``”h]”jÄ)�”}”(hj"9h]”hŒclear_stall_protocol”…”�”}”(hj$9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MXhj9ubj1)�”}”(hhh]”hì)�”}”(hŒ4endpoint number that requires a delayed status phase”h]”hŒ4endpoint number that requires a delayed status phase”…”�”}”(hj;9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j79h´MXhj89ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j79h´MXhj2$ubj)�”}”(hŒ?``num_hc_interrupters`` number of host controller interrupters ”h]”(j)�”}”(hŒ``num_hc_interrupters``”h]”jÄ)�”}”(hj[9h]”hŒnum_hc_interrupters”…”�”}”(hj]9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjY9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MYhjU9ubj1)�”}”(hhh]”hì)�”}”(hŒ&number of host controller interrupters”h]”hŒ&number of host controller interrupters”…”�”}”(hjt9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jp9h´MYhjq9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjU9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jp9h´MYhj2$ubj)�”}”(hŒ%``hsphy_interface`` "utmi" or "ulpi" ”h]”(j)�”}”(hŒ``hsphy_interface``”h]”jÄ)�”}”(hj”9h]”hŒhsphy_interface”…”�”}”(hj–9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj’9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MZhjŽ9ubj1)�”}”(hhh]”hì)�”}”(hŒ"utmi" or "ulpi"”h]”hŒ“utmiâ€� or “ulpiâ€�”…”�”}”(hj­9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j©9h´MZhjª9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŽ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j©9h´MZhj2$ubj)�”}”(hŒC``connected`` true when we're connected to a host, false otherwise ”h]”(j)�”}”(hŒ ``connected``”h]”jÄ)�”}”(hjÍ9h]”hŒ connected”…”�”}”(hjÏ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjË9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M[hjÇ9ubj1)�”}”(hhh]”hì)�”}”(hŒ4true when we're connected to a host, false otherwise”h]”hŒ6true when we’re connected to a host, false otherwise”…”�”}”(hjæ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jâ9h´M[hjã9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÇ9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâ9h´M[hj2$ubj)�”}”(hŒO``softconnect`` true when gadget connect is called, false when disconnect runs ”h]”(j)�”}”(hŒ``softconnect``”h]”jÄ)�”}”(hj:h]”hŒ softconnect”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M\hj:ubj1)�”}”(hhh]”hì)�”}”(hŒ>true when gadget connect is called, false when disconnect runs”h]”hŒ>true when gadget connect is called, false when disconnect runs”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:h´M\hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j:h´M\hj2$ubj)�”}”(hŒC``delayed_status`` true when gadget driver asks for delayed status ”h]”(j)�”}”(hŒ``delayed_status``”h]”jÄ)�”}”(hj?:h]”hŒdelayed_status”…”�”}”(hjA:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj=:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M]hj9:ubj1)�”}”(hhh]”hì)�”}”(hŒ/true when gadget driver asks for delayed status”h]”hŒ/true when gadget driver asks for delayed status”…”�”}”(hjX:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jT:h´M]hjU:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj9:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jT:h´M]hj2$ubj)�”}”(hŒ0``ep0_bounced`` true when we used bounce buffer ”h]”(j)�”}”(hŒ``ep0_bounced``”h]”jÄ)�”}”(hjx:h]”hŒ ep0_bounced”…”�”}”(hjz:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjv:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M^hjr:ubj1)�”}”(hhh]”hì)�”}”(hŒtrue when we used bounce buffer”h]”hŒtrue when we used bounce buffer”…”�”}”(hj‘:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�:h´M^hjŽ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjr:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�:h´M^hj2$ubj)�”}”(hŒ9``ep0_expect_in`` true when we expect a DATA IN transfer ”h]”(j)�”}”(hŒ``ep0_expect_in``”h]”jÄ)�”}”(hj±:h]”hŒ ep0_expect_in”…”�”}”(hj³:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¯:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M_hj«:ubj1)�”}”(hhh]”hì)�”}”(hŒ&true when we expect a DATA IN transfer”h]”hŒ&true when we expect a DATA IN transfer”…”�”}”(hjÊ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÆ:h´M_hjÇ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj«:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÆ:h´M_hj2$ubj)�”}”(hŒ?``sysdev_is_parent`` true when dwc3 device has a parent driver ”h]”(j)�”}”(hŒ``sysdev_is_parent``”h]”jÄ)�”}”(hjê:h]”hŒsysdev_is_parent”…”�”}”(hjì:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjè:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M`hjä:ubj1)�”}”(hhh]”hì)�”}”(hŒ)true when dwc3 device has a parent driver”h]”hŒ)true when dwc3 device has a parent driver”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÿ:h´M`hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjä:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÿ:h´M`hj2$ubj)�”}”(hŒ†``has_lpm_erratum`` true when core was configured with LPM Erratum. Note that there's now way for software to detect this in runtime. ”h]”(j)�”}”(hŒ``has_lpm_erratum``”h]”jÄ)�”}”(hj#;h]”hŒhas_lpm_erratum”…”�”}”(hj%;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj!;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mbhj;ubj1)�”}”(hhh]”hì)�”}”(hŒqtrue when core was configured with LPM Erratum. Note that there's now way for software to detect this in runtime.”h]”hŒstrue when core was configured with LPM Erratum. Note that there’s now way for software to detect this in runtime.”…”�”}”(hj<;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mahj9;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8;h´Mbhj2$ubj)�”}”(hŒi``is_utmi_l1_suspend`` the core asserts output signal 0 - utmi_sleep_n 1 - utmi_l1_suspend_n ”h]”(j)�”}”(hŒ``is_utmi_l1_suspend``”h]”jÄ)�”}”(hj];h]”hŒis_utmi_l1_suspend”…”�”}”(hj_;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj[;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MehjW;ubj1)�”}”(hhh]”hì)�”}”(hŒQthe core asserts output signal 0 - utmi_sleep_n 1 - utmi_l1_suspend_n”h]”hŒQthe core asserts output signal 0 - utmi_sleep_n 1 - utmi_l1_suspend_n”…”�”}”(hjv;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mchjs;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjW;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jr;h´Mehj2$ubj)�”}”(hŒ2``is_fpga`` true when we are using the FPGA board ”h]”(j)�”}”(hŒ ``is_fpga``”h]”jÄ)�”}”(hj—;h]”hŒis_fpga”…”�”}”(hj™;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj•;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mfhj‘;ubj1)�”}”(hhh]”hì)�”}”(hŒ%true when we are using the FPGA board”h]”hŒ%true when we are using the FPGA board”…”�”}”(hj°;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¬;h´Mfhj­;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‘;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¬;h´Mfhj2$ubj)�”}”(hŒ@``pending_events`` true when we have pending IRQs to be handled ”h]”(j)�”}”(hŒ``pending_events``”h]”jÄ)�”}”(hjÐ;h]”hŒpending_events”…”�”}”(hjÒ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÎ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MghjÊ;ubj1)�”}”(hhh]”hì)�”}”(hŒ,true when we have pending IRQs to be handled”h]”hŒ,true when we have pending IRQs to be handled”…”�”}”(hjé;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jå;h´Mghjæ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÊ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jå;h´Mghj2$ubj)�”}”(hŒK``do_fifo_resize`` true when txfifo resizing is enabled for dwc3 endpoints ”h]”(j)�”}”(hŒ``do_fifo_resize``”h]”jÄ)�”}”(hj <h]”hŒdo_fifo_resize”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhhj<ubj1)�”}”(hhh]”hì)�”}”(hŒ7true when txfifo resizing is enabled for dwc3 endpoints”h]”hŒ7true when txfifo resizing is enabled for dwc3 endpoints”…”�”}”(hj"<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<h´Mhhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<h´Mhhj2$ubj)�”}”(hŒ4``pullups_connected`` true when Run/Stop bit is set ”h]”(j)�”}”(hŒ``pullups_connected``”h]”jÄ)�”}”(hjB<h]”hŒpullups_connected”…”�”}”(hjD<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj@<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mihj<<ubj1)�”}”(hhh]”hì)�”}”(hŒtrue when Run/Stop bit is set”h]”hŒtrue when Run/Stop bit is set”…”�”}”(hj[<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jW<h´MihjX<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj<<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jW<h´Mihj2$ubj)�”}”(hŒN``setup_packet_pending`` true when there's a Setup Packet in FIFO. Workaround ”h]”(j)�”}”(hŒ``setup_packet_pending``”h]”jÄ)�”}”(hj{<h]”hŒsetup_packet_pending”…”�”}”(hj}<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjy<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mjhju<ubj1)�”}”(hhh]”hì)�”}”(hŒ4true when there's a Setup Packet in FIFO. Workaround”h]”hŒ6true when there’s a Setup Packet in FIFO. Workaround”…”�”}”(hj”<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�<h´Mjhj‘<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hju<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�<h´Mjhj2$ubj)�”}”(hŒ<``three_stage_setup`` set if we perform a three phase setup ”h]”(j)�”}”(hŒ``three_stage_setup``”h]”jÄ)�”}”(hj´<h]”hŒthree_stage_setup”…”�”}”(hj¶<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj²<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mkhj®<ubj1)�”}”(hhh]”hì)�”}”(hŒ%set if we perform a three phase setup”h]”hŒ%set if we perform a three phase setup”…”�”}”(hjÍ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÉ<h´MkhjÊ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj®<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉ<h´Mkhj2$ubj)�”}”(hŒ‚``dis_start_transfer_quirk`` set if start_transfer failure SW workaround is not needed for DWC_usb31 version 1.70a-ea06 and below ”h]”(j)�”}”(hŒ``dis_start_transfer_quirk``”h]”jÄ)�”}”(hjí<h]”hŒdis_start_transfer_quirk”…”�”}”(hjï<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjë<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mmhjç<ubj1)�”}”(hhh]”hì)�”}”(hŒdset if start_transfer failure SW workaround is not needed for DWC_usb31 version 1.70a-ea06 and below”h]”hŒdset if start_transfer failure SW workaround is not needed for DWC_usb31 version 1.70a-ea06 and below”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mlhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjç<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j=h´Mmhj2$ubj)�”}”(hŒD``usb3_lpm_capable`` set if hadrware supports Link Power Management ”h]”(j)�”}”(hŒ``usb3_lpm_capable``”h]”jÄ)�”}”(hj'=h]”hŒusb3_lpm_capable”…”�”}”(hj)=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj%=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mnhj!=ubj1)�”}”(hhh]”hì)�”}”(hŒ.set if hadrware supports Link Power Management”h]”hŒ.set if hadrware supports Link Power Management”…”�”}”(hj@=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j<=h´Mnhj==ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj!=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<=h´Mnhj2$ubj)�”}”(hŒ6``usb2_lpm_disable`` set to disable usb2 lpm for host ”h]”(j)�”}”(hŒ``usb2_lpm_disable``”h]”jÄ)�”}”(hj`=h]”hŒusb2_lpm_disable”…”�”}”(hjb=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj^=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MohjZ=ubj1)�”}”(hhh]”hì)�”}”(hŒ set to disable usb2 lpm for host”h]”hŒ set to disable usb2 lpm for host”…”�”}”(hjy=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³ju=h´Mohjv=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjZ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ju=h´Mohj2$ubj)�”}”(hŒ?``usb2_gadget_lpm_disable`` set to disable usb2 lpm for gadget ”h]”(j)�”}”(hŒ``usb2_gadget_lpm_disable``”h]”jÄ)�”}”(hj™=h]”hŒusb2_gadget_lpm_disable”…”�”}”(hj›=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj—=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mphj“=ubj1)�”}”(hhh]”hì)�”}”(hŒ"set to disable usb2 lpm for gadget”h]”hŒ"set to disable usb2 lpm for gadget”…”�”}”(hj²=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j®=h´Mphj¯=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj“=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j®=h´Mphj2$ubj)�”}”(hŒl``needs_full_reinit`` set to indicate the core may lose power and need full initialization during system pm ”h]”(j)�”}”(hŒ``needs_full_reinit``”h]”jÄ)�”}”(hjÒ=h]”hŒneeds_full_reinit”…”�”}”(hjÔ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÐ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MrhjÌ=ubj1)�”}”(hhh]”hì)�”}”(hŒUset to indicate the core may lose power and need full initialization during system pm”h]”hŒUset to indicate the core may lose power and need full initialization during system pm”…”�”}”(hjë=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mqhjè=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÌ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jç=h´Mrhj2$ubj)�”}”(hŒG``disable_scramble_quirk`` set if we enable the disable scramble quirk ”h]”(j)�”}”(hŒ``disable_scramble_quirk``”h]”jÄ)�”}”(hj >h]”hŒdisable_scramble_quirk”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj >ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mshj>ubj1)�”}”(hhh]”hì)�”}”(hŒ+set if we enable the disable scramble quirk”h]”hŒ+set if we enable the disable scramble quirk”…”�”}”(hj%>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!>h´Mshj">ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j!>h´Mshj2$ubj)�”}”(hŒ9``u2exit_lfps_quirk`` set if we enable u2exit lfps quirk ”h]”(j)�”}”(hŒ``u2exit_lfps_quirk``”h]”jÄ)�”}”(hjE>h]”hŒu2exit_lfps_quirk”…”�”}”(hjG>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjC>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mthj?>ubj1)�”}”(hhh]”hì)�”}”(hŒ"set if we enable u2exit lfps quirk”h]”hŒ"set if we enable u2exit lfps quirk”…”�”}”(hj^>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jZ>h´Mthj[>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj?>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jZ>h´Mthj2$ubj)�”}”(hŒD``u2ss_inp3_quirk`` set if we enable P3 OK for U2/SS Inactive quirk ”h]”(j)�”}”(hŒ``u2ss_inp3_quirk``”h]”jÄ)�”}”(hj~>h]”hŒu2ss_inp3_quirk”…”�”}”(hj€>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj|>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Muhjx>ubj1)�”}”(hhh]”hì)�”}”(hŒ/set if we enable P3 OK for U2/SS Inactive quirk”h]”hŒ/set if we enable P3 OK for U2/SS Inactive quirk”…”�”}”(hj—>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j“>h´Muhj”>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjx>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j“>h´Muhj2$ubj)�”}”(hŒ;``req_p1p2p3_quirk`` set if we enable request p1p2p3 quirk ”h]”(j)�”}”(hŒ``req_p1p2p3_quirk``”h]”jÄ)�”}”(hj·>h]”hŒreq_p1p2p3_quirk”…”�”}”(hj¹>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjµ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mvhj±>ubj1)�”}”(hhh]”hì)�”}”(hŒ%set if we enable request p1p2p3 quirk”h]”hŒ%set if we enable request p1p2p3 quirk”…”�”}”(hjÐ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÌ>h´MvhjÍ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj±>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÌ>h´Mvhj2$ubj)�”}”(hŒ9``del_p1p2p3_quirk`` set if we enable delay p1p2p3 quirk ”h]”(j)�”}”(hŒ``del_p1p2p3_quirk``”h]”jÄ)�”}”(hjð>h]”hŒdel_p1p2p3_quirk”…”�”}”(hjò>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjî>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mwhjê>ubj1)�”}”(hhh]”hì)�”}”(hŒ#set if we enable delay p1p2p3 quirk”h]”hŒ#set if we enable delay p1p2p3 quirk”…”�”}”(hj ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j?h´Mwhj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjê>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j?h´Mwhj2$ubj)�”}”(hŒJ``del_phy_power_chg_quirk`` set if we enable delay phy power change quirk ”h]”(j)�”}”(hŒ``del_phy_power_chg_quirk``”h]”jÄ)�”}”(hj)?h]”hŒdel_phy_power_chg_quirk”…”�”}”(hj+?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj'?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mxhj#?ubj1)�”}”(hhh]”hì)�”}”(hŒ-set if we enable delay phy power change quirk”h]”hŒ-set if we enable delay phy power change quirk”…”�”}”(hjB?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j>?h´Mxhj??ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj#?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j>?h´Mxhj2$ubj)�”}”(hŒ9``lfps_filter_quirk`` set if we enable LFPS filter quirk ”h]”(j)�”}”(hŒ``lfps_filter_quirk``”h]”jÄ)�”}”(hjb?h]”hŒlfps_filter_quirk”…”�”}”(hjd?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj`?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Myhj\?ubj1)�”}”(hhh]”hì)�”}”(hŒ"set if we enable LFPS filter quirk”h]”hŒ"set if we enable LFPS filter quirk”…”�”}”(hj{?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jw?h´Myhjx?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj\?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jw?h´Myhj2$ubj)�”}”(hŒJ``rx_detect_poll_quirk`` set if we enable rx_detect to polling lfps quirk ”h]”(j)�”}”(hŒ``rx_detect_poll_quirk``”h]”jÄ)�”}”(hj›?h]”hŒrx_detect_poll_quirk”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj™?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mzhj•?ubj1)�”}”(hhh]”hì)�”}”(hŒ0set if we enable rx_detect to polling lfps quirk”h]”hŒ0set if we enable rx_detect to polling lfps quirk”…”�”}”(hj´?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j°?h´Mzhj±?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj•?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j°?h´Mzhj2$ubj)�”}”(hŒ;``dis_u3_susphy_quirk`` set if we disable usb3 suspend phy ”h]”(j)�”}”(hŒ``dis_u3_susphy_quirk``”h]”jÄ)�”}”(hjÔ?h]”hŒdis_u3_susphy_quirk”…”�”}”(hjÖ?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÒ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M{hjÎ?ubj1)�”}”(hhh]”hì)�”}”(hŒ"set if we disable usb3 suspend phy”h]”hŒ"set if we disable usb3 suspend phy”…”�”}”(hjí?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jé?h´M{hjê?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÎ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jé?h´M{hj2$ubj)�”}”(hŒ;``dis_u2_susphy_quirk`` set if we disable usb2 suspend phy ”h]”(j)�”}”(hŒ``dis_u2_susphy_quirk``”h]”jÄ)�”}”(hj @h]”hŒdis_u2_susphy_quirk”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj @ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M|hj@ubj1)�”}”(hhh]”hì)�”}”(hŒ"set if we disable usb2 suspend phy”h]”hŒ"set if we disable usb2 suspend phy”…”�”}”(hj&@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"@h´M|hj#@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"@h´M|hj2$ubj)�”}”(hŒi``dis_enblslpm_quirk`` set if we clear enblslpm in GUSB2PHYCFG, disabling the suspend signal to the PHY. ”h]”(j)�”}”(hŒ``dis_enblslpm_quirk``”h]”jÄ)�”}”(hjF@h]”hŒdis_enblslpm_quirk”…”�”}”(hjH@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjD@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M~hj@@ubj1)�”}”(hhh]”hì)�”}”(hŒQset if we clear enblslpm in GUSB2PHYCFG, disabling the suspend signal to the PHY.”h]”hŒQset if we clear enblslpm in GUSB2PHYCFG, disabling the suspend signal to the PHY.”…”�”}”(hj_@h²hh³Nh´Nubah}”(h]”•h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M}hj\@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj@@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j[@h´M~hj2$ubj)�”}”(hŒP``dis_u1_entry_quirk`` set if link entering into U1 state needs to be disabled. ”h]”(j)�”}”(hŒ``dis_u1_entry_quirk``”h]”jÄ)�”}”(hj€@h]”hŒdis_u1_entry_quirk”…”�”}”(hj‚@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj~@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhjz@ubj1)�”}”(hhh]”hì)�”}”(hŒ8set if link entering into U1 state needs to be disabled.”h]”hŒ8set if link entering into U1 state needs to be disabled.”…”�”}”(hj™@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j•@h´Mhj–@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjz@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j•@h´Mhj2$ubj)�”}”(hŒP``dis_u2_entry_quirk`` set if link entering into U2 state needs to be disabled. ”h]”(j)�”}”(hŒ``dis_u2_entry_quirk``”h]”jÄ)�”}”(hj¹@h]”hŒdis_u2_entry_quirk”…”�”}”(hj»@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj·@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M€hj³@ubj1)�”}”(hhh]”hì)�”}”(hŒ8set if link entering into U2 state needs to be disabled.”h]”hŒ8set if link entering into U2 state needs to be disabled.”…”�”}”(hjÒ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÎ@h´M€hjÏ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj³@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÎ@h´M€hj2$ubj)�”}”(hŒ;``dis_rxdet_inp3_quirk`` set if we disable Rx.Detect in P3 ”h]”(j)�”}”(hŒ``dis_rxdet_inp3_quirk``”h]”jÄ)�”}”(hjò@h]”hŒdis_rxdet_inp3_quirk”…”�”}”(hjô@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjð@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hjì@ubj1)�”}”(hhh]”hì)�”}”(hŒ!set if we disable Rx.Detect in P3”h]”hŒ!set if we disable Rx.Detect in P3”…”�”}”(hj Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jAh´M�hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjì@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jAh´M�hj2$ubj)�”}”(hŒ’``dis_u2_freeclk_exists_quirk`` set if we clear u2_freeclk_exists in GUSB2PHYCFG, specify that USB2 PHY doesn't provide a free-running PHY clock. ”h]”(j)�”}”(hŒ``dis_u2_freeclk_exists_quirk``”h]”jÄ)�”}”(hj+Ah]”hŒdis_u2_freeclk_exists_quirk”…”�”}”(hj-Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj)Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M†hj%Aubj1)�”}”(hhh]”hì)�”}”(hŒqset if we clear u2_freeclk_exists in GUSB2PHYCFG, specify that USB2 PHY doesn't provide a free-running PHY clock.”h]”hŒsset if we clear u2_freeclk_exists in GUSB2PHYCFG, specify that USB2 PHY doesn’t provide a free-running PHY clock.”…”�”}”(hjDAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M„hjAAubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj%Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j@Ah´M†hj2$ubj)�”}”(hŒP``dis_del_phy_power_chg_quirk`` set if we disable delay phy power change quirk. ”h]”(j)�”}”(hŒ``dis_del_phy_power_chg_quirk``”h]”jÄ)�”}”(hjeAh]”hŒdis_del_phy_power_chg_quirk”…”�”}”(hjgAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjcAubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mˆhj_Aubj1)�”}”(hhh]”hì)�”}”(hŒ/set if we disable delay phy power change quirk.”h]”hŒ/set if we disable delay phy power change quirk.”…”�”}”(hj~Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‡hj{Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj_Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jzAh´Mˆhj2$ubj)�”}”(hŒ]``dis_tx_ipgap_linecheck_quirk`` set if we disable u2mac linestate check during HS transmit. ”h]”(j)�”}”(hŒ ``dis_tx_ipgap_linecheck_quirk``”h]”jÄ)�”}”(hjŸAh]”hŒdis_tx_ipgap_linecheck_quirk”…”�”}”(hj¡Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŠhj™Aubj1)�”}”(hhh]”hì)�”}”(hŒ;set if we disable u2mac linestate check during HS transmit.”h]”hŒ;set if we disable u2mac linestate check during HS transmit.”…”�”}”(hj¸Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‰hjµAubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj™Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´Ah´MŠhj2$ubj)�”}”(hŒp``resume_hs_terminations`` Set if we enable quirk for fixing improper crc generation after resume from suspend. ”h]”(j)�”}”(hŒ``resume_hs_terminations``”h]”jÄ)�”}”(hjÙAh]”hŒresume_hs_terminations”…”�”}”(hjÛAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj×Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŒhjÓAubj1)�”}”(hhh]”hì)�”}”(hŒTSet if we enable quirk for fixing improper crc generation after resume from suspend.”h]”hŒTSet if we enable quirk for fixing improper crc generation after resume from suspend.”…”�”}”(hjòAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‹hjïAubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÓAubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jîAh´MŒhj2$ubj)�”}”(hŒe``ulpi_ext_vbus_drv`` Set to confiure the upli chip to drives CPEN pin VBUS with an external supply. ”h]”(j)�”}”(hŒ``ulpi_ext_vbus_drv``”h]”jÄ)�”}”(hjBh]”hŒulpi_ext_vbus_drv”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŽhj Bubj1)�”}”(hhh]”hì)�”}”(hŒNSet to confiure the upli chip to drives CPEN pin VBUS with an external supply.”h]”hŒNSet to confiure the upli chip to drives CPEN pin VBUS with an external supply.”…”�”}”(hj,Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hj)Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j(Bh´MŽhj2$ubj)�”}”(hŒ_``parkmode_disable_ss_quirk`` set if we need to disable all SuperSpeed instances in park mode. ”h]”(j)�”}”(hŒ``parkmode_disable_ss_quirk``”h]”jÄ)�”}”(hjMBh]”hŒparkmode_disable_ss_quirk”…”�”}”(hjOBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjKBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hjGBubj1)�”}”(hhh]”hì)�”}”(hŒ@set if we need to disable all SuperSpeed instances in park mode.”h]”hŒ@set if we need to disable all SuperSpeed instances in park mode.”…”�”}”(hjfBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hjcBubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjGBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbBh´M�hj2$ubj)�”}”(hŒ^``parkmode_disable_hs_quirk`` set if we need to disable all HighSpeed instances in park mode. ”h]”(j)�”}”(hŒ``parkmode_disable_hs_quirk``”h]”jÄ)�”}”(hj‡Bh]”hŒparkmode_disable_hs_quirk”…”�”}”(hj‰Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj…Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M’hj�Bubj1)�”}”(hhh]”hì)�”}”(hŒ?set if we need to disable all HighSpeed instances in park mode.”h]”hŒ?set if we need to disable all HighSpeed instances in park mode.”…”�”}”(hj Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‘hj�Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj�Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jœBh´M’hj2$ubj)�”}”(hŒ\``gfladj_refclk_lpm_sel`` set if we need to enable SOF/ITP counter running based on ref_clk ”h]”(j)�”}”(hŒ``gfladj_refclk_lpm_sel``”h]”jÄ)�”}”(hjÁBh]”hŒgfladj_refclk_lpm_sel”…”�”}”(hjÃBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¿Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M”hj»Bubj1)�”}”(hhh]”hì)�”}”(hŒAset if we need to enable SOF/ITP counter running based on ref_clk”h]”hŒAset if we need to enable SOF/ITP counter running based on ref_clk”…”�”}”(hjÚBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M“hj×Bubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj»Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖBh´M”hj2$ubj)�”}”(hŒ?``tx_de_emphasis_quirk`` set if we enable Tx de-emphasis quirk ”h]”(j)�”}”(hŒ``tx_de_emphasis_quirk``”h]”jÄ)�”}”(hjûBh]”hŒtx_de_emphasis_quirk”…”�”}”(hjýBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjùBubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M•hjõBubj1)�”}”(hhh]”hì)�”}”(hŒ%set if we enable Tx de-emphasis quirk”h]”hŒ%set if we enable Tx de-emphasis quirk”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jCh´M•hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjõBubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jCh´M•hj2$ubj)�”}”(hŒŒ``tx_de_emphasis`` Tx de-emphasis value 0 - -6dB de-emphasis 1 - -3.5dB de-emphasis 2 - No de-emphasis 3 - Reserved ”h]”(j)�”}”(hŒ``tx_de_emphasis``”h]”jÄ)�”}”(hj4Ch]”hŒtx_de_emphasis”…”�”}”(hj6Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj2Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mšhj.Cubj1)�”}”(hhh]”hì)�”}”(hŒxTx de-emphasis value 0 - -6dB de-emphasis 1 - -3.5dB de-emphasis 2 - No de-emphasis 3 - Reserved”h]”hŒxTx de-emphasis value 0 - -6dB de-emphasis 1 - -3.5dB de-emphasis 2 - No de-emphasis 3 - Reserved”…”�”}”(hjMCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M–hjJCubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj.Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jICh´Mšhj2$ubj)�”}”(hŒ@``dis_metastability_quirk`` set to disable metastability quirk. ”h]”(j)�”}”(hŒ``dis_metastability_quirk``”h]”jÄ)�”}”(hjnCh]”hŒdis_metastability_quirk”…”�”}”(hjpCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjlCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M›hjhCubj1)�”}”(hhh]”hì)�”}”(hŒ#set to disable metastability quirk.”h]”hŒ#set to disable metastability quirk.”…”�”}”(hj‡Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒCh´M›hj„Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjhCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒCh´M›hj2$ubj)�”}”(hŒ3``dis_split_quirk`` set to disable split boundary. ”h]”(j)�”}”(hŒ``dis_split_quirk``”h]”jÄ)�”}”(hj§Ch]”hŒdis_split_quirk”…”�”}”(hj©Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¥Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mœhj¡Cubj1)�”}”(hhh]”hì)�”}”(hŒset to disable split boundary.”h]”hŒset to disable split boundary.”…”�”}”(hjÀCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼Ch´Mœhj½Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¡Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼Ch´Mœhj2$ubj)�”}”(hŒv``enable_usb2_transceiver_delay`` Set to insert a delay before the assertion of the TxValid signal during a HS Chirp. ”h]”(j)�”}”(hŒ!``enable_usb2_transceiver_delay``”h]”jÄ)�”}”(hjàCh]”hŒenable_usb2_transceiver_delay”…”�”}”(hjâCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÞCubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MžhjÚCubj1)�”}”(hhh]”hì)�”}”(hŒSSet to insert a delay before the assertion of the TxValid signal during a HS Chirp.”h]”hŒSSet to insert a delay before the assertion of the TxValid signal during a HS Chirp.”…”�”}”(hjùCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M�hjöCubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÚCubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõCh´Mžhj2$ubj)�”}”(hŒH``async_callbacks`` if set, indicate that async callbacks will be used. ”h]”(j)�”}”(hŒ``async_callbacks``”h]”jÄ)�”}”(hjDh]”hŒasync_callbacks”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M‚hjDubj1)�”}”(hhh]”hì)�”}”(hŒ3if set, indicate that async callbacks will be used.”h]”hŒ3if set, indicate that async callbacks will be used.”…”�”}”(hj3Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j/Dh´M‚hj0Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/Dh´M‚hj2$ubj)�”}”(hŒ7``sys_wakeup`` set if the device may do system wakeup. ”h]”(j)�”}”(hŒ``sys_wakeup``”h]”jÄ)�”}”(hjSDh]”hŒ sys_wakeup”…”�”}”(hjUDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjQDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MŸhjMDubj1)�”}”(hhh]”hì)�”}”(hŒ'set if the device may do system wakeup.”h]”hŒ'set if the device may do system wakeup.”…”�”}”(hjlDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jhDh´MŸhjiDubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjMDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jhDh´MŸhj2$ubj)�”}”(hŒI``wakeup_configured`` set if the device is configured for remote wakeup. ”h]”(j)�”}”(hŒ``wakeup_configured``”h]”jÄ)�”}”(hjŒDh]”hŒwakeup_configured”…”�”}”(hjŽDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŠDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hj†Dubj1)�”}”(hhh]”hì)�”}”(hŒ2set if the device is configured for remote wakeup.”h]”hŒ2set if the device is configured for remote wakeup.”…”�”}”(hj¥Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¡Dh´M hj¢Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj†Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¡Dh´M hj2$ubj)�”}”(hŒ7``suspended`` set to track suspend event due to U3/L2. ”h]”(j)�”}”(hŒ ``suspended``”h]”jÄ)�”}”(hjÅDh]”hŒ suspended”…”�”}”(hjÇDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÃDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¡hj¿Dubj1)�”}”(hhh]”hì)�”}”(hŒ(set to track suspend event due to U3/L2.”h]”hŒ(set to track suspend event due to U3/L2.”…”�”}”(hjÞDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÚDh´M¡hjÛDubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¿Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÚDh´M¡hj2$ubj)�”}”(hŒ```susphy_state`` state of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY before PM suspend. ”h]”(j)�”}”(hŒ``susphy_state``”h]”jÄ)�”}”(hjþDh]”hŒ susphy_state”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjüDubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M£hjøDubj1)�”}”(hhh]”hì)�”}”(hŒNstate of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY before PM suspend.”h]”hŒNstate of DWC3_GUSB2PHYCFG_SUSPHY + DWC3_GUSB3PIPECTL_SUSPHY before PM suspend.”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¢hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjøDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jEh´M£hj2$ubj)�”}”(hŒ]``imod_interval`` set the interrupt moderation interval in 250ns increments or 0 to disable. ”h]”(j)�”}”(hŒ``imod_interval``”h]”jÄ)�”}”(hj8Eh]”hŒ imod_interval”…”�”}”(hj:Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj6Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¥hj2Eubj1)�”}”(hhh]”hì)�”}”(hŒJset the interrupt moderation interval in 250ns increments or 0 to disable.”h]”hŒJset the interrupt moderation interval in 250ns increments or 0 to disable.”…”�”}”(hjQEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¤hjNEubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj2Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jMEh´M¥hj2$ubj)�”}”(hŒJ``max_cfg_eps`` current max number of IN eps used across all USB configs. ”h]”(j)�”}”(hŒ``max_cfg_eps``”h]”jÄ)�”}”(hjrEh]”hŒ max_cfg_eps”…”�”}”(hjtEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjpEubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¦hjlEubj1)�”}”(hhh]”hì)�”}”(hŒ9current max number of IN eps used across all USB configs.”h]”hŒ9current max number of IN eps used across all USB configs.”…”�”}”(hj‹Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‡Eh´M¦hjˆEubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjlEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‡Eh´M¦hj2$ubj)�”}”(hŒS``last_fifo_depth`` last fifo depth used to determine next fifo ram start address. ”h]”(j)�”}”(hŒ``last_fifo_depth``”h]”jÄ)�”}”(hj«Eh]”hŒlast_fifo_depth”…”�”}”(hj­Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj©Eubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¨hj¥Eubj1)�”}”(hhh]”hì)�”}”(hŒ>last fifo depth used to determine next fifo ram start address.”h]”hŒ>last fifo depth used to determine next fifo ram start address.”…”�”}”(hjÄEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M§hjÁEubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¥Eubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÀEh´M¨hj2$ubj)�”}”(hŒ\``num_ep_resized`` carries the current number endpoints which have had its tx fifo resized. ”h]”(j)�”}”(hŒ``num_ep_resized``”h]”jÄ)�”}”(hjåEh]”hŒnum_ep_resized”…”�”}”(hjçEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjãEubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MªhjßEubj1)�”}”(hhh]”hì)�”}”(hŒHcarries the current number endpoints which have had its tx fifo resized.”h]”hŒHcarries the current number endpoints which have had its tx fifo resized.”…”�”}”(hjþEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M©hjûEubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjßEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³júEh´Mªhj2$ubj)�”}”(hŒK``debug_root`` root debugfs directory for this device to put its files in. ”h]”(j)�”}”(hŒ``debug_root``”h]”jÄ)�”}”(hjFh]”hŒ debug_root”…”�”}”(hj!Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M«hjFubj1)�”}”(hhh]”hì)�”}”(hŒ;root debugfs directory for this device to put its files in.”h]”hŒ;root debugfs directory for this device to put its files in.”…”�”}”(hj8Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j4Fh´M«hj5Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4Fh´M«hj2$ubj)�”}”(hŒ€``gsbuscfg0_reqinfo`` store GSBUSCFG0.DATRDREQINFO, DESRDREQINFO, DATWRREQINFO, and DESWRREQINFO value passed from glue driver. ”h]”(j)�”}”(hŒ``gsbuscfg0_reqinfo``”h]”jÄ)�”}”(hjXFh]”hŒgsbuscfg0_reqinfo”…”�”}”(hjZFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjVFubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M®hjRFubj1)�”}”(hhh]”hì)�”}”(hŒistore GSBUSCFG0.DATRDREQINFO, DESRDREQINFO, DATWRREQINFO, and DESWRREQINFO value passed from glue driver.”h]”hŒistore GSBUSCFG0.DATRDREQINFO, DESRDREQINFO, DATWRREQINFO, and DESWRREQINFO value passed from glue driver.”…”�”}”(hjqFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¬hjnFubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjRFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jmFh´M®hj2$ubj)�”}”(hŒ—``wakeup_pending_funcs`` Indicates whether any interface has requested for function wakeup in bitmap format where bit position represents interface_id.”h]”(j)�”}”(hŒ``wakeup_pending_funcs``”h]”jÄ)�”}”(hj’Fh]”hŒwakeup_pending_funcs”…”�”}”(hj”Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�Fubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M°hjŒFubj1)�”}”(hhh]”hì)�”}”(hŒ~Indicates whether any interface has requested for function wakeup in bitmap format where bit position represents interface_id.”h]”hŒ~Indicates whether any interface has requested for function wakeup in bitmap format where bit position represents interface_id.”…”�”}”(hj«Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M¯hj¨Fubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŒFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j§Fh´M°hj2$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjê#ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_event_depevt (C struct)”Œc.dwc3_event_depevt”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_event_depevt”h]”j?)�”}”(hŒstruct dwc3_event_depevt”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjìFh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjèFh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M·ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúFh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjèFh²hh³jùFh´M·ubjh)�”}”(hŒdwc3_event_depevt”h]”jn)�”}”(hjæFh]”hŒdwc3_event_depevt”…”�”}”(hj Gh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjGubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjèFh²hh³jùFh´M·ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjäFh²hh³jùFh´M·ubah}”(h]”jßFah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jùFh´M·hjáFh²hubjš)�”}”(hhh]”hì)�”}”(hŒDevice Endpoint Events”h]”hŒDevice Endpoint Events”…”�”}”(hj.Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÂhj+Gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjáFh²hh³jùFh´M·ubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼jFGj½jFGj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Definition**:: struct dwc3_event_depevt { u32 one_bit:1; u32 endpoint_number:5; u32 endpoint_event:4; u32 reserved11_10:2; u32 status:4; #define DEPEVT_STATUS_TRANSFER_ACTIVE BIT(3); #define DEPEVT_STATUS_BUSERR BIT(0); #define DEPEVT_STATUS_SHORT BIT(1); #define DEPEVT_STATUS_IOC BIT(2); #define DEPEVT_STATUS_LST BIT(3) ; #define DEPEVT_STATUS_MISSED_ISOC BIT(3) ; #define DEPEVT_STREAMEVT_FOUND 1; #define DEPEVT_STREAMEVT_NOTFOUND 2; #define DEPEVT_STREAM_PRIME 0xfffe; #define DEPEVT_STREAM_NOSTREAM 0x0; #define DEPEVT_STATUS_CONTROL_DATA 1; #define DEPEVT_STATUS_CONTROL_STATUS 2; #define DEPEVT_STATUS_CONTROL_PHASE(n) ((n) & 3); #define DEPEVT_TRANSFER_NO_RESOURCE 1; #define DEPEVT_TRANSFER_BUS_EXPIRY 2; u32 parameters:16; #define DEPEVT_PARAMETER_CMD(n) (((n) & (0xf << 8)) >> 8); }; **Members** ``one_bit`` indicates this is an endpoint event (not used) ``endpoint_number`` number of the endpoint ``endpoint_event`` The event we have: 0x00 - Reserved 0x01 - XferComplete 0x02 - XferInProgress 0x03 - XferNotReady 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun) 0x05 - Reserved 0x06 - StreamEvt 0x07 - EPCmdCmplt ``reserved11_10`` Reserved, don't use. ``status`` Indicates the status of the event. Refer to databook for more information. ``parameters`` Parameters of the current event. Refer to databook for more information.”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjRGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjNGubhŒ:”…”�”}”(hjNGh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÆhjJGubj¥)�”}”(hXpstruct dwc3_event_depevt { u32 one_bit:1; u32 endpoint_number:5; u32 endpoint_event:4; u32 reserved11_10:2; u32 status:4; #define DEPEVT_STATUS_TRANSFER_ACTIVE BIT(3); #define DEPEVT_STATUS_BUSERR BIT(0); #define DEPEVT_STATUS_SHORT BIT(1); #define DEPEVT_STATUS_IOC BIT(2); #define DEPEVT_STATUS_LST BIT(3) ; #define DEPEVT_STATUS_MISSED_ISOC BIT(3) ; #define DEPEVT_STREAMEVT_FOUND 1; #define DEPEVT_STREAMEVT_NOTFOUND 2; #define DEPEVT_STREAM_PRIME 0xfffe; #define DEPEVT_STREAM_NOSTREAM 0x0; #define DEPEVT_STATUS_CONTROL_DATA 1; #define DEPEVT_STATUS_CONTROL_STATUS 2; #define DEPEVT_STATUS_CONTROL_PHASE(n) ((n) & 3); #define DEPEVT_TRANSFER_NO_RESOURCE 1; #define DEPEVT_TRANSFER_BUS_EXPIRY 2; u32 parameters:16; #define DEPEVT_PARAMETER_CMD(n) (((n) & (0xf << 8)) >> 8); };”h]”hXpstruct dwc3_event_depevt { u32 one_bit:1; u32 endpoint_number:5; u32 endpoint_event:4; u32 reserved11_10:2; u32 status:4; #define DEPEVT_STATUS_TRANSFER_ACTIVE BIT(3); #define DEPEVT_STATUS_BUSERR BIT(0); #define DEPEVT_STATUS_SHORT BIT(1); #define DEPEVT_STATUS_IOC BIT(2); #define DEPEVT_STATUS_LST BIT(3) ; #define DEPEVT_STATUS_MISSED_ISOC BIT(3) ; #define DEPEVT_STREAMEVT_FOUND 1; #define DEPEVT_STREAMEVT_NOTFOUND 2; #define DEPEVT_STREAM_PRIME 0xfffe; #define DEPEVT_STREAM_NOSTREAM 0x0; #define DEPEVT_STATUS_CONTROL_DATA 1; #define DEPEVT_STATUS_CONTROL_STATUS 2; #define DEPEVT_STATUS_CONTROL_PHASE(n) ((n) & 3); #define DEPEVT_TRANSFER_NO_RESOURCE 1; #define DEPEVT_TRANSFER_BUS_EXPIRY 2; u32 parameters:16; #define DEPEVT_PARAMETER_CMD(n) (((n) & (0xf << 8)) >> 8); };”…”�”}”hjkGsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÈhjJGubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hj|Gh]”hŒMembers”…”�”}”(hj~Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjzGubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MáhjJGubj )�”}”(hhh]”(j)�”}”(hŒ;``one_bit`` indicates this is an endpoint event (not used) ”h]”(j)�”}”(hŒ ``one_bit``”h]”jÄ)�”}”(hj›Gh]”hŒone_bit”…”�”}”(hj�Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj™Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÄhj•Gubj1)�”}”(hhh]”hì)�”}”(hŒ.indicates this is an endpoint event (not used)”h]”hŒ.indicates this is an endpoint event (not used)”…”�”}”(hj´Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j°Gh´MÄhj±Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj•Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j°Gh´MÄhj’Gubj)�”}”(hŒ+``endpoint_number`` number of the endpoint ”h]”(j)�”}”(hŒ``endpoint_number``”h]”jÄ)�”}”(hjÔGh]”hŒendpoint_number”…”�”}”(hjÖGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÒGubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÅhjÎGubj1)�”}”(hhh]”hì)�”}”(hŒnumber of the endpoint”h]”hŒnumber of the endpoint”…”�”}”(hjíGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jéGh´MÅhjêGubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÎGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jéGh´MÅhj’Gubj)�”}”(hŒï``endpoint_event`` The event we have: 0x00 - Reserved 0x01 - XferComplete 0x02 - XferInProgress 0x03 - XferNotReady 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun) 0x05 - Reserved 0x06 - StreamEvt 0x07 - EPCmdCmplt ”h]”(j)�”}”(hŒ``endpoint_event``”h]”jÄ)�”}”(hj Hh]”hŒendpoint_event”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÎhjHubj1)�”}”(hhh]”hì)�”}”(hŒÛThe event we have: 0x00 - Reserved 0x01 - XferComplete 0x02 - XferInProgress 0x03 - XferNotReady 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun) 0x05 - Reserved 0x06 - StreamEvt 0x07 - EPCmdCmplt”h]”hŒÛThe event we have: 0x00 - Reserved 0x01 - XferComplete 0x02 - XferInProgress 0x03 - XferNotReady 0x04 - RxTxFifoEvt (IN->Underrun, OUT->Overrun) 0x05 - Reserved 0x06 - StreamEvt 0x07 - EPCmdCmplt”…”�”}”(hj&Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÆhj#Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"Hh´MÎhj’Gubj)�”}”(hŒ'``reserved11_10`` Reserved, don't use. ”h]”(j)�”}”(hŒ``reserved11_10``”h]”jÄ)�”}”(hjGHh]”hŒ reserved11_10”…”�”}”(hjIHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjEHubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÏhjAHubj1)�”}”(hhh]”hì)�”}”(hŒReserved, don't use.”h]”hŒReserved, don’t use.”…”�”}”(hj`Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j\Hh´MÏhj]Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjAHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j\Hh´MÏhj’Gubj)�”}”(hŒV``status`` Indicates the status of the event. Refer to databook for more information. ”h]”(j)�”}”(hŒ ``status``”h]”jÄ)�”}”(hj€Hh]”hŒstatus”…”�”}”(hj‚Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj~Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÑhjzHubj1)�”}”(hhh]”hì)�”}”(hŒJIndicates the status of the event. Refer to databook for more information.”h]”hŒJIndicates the status of the event. Refer to databook for more information.”…”�”}”(hj™Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÐhj–Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjzHubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j•Hh´MÑhj’Gubj)�”}”(hŒW``parameters`` Parameters of the current event. Refer to databook for more information.”h]”(j)�”}”(hŒ``parameters``”h]”jÄ)�”}”(hjºHh]”hŒ parameters”…”�”}”(hj¼Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¸Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÒhj´Hubj1)�”}”(hhh]”hì)�”}”(hŒHParameters of the current event. Refer to databook for more information.”h]”hŒHParameters of the current event. Refer to databook for more information.”…”�”}”(hjÓHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÏHh´MÒhjÐHubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj´Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÏHh´MÒhj’Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjJGubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_event_devt (C struct)”Œc.dwc3_event_devt”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_event_devt”h]”j?)�”}”(hŒstruct dwc3_event_devt”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjIh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MÙubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Ih²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjIh²hh³j Ih´MÙubjh)�”}”(hŒdwc3_event_devt”h]”jn)�”}”(hj Ih]”hŒdwc3_event_devt”…”�”}”(hj3Ih²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj/Iubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjIh²hh³j Ih´MÙubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj Ih²hh³j Ih´MÙubah}”(h]”jIah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j Ih´MÙhjIh²hubjš)�”}”(hhh]”hì)�”}”(hŒ Device Events”h]”hŒ Device Events”…”�”}”(hjUIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MýhjRIh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjIh²hh³j Ih´MÙubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼jmIj½jmIj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXA**Definition**:: struct dwc3_event_devt { u32 one_bit:1; u32 device_event:7; u32 type:4; u32 reserved15_12:4; u32 event_info:9; u32 reserved31_25:7; }; **Members** ``one_bit`` indicates this is a non-endpoint event (not used) ``device_event`` indicates it's a device event. Should read as 0x00 ``type`` indicates the type of device event. 0 - DisconnEvt 1 - USBRst 2 - ConnectDone 3 - ULStChng 4 - WkUpEvt 5 - Reserved 6 - Suspend (EOPF on revisions 2.10a and prior) 7 - SOF 8 - Reserved 9 - ErrticErr 10 - CmdCmplt 11 - EvntOverflow 12 - VndrDevTstRcved ``reserved15_12`` Reserved, not used ``event_info`` Information about this event ``reserved31_25`` Reserved, not used”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjyIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjuIubhŒ:”…”�”}”(hjuIh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjqIubj¥)�”}”(hŒžstruct dwc3_event_devt { u32 one_bit:1; u32 device_event:7; u32 type:4; u32 reserved15_12:4; u32 event_info:9; u32 reserved31_25:7; };”h]”hŒžstruct dwc3_event_devt { u32 one_bit:1; u32 device_event:7; u32 type:4; u32 reserved15_12:4; u32 event_info:9; u32 reserved31_25:7; };”…”�”}”hj’Isbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjqIubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hj£Ih]”hŒMembers”…”�”}”(hj¥Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¡Iubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjqIubj )�”}”(hhh]”(j)�”}”(hŒ>``one_bit`` indicates this is a non-endpoint event (not used) ”h]”(j)�”}”(hŒ ``one_bit``”h]”jÄ)�”}”(hjÂIh]”hŒone_bit”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÀIubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mÿhj¼Iubj1)�”}”(hhh]”hì)�”}”(hŒ1indicates this is a non-endpoint event (not used)”h]”hŒ1indicates this is a non-endpoint event (not used)”…”�”}”(hjÛIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j×Ih´MÿhjØIubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¼Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j×Ih´Mÿhj¹Iubj)�”}”(hŒD``device_event`` indicates it's a device event. Should read as 0x00 ”h]”(j)�”}”(hŒ``device_event``”h]”jÄ)�”}”(hjûIh]”hŒ device_event”…”�”}”(hjýIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjùIubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjõIubj1)�”}”(hhh]”hì)�”}”(hŒ2indicates it's a device event. Should read as 0x00”h]”hŒ4indicates it’s a device event. Should read as 0x00”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jJh´MhjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjõIubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jJh´Mhj¹Iubj)�”}”(hXP``type`` indicates the type of device event. 0 - DisconnEvt 1 - USBRst 2 - ConnectDone 3 - ULStChng 4 - WkUpEvt 5 - Reserved 6 - Suspend (EOPF on revisions 2.10a and prior) 7 - SOF 8 - Reserved 9 - ErrticErr 10 - CmdCmplt 11 - EvntOverflow 12 - VndrDevTstRcved ”h]”(j)�”}”(hŒ``type``”h]”jÄ)�”}”(hj4Jh]”hŒtype”…”�”}”(hj6Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj2Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj.Jubj1)�”}”(hhh]”hì)�”}”(hXFindicates the type of device event. 0 - DisconnEvt 1 - USBRst 2 - ConnectDone 3 - ULStChng 4 - WkUpEvt 5 - Reserved 6 - Suspend (EOPF on revisions 2.10a and prior) 7 - SOF 8 - Reserved 9 - ErrticErr 10 - CmdCmplt 11 - EvntOverflow 12 - VndrDevTstRcved”h]”hXFindicates the type of device event. 0 - DisconnEvt 1 - USBRst 2 - ConnectDone 3 - ULStChng 4 - WkUpEvt 5 - Reserved 6 - Suspend (EOPF on revisions 2.10a and prior) 7 - SOF 8 - Reserved 9 - ErrticErr 10 - CmdCmplt 11 - EvntOverflow 12 - VndrDevTstRcved”…”�”}”(hjMJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjJJubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj.Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jIJh´Mhj¹Iubj)�”}”(hŒ%``reserved15_12`` Reserved, not used ”h]”(j)�”}”(hŒ``reserved15_12``”h]”jÄ)�”}”(hjnJh]”hŒ reserved15_12”…”�”}”(hjpJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjlJubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjhJubj1)�”}”(hhh]”hì)�”}”(hŒReserved, not used”h]”hŒReserved, not used”…”�”}”(hj‡Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jƒJh´Mhj„Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjhJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒJh´Mhj¹Iubj)�”}”(hŒ,``event_info`` Information about this event ”h]”(j)�”}”(hŒ``event_info``”h]”jÄ)�”}”(hj§Jh]”hŒ event_info”…”�”}”(hj©Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¥Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mhj¡Jubj1)�”}”(hhh]”hì)�”}”(hŒInformation about this event”h]”hŒInformation about this event”…”�”}”(hjÀJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¼Jh´Mhj½Jubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¡Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼Jh´Mhj¹Iubj)�”}”(hŒ$``reserved31_25`` Reserved, not used”h]”(j)�”}”(hŒ``reserved31_25``”h]”jÄ)�”}”(hjàJh]”hŒ reserved31_25”…”�”}”(hjâJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÞJubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjÚJubj1)�”}”(hhh]”hì)�”}”(hŒReserved, not used”h]”hŒReserved, not used”…”�”}”(hjùJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjöJubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÚJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõJh´Mhj¹Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjqIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_event_gevt (C struct)”Œc.dwc3_event_gevt”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_event_gevt”h]”j?)�”}”(hŒstruct dwc3_event_gevt”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj:Kh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj6Kh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHKh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj6Kh²hh³jGKh´Mubjh)�”}”(hŒdwc3_event_gevt”h]”jn)�”}”(hj4Kh]”hŒdwc3_event_gevt”…”�”}”(hjZKh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjVKubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj6Kh²hh³jGKh´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj2Kh²hh³jGKh´Mubah}”(h]”j-Kah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jGKh´Mhj/Kh²hubjš)�”}”(hhh]”hì)�”}”(hŒOther Core Events”h]”hŒOther Core Events”…”�”}”(hj|Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjyKh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj/Kh²hh³jGKh´Mubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j”Kj½j”Kj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX~**Definition**:: struct dwc3_event_gevt { u32 one_bit:1; u32 device_event:7; u32 phy_port_number:4; u32 reserved31_12:20; }; **Members** ``one_bit`` indicates this is a non-endpoint event (not used) ``device_event`` indicates it's (0x03) Carkit or (0x04) I2C event. ``phy_port_number`` self-explanatory ``reserved31_12`` Reserved, not used.”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjœKubhŒ:”…”�”}”(hjœKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hj˜Kubj¥)�”}”(hŒ{struct dwc3_event_gevt { u32 one_bit:1; u32 device_event:7; u32 phy_port_number:4; u32 reserved31_12:20; };”h]”hŒ{struct dwc3_event_gevt { u32 one_bit:1; u32 device_event:7; u32 phy_port_number:4; u32 reserved31_12:20; };”…”�”}”hj¹Ksbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M"hj˜Kubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjÊKh]”hŒMembers”…”�”}”(hjÌKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÈKubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M)hj˜Kubj )�”}”(hhh]”(j)�”}”(hŒ>``one_bit`` indicates this is a non-endpoint event (not used) ”h]”(j)�”}”(hŒ ``one_bit``”h]”jÄ)�”}”(hjéKh]”hŒone_bit”…”�”}”(hjëKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjçKubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjãKubj1)�”}”(hhh]”hì)�”}”(hŒ1indicates this is a non-endpoint event (not used)”h]”hŒ1indicates this is a non-endpoint event (not used)”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jþKh´MhjÿKubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjãKubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jþKh´MhjàKubj)�”}”(hŒC``device_event`` indicates it's (0x03) Carkit or (0x04) I2C event. ”h]”(j)�”}”(hŒ``device_event``”h]”jÄ)�”}”(hj"Lh]”hŒ device_event”…”�”}”(hj$Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MhjLubj1)�”}”(hhh]”hì)�”}”(hŒ1indicates it's (0x03) Carkit or (0x04) I2C event.”h]”hŒ3indicates it’s (0x03) Carkit or (0x04) I2C event.”…”�”}”(hj;Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j7Lh´Mhj8Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j7Lh´MhjàKubj)�”}”(hŒ%``phy_port_number`` self-explanatory ”h]”(j)�”}”(hŒ``phy_port_number``”h]”jÄ)�”}”(hj[Lh]”hŒphy_port_number”…”�”}”(hj]Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjYLubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjULubj1)�”}”(hhh]”hì)�”}”(hŒself-explanatory”h]”hŒself-explanatory”…”�”}”(hjtLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jpLh´M hjqLubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjULubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jpLh´M hjàKubj)�”}”(hŒ%``reserved31_12`` Reserved, not used.”h]”(j)�”}”(hŒ``reserved31_12``”h]”jÄ)�”}”(hj”Lh]”hŒ reserved31_12”…”�”}”(hj–Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj’Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M hjŽLubj1)�”}”(hhh]”hì)�”}”(hŒReserved, not used.”h]”hŒReserved, not used.”…”�”}”(hj­Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M!hjªLubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŽLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j©Lh´M hjàKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj˜Kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_event (C union)”Œ c.dwc3_event”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ dwc3_event”h]”j?)�”}”(hŒunion dwc3_event”h]”(jE)�”}”(hŒunion”h]”hŒunion”…”�”}”(hjîLh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjêLh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M'ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýLh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjêLh²hh³jüLh´M'ubjh)�”}”(hŒ dwc3_event”h]”jn)�”}”(hjèLh]”hŒ dwc3_event”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj Mubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjêLh²hh³jüLh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjæLh²hh³jüLh´M'ubah}”(h]”jáLah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jüLh´M'hjãLh²hubjš)�”}”(hhh]”hì)�”}”(hŒ'representation of Event Buffer contents”h]”hŒ'representation of Event Buffer contents”…”�”}”(hj1Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M*hj.Mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjãLh²hh³jüLh´M'ubeh}”(h]”h ]”(j¶Œunion”eh"]”h$]”h&]”j»j¶j¼jIMj½jIMj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX�**Definition**:: union dwc3_event { u32 raw; struct dwc3_event_type type; struct dwc3_event_depevt depevt; struct dwc3_event_devt devt; struct dwc3_event_gevt gevt; }; **Members** ``raw`` raw 32-bit event ``type`` the type of the event ``depevt`` Device Endpoint Event ``devt`` Device Event ``gevt`` Global Event”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjUMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjQMubhŒ:”…”�”}”(hjQMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M.hjMMubj¥)�”}”(hŒÌunion dwc3_event { u32 raw; struct dwc3_event_type type; struct dwc3_event_depevt depevt; struct dwc3_event_devt devt; struct dwc3_event_gevt gevt; };”h]”hŒÌunion dwc3_event { u32 raw; struct dwc3_event_type type; struct dwc3_event_depevt depevt; struct dwc3_event_devt devt; struct dwc3_event_gevt gevt; };”…”�”}”hjnMsbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M0hjMMubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjMh]”hŒMembers”…”�”}”(hj�Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj}Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M8hjMMubj )�”}”(hhh]”(j)�”}”(hŒ``raw`` raw 32-bit event ”h]”(j)�”}”(hŒ``raw``”h]”jÄ)�”}”(hjžMh]”hŒraw”…”�”}”(hj Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjœMubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M,hj˜Mubj1)�”}”(hhh]”hì)�”}”(hŒraw 32-bit event”h]”hŒraw 32-bit event”…”�”}”(hj·Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j³Mh´M,hj´Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj˜Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j³Mh´M,hj•Mubj)�”}”(hŒ``type`` the type of the event ”h]”(j)�”}”(hŒ``type``”h]”jÄ)�”}”(hj×Mh]”hŒtype”…”�”}”(hjÙMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÕMubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M-hjÑMubj1)�”}”(hhh]”hì)�”}”(hŒthe type of the event”h]”hŒthe type of the event”…”�”}”(hjðMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jìMh´M-hjíMubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÑMubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jìMh´M-hj•Mubj)�”}”(hŒ!``depevt`` Device Endpoint Event ”h]”(j)�”}”(hŒ ``depevt``”h]”jÄ)�”}”(hjNh]”hŒdepevt”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M.hj Nubj1)�”}”(hhh]”hì)�”}”(hŒDevice Endpoint Event”h]”hŒDevice Endpoint Event”…”�”}”(hj)Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j%Nh´M.hj&Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%Nh´M.hj•Mubj)�”}”(hŒ``devt`` Device Event ”h]”(j)�”}”(hŒ``devt``”h]”jÄ)�”}”(hjINh]”hŒdevt”…”�”}”(hjKNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjGNubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M/hjCNubj1)�”}”(hhh]”hì)�”}”(hŒ Device Event”h]”hŒ Device Event”…”�”}”(hjbNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j^Nh´M/hj_Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjCNubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j^Nh´M/hj•Mubj)�”}”(hŒ``gevt`` Global Event”h]”(j)�”}”(hŒ``gevt``”h]”jÄ)�”}”(hj‚Nh]”hŒgevt”…”�”}”(hj„Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj€Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M/hj|Nubj1)�”}”(hhh]”hì)�”}”(hŒ Global Event”h]”hŒ Global Event”…”�”}”(hj›Nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M0hj˜Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj|Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j—Nh´M/hj•Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjMMubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ$dwc3_gadget_ep_cmd_params (C struct)”Œc.dwc3_gadget_ep_cmd_params”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒdwc3_gadget_ep_cmd_params”h]”j?)�”}”(hŒ struct dwc3_gadget_ep_cmd_params”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÜNh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjØNh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M6ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêNh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjØNh²hh³jéNh´M6ubjh)�”}”(hŒdwc3_gadget_ep_cmd_params”h]”jn)�”}”(hjÖNh]”hŒdwc3_gadget_ep_cmd_params”…”�”}”(hjüNh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjøNubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjØNh²hh³jéNh´M6ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÔNh²hh³jéNh´M6ubah}”(h]”jÏNah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jéNh´M6hjÑNh²hubjš)�”}”(hhh]”hì)�”}”(hŒ-representation of endpoint command parameters”h]”hŒ-representation of endpoint command parameters”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M:hjOh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÑNh²hh³jéNh´M6ubeh}”(h]”h ]”(j¶Œstruct”eh"]”h$]”h&]”j»j¶j¼j6Oj½j6Oj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒÙ**Definition**:: struct dwc3_gadget_ep_cmd_params { u32 param2; u32 param1; u32 param0; }; **Members** ``param2`` third parameter ``param1`` second parameter ``param0`` first parameter”h]”(hì)�”}”(hŒ**Definition**::”h]”(j®)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjBOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj>OubhŒ:”…”�”}”(hj>Oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M>hj:Oubj¥)�”}”(hŒUstruct dwc3_gadget_ep_cmd_params { u32 param2; u32 param1; u32 param0; };”h]”hŒUstruct dwc3_gadget_ep_cmd_params { u32 param2; u32 param1; u32 param0; };”…”�”}”hj[Osbah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j¤h³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M@hj:Oubhì)�”}”(hŒ **Members**”h]”j®)�”}”(hjlOh]”hŒMembers”…”�”}”(hjnOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjjOubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MFhj:Oubj )�”}”(hhh]”(j)�”}”(hŒ``param2`` third parameter ”h]”(j)�”}”(hŒ ``param2``”h]”jÄ)�”}”(hj‹Oh]”hŒparam2”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj‰Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M=hj…Oubj1)�”}”(hhh]”hì)�”}”(hŒthird parameter”h]”hŒthird parameter”…”�”}”(hj¤Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j Oh´M=hj¡Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj…Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j Oh´M=hj‚Oubj)�”}”(hŒ``param1`` second parameter ”h]”(j)�”}”(hŒ ``param1``”h]”jÄ)�”}”(hjÄOh]”hŒparam1”…”�”}”(hjÆOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÂOubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M>hj¾Oubj1)�”}”(hhh]”hì)�”}”(hŒsecond parameter”h]”hŒsecond parameter”…”�”}”(hjÝOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÙOh´M>hjÚOubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¾Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÙOh´M>hj‚Oubj)�”}”(hŒ``param0`` first parameter”h]”(j)�”}”(hŒ ``param0``”h]”jÄ)�”}”(hjýOh]”hŒparam0”…”�”}”(hjÿOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjûOubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M>hj÷Oubj1)�”}”(hhh]”hì)�”}”(hŒfirst parameter”h]”hŒfirst parameter”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´M?hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj÷Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPh´M>hj‚Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj:Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_mdwidth (C function)”Œc.dwc3_mdwidth”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ#u32 dwc3_mdwidth (struct dwc3 *dwc)”h]”j?)�”}”(hŒ"u32 dwc3_mdwidth(struct dwc3 *dwc)”h]”(h)�”}”(hhh]”jn)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjZPh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjWPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”Œ identifier”Œ reftarget”j\PŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”juPŒ ASTIdentifier”“”)�”}”jpPŒ dwc3_mdwidth”sbŒc.dwc3_mdwidth”†”asbuh1hhjSPh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MiubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Ph²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjSPh²hh³jƒPh´Miubjh)�”}”(hŒ dwc3_mdwidth”h]”jn)�”}”(hj€Ph]”hŒ dwc3_mdwidth”…”�”}”(hj–Ph²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj’Pubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjSPh²hh³jƒPh´MiubhŒdesc_parameterlist”“”)�”}”(hŒ(struct dwc3 *dwc)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjµPh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj±PubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂPh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj±Pubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjÓPh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÐPubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÕPŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j~PŒc.dwc3_mdwidth”†”asbuh1hhj±PubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñPh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj±PubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jÿPhj±Pubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj±Pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj«Pubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjSPh²hh³jƒPh´Miubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjOPh²hh³jƒPh´Miubah}”(h]”jJPah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jƒPh´MihjLPh²hubjš)�”}”(hhh]”hì)�”}”(hŒget MDWIDTH value in bits”h]”hŒget MDWIDTH value in bits”…”�”}”(hj:Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´Mihj7Qh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjLPh²hh³jƒPh´Miubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jRQj½jRQj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ…**Parameters** ``struct dwc3 *dwc`` pointer to our context structure **Description** Return MDWIDTH configuration value in bits.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj\Qh]”hŒ Parameters”…”�”}”(hj^Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjZQubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MmhjVQubj )�”}”(hhh]”j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj{Qh]”hŒstruct dwc3 *dwc”…”�”}”(hj}Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjyQubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MjhjuQubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj”Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�Qh´Mjhj‘Qubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjuQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Qh´MjhjrQubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjVQubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj¶Qh]”hŒ Description”…”�”}”(hj¸Qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj´Qubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MlhjVQubhì)�”}”(hŒ+Return MDWIDTH configuration value in bits.”h]”hŒ+Return MDWIDTH configuration value in bits.”…”�”}”(hjÌQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:687: ./drivers/usb/dwc3/core.h”h´MkhjVQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œnext_request (C function)”Œc.next_request”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ;struct dwc3_request * next_request (struct list_head *list)”h]”j?)�”}”(hŒ9struct dwc3_request *next_request(struct list_head *list)”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjûQh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj÷Qh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K@ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Rh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj÷Qh²hh³jRh´K@ubh)�”}”(hhh]”jn)�”}”(hŒ dwc3_request”h]”hŒ dwc3_request”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jRŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPŒ next_request”sbŒc.next_request”†”asbuh1hhj÷Qh²hh³jRh´K@ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Rh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj÷Qh²hh³jRh´K@ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjIRh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj÷Qh²hh³jRh´K@ubjh)�”}”(hŒ next_request”h]”jn)�”}”(hj8Rh]”hŒ next_request”…”�”}”(hjZRh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjVRubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj÷Qh²hh³jRh´K@ubjªP)�”}”(hŒ(struct list_head *list)”h]”j°P)�”}”(hŒstruct list_head *list”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjuRh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjqRubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚Rh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjqRubh)�”}”(hhh]”jn)�”}”(hŒ list_head”h]”hŒ list_head”…”�”}”(hj“Rh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j•RŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j6RŒc.next_request”†”asbuh1hhjqRubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±Rh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjqRubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj¿Rh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjqRubjn)�”}”(hŒlist”h]”hŒlist”…”�”}”(hjÌRh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjqRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjmRubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj÷Qh²hh³jRh´K@ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjóQh²hh³jR•lh´K@ubah}”(h]”jîQah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jRh´K@hjðQh²hubjš)�”}”(hhh]”hì)�”}”(hŒ'gets the next request on the given list”h]”hŒ'gets the next request on the given list”…”�”}”(hjöRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K@hjóRh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjðQh²hh³jRh´K@ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jSj½jSj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒË**Parameters** ``struct list_head *list`` the request list to operate on **Description** Caller should take care of locking. This function return ``NULL`` or the first request available on **list**.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjSh]”hŒ Parameters”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KDhjSubj )�”}”(hhh]”j)�”}”(hŒ:``struct list_head *list`` the request list to operate on ”h]”(j)�”}”(hŒ``struct list_head *list``”h]”jÄ)�”}”(hj7Sh]”hŒstruct list_head *list”…”�”}”(hj9Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj5Subah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KAhj1Subj1)�”}”(hhh]”hì)�”}”(hŒthe request list to operate on”h]”hŒthe request list to operate on”…”�”}”(hjPSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jLSh´KAhjMSubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj1Subeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jLSh´KAhj.Subah}”(h]”h ]”h"]”h$]”h&]”uh1j hjSubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjrSh]”hŒ Description”…”�”}”(hjtSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjpSubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KChjSubhì)�”}”(hŒmCaller should take care of locking. This function return ``NULL`` or the first request available on **list**.”h]”(hŒ9Caller should take care of locking. This function return ”…”�”}”(hjˆSh²hh³Nh´NubjÄ)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj�Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjˆSubhŒ# or the first request available on ”…”�”}”(hjˆSh²hh³Nh´Nubj®)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj¢Sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjˆSubhŒ.”…”�”}”(hjˆSh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KBhjSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ-dwc3_gadget_move_started_request (C function)”Œ"c.dwc3_gadget_move_started_request”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ@void dwc3_gadget_move_started_request (struct dwc3_request *req)”h]”j?)�”}”(hŒ?void dwc3_gadget_move_started_request(struct dwc3_request *req)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÝSh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jÛShj×Sh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KLubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíSh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj×Sh²hh³jìSh´KLubjh)�”}”(hŒ dwc3_gadget_move_started_request”h]”jn)�”}”(hŒ dwc3_gadget_move_started_request”h]”hŒ dwc3_gadget_move_started_request”…”�”}”(hjÿSh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjûSubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj×Sh²hh³jìSh´KLubjªP)�”}”(hŒ(struct dwc3_request *req)”h]”j°P)�”}”(hŒstruct dwc3_request *req”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjTubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Th²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjTubh)�”}”(hhh]”jn)�”}”(hŒ dwc3_request”h]”hŒ dwc3_request”…”�”}”(hj9Th²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj6Tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j;TŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjTsbŒ"c.dwc3_gadget_move_started_request”†”asbuh1hhjTubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjYTh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjTubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjgTh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjTubjn)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjtTh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjTubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjTubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj×Sh²hh³jìSh´KLubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÓSh²hh³jìSh´KLubah}”(h]”jÎSah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jìSh´KLhjÐSh²hubjš)�”}”(hhh]”hì)�”}”(hŒ move **req** to the started_list”h]”(hŒmove ”…”�”}”(hjžTh²hh³Nh´Nubj®)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hj¦Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjžTubhŒ to the started_list”…”�”}”(hjžTh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KLhj›Th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÐSh²hh³jìSh´KLubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jÈTj½jÈTj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒÒ**Parameters** ``struct dwc3_request *req`` the request to be moved **Description** Caller should take care of locking. This function will move **req** from its current list to the endpoint's started_list.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjÒTh]”hŒ Parameters”…”�”}”(hjÔTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÐTubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KPhjÌTubj )�”}”(hhh]”j)�”}”(hŒ5``struct dwc3_request *req`` the request to be moved ”h]”(j)�”}”(hŒ``struct dwc3_request *req``”h]”jÄ)�”}”(hjñTh]”hŒstruct dwc3_request *req”…”�”}”(hjóTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjïTubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KMhjëTubj1)�”}”(hhh]”hì)�”}”(hŒthe request to be moved”h]”hŒthe request to be moved”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jUh´KMhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjëTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jUh´KMhjèTubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjÌTubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj,Uh]”hŒ Description”…”�”}”(hj.Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj*Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KOhjÌTubhì)�”}”(hŒyCaller should take care of locking. This function will move **req** from its current list to the endpoint's started_list.”h]”(hŒjŒj�hj{Uh²hh³j‘Uh´K[ubah}”(h]”jvUah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j‘Uh´K[hjxUh²hubjš)�”}”(hhh]”hì)�”}”(hŒ"move **req** to the cancelled_list”h]”(hŒmove ”…”�”}”(hj”Vh²hh³Nh´Nubj®)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hjœVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj”VubhŒ to the cancelled_list”…”�”}”(hj”Vh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K[hj‘Vh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjxUh²hh³j‘Uh´K[ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j¾Vj½j¾Vj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3_request *req`` the request to be moved ``unsigned int reason`` cancelled reason for the dwc3 request **Description** Caller should take care of locking. This function will move **req** from its current list to the endpoint's cancelled_list.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjÈVh]”hŒ Parameters”…”�”}”(hjÊVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÆVubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K_hjÂVubj )�”}”(hhh]”(j)�”}”(hŒ5``struct dwc3_request *req`` the request to be moved ”h]”(j)�”}”(hŒ``struct dwc3_request *req``”h]”jÄ)�”}”(hjçVh]”hŒstruct dwc3_request *req”…”�”}”(hjéVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjåVubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K\hjáVubj1)�”}”(hhh]”hì)�”}”(hŒthe request to be moved”h]”hŒthe request to be moved”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jüVh´K\hjýVubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjáVubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jüVh´K\hjÞVubj)�”}”(hŒ>``unsigned int reason`` cancelled reason for the dwc3 request ”h]”(j)�”}”(hŒ``unsigned int reason``”h]”jÄ)�”}”(hj Wh]”hŒunsigned int reason”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K]hjWubj1)�”}”(hhh]”hì)�”}”(hŒ%cancelled reason for the dwc3 request”h]”hŒ%cancelled reason for the dwc3 request”…”�”}”(hj9Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j5Wh´K]hj6Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5Wh´K]hjÞVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÂVubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj[Wh]”hŒ Description”…”�”}”(hj]Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjYWubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K_hjÂVubhì)�”}”(hŒ{Caller should take care of locking. This function will move **req** from its current list to the endpoint's cancelled_list.”h]”(hŒjŒj�hjªWh²hh³jÀWh´K}ubah}”(h]”j¥Wah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jÀWh´K}hj§Wh²hubjš)�”}”(hhh]”hì)�”}”(hŒGets transfer index from HW”h]”hŒGets transfer index from HW”…”�”}”(hjrXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K}hjoXh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj§Wh²hh³jÀWh´K}ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jŠXj½jŠXj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ§**Parameters** ``struct dwc3_ep *dep`` dwc3 endpoint **Description** Caller should take care of locking. Returns the transfer resource index for a given endpoint.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj”Xh]”hŒ Parameters”…”�”}”(hj–Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj’Xubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K�hjŽXubj )�”}”(hhh]”j)�”}”(hŒ&``struct dwc3_ep *dep`` dwc3 endpoint ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj³Xh]”hŒstruct dwc3_ep *dep”…”�”}”(hjµXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj±Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K~hj­Xubj1)�”}”(hhh]”hì)�”}”(hŒ dwc3 endpoint”h]”hŒ dwc3 endpoint”…”�”}”(hjÌXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÈXh´K~hjÉXubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj­Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÈXh´K~hjªXubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŽXubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjîXh]”hŒ Description”…”�”}”(hjðXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjìXubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K€hjŽXubhì)�”}”(hŒ]Caller should take care of locking. Returns the transfer resource index for a given endpoint.”h]”hŒ]Caller should take care of locking. Returns the transfer resource index for a given endpoint.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KhjŽXubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ(dwc3_gadget_dctl_write_safe (C function)”Œc.dwc3_gadget_dctl_write_safe”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ>void dwc3_gadget_dctl_write_safe (struct dwc3 *dwc, u32 value)”h]”j?)�”}”(hŒ=void dwc3_gadget_dctl_write_safe(struct dwc3 *dwc, u32 value)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj3Yh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj/Yh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KŒubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBYh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj/Yh²hh³jAYh´KŒubjh)�”}”(hŒdwc3_gadget_dctl_write_safe”h]”jn)�”}”(hŒdwc3_gadget_dctl_write_safe”h]”hŒdwc3_gadget_dctl_write_safe”…”�”}”(hjTYh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjPYubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj/Yh²hh³jAYh´KŒubjªP)�”}”(hŒ(struct dwc3 *dwc, u32 value)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjpYh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjlYubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Yh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjlYubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjŽYh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj‹Yubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j�YŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjVYsbŒc.dwc3_gadget_dctl_write_safe”†”asbuh1hhjlYubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Yh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjlYubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj¼Yh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjlYubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjÉYh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjlYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjhYubj°P)�”}”(hŒ u32 value”h]”(h)�”}”(hhh]”jn)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjåYh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjâYubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jçYŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”jªYŒc.dwc3_gadget_dctl_write_safe”†”asbuh1hhjÞYubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÞYubjn)�”}”(hŒvalue”h]”hŒvalue”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÞYubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjhYubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj/Yh²hh³jAYh´KŒubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj+Yh²hh³jAYh´KŒubah}”(h]”j&Yah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jAYh´KŒhj(Yh²hubjš)�”}”(hhh]”hì)�”}”(hŒ)write to DCTL safe from link state change”h]”hŒ)write to DCTL safe from link state change”…”�”}”(hj;Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KŒhj8Zh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj(Yh²hh³jAYh´KŒubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jSZj½jSZj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒå**Parameters** ``struct dwc3 *dwc`` pointer to our context structure ``u32 value`` value to write to DCTL **Description** Use this function when doing read-modify-write to DCTL. It will not send link state change request.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj]Zh]”hŒ Parameters”…”�”}”(hj_Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj[Zubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K�hjWZubj )�”}”(hhh]”(j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj|Zh]”hŒstruct dwc3 *dwc”…”�”}”(hj~Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjzZubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K�hjvZubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj•Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j‘Zh´K�hj’Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjvZubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‘Zh´K�hjsZubj)�”}”(hŒ%``u32 value`` value to write to DCTL ”h]”(j)�”}”(hŒ ``u32 value``”h]”jÄ)�”}”(hjµZh]”hŒ u32 value”…”�”}”(hj·Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj³Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´KŽhj¯Zubj1)�”}”(hhh]”hì)�”}”(hŒvalue to write to DCTL”h]”hŒvalue to write to DCTL”…”�”}”(hjÎZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÊZh´KŽhjËZubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¯Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÊZh´KŽhjsZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjWZubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjðZh]”hŒ Description”…”�”}”(hjòZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjîZubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K�hjWZubhì)�”}”(hŒcUse this function when doing read-modify-write to DCTL. It will not send link state change request.”h]”hŒcUse this function when doing read-modify-write to DCTL. It will not send link state change request.”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:691: ./drivers/usb/dwc3/gadget.h”h´K�hjWZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ&dwc3_gadget_set_test_mode (C function)”Œc.dwc3_gadget_set_test_mode”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ:int dwc3_gadget_set_test_mode (struct dwc3 *dwc, int mode)”h]”j?)�”}”(hŒ9int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj5[h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj1[h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K"ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjD[h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj1[h²hh³jC[h´K"ubjh)�”}”(hŒdwc3_gadget_set_test_mode”h]”jn)�”}”(hŒdwc3_gadget_set_test_mode”h]”hŒdwc3_gadget_set_test_mode”…”�”}”(hjV[h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjR[ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj1[h²hh³jC[h´K"ubjªP)�”}”(hŒ(struct dwc3 *dwc, int mode)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjr[h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjn[ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjn[ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hj�[h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j’[Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjX[sbŒc.dwc3_gadget_set_test_mode”†”asbuh1hhjn[ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°[h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjn[ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj¾[h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjn[ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjË[h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjn[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjj[ubj°P)�”}”(hŒint mode”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjä[h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjà[ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjò[h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjà[ubjn)�”}”(hŒmode”h]”hŒmode”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjà[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjj[ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj1[h²hh³jC[h´K"ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj-[h²hh³jC[h´K"ubah}”(h]”j([ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jC[h´K"hj*[h²hubjš)�”}”(hhh]”hì)�”}”(hŒenables usb2 test modes”h]”hŒenables usb2 test modes”…”�”}”(hj*\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K"hj'\h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj*[h²hh³jC[h´K"ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jB\j½jB\j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3 *dwc`` pointer to our context structure ``int mode`` the mode to set (J, K SE0 NAK, Force Enable) **Description** Caller should take care of locking. This function will return 0 on success or -EINVAL if wrong Test Selector is passed.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjL\h]”hŒ Parameters”…”�”}”(hjN\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjJ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K&hjF\ubj )�”}”(hhh]”(j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjk\h]”hŒstruct dwc3 *dwc”…”�”}”(hjm\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhji\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K#hje\ubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj„\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j€\h´K#hj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hje\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€\h´K#hjb\ubj)�”}”(hŒ:``int mode`` the mode to set (J, K SE0 NAK, Force Enable) ”h]”(j)�”}”(hŒ ``int mode``”h]”jÄ)�”}”(hj¤\h]”hŒint mode”…”�”}”(hj¦\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¢\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K$hjž\ubj1)�”}”(hhh]”hì)�”}”(hŒ,the mode to set (J, K SE0 NAK, Force Enable)”h]”hŒ,the mode to set (J, K SE0 NAK, Force Enable)”…”�”}”(hj½\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¹\h´K$hjº\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjž\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¹\h´K$hjb\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjF\ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjß\h]”hŒ Description”…”�”}”(hjá\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÝ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K&hjF\ubhì)�”}”(hŒwCaller should take care of locking. This function will return 0 on success or -EINVAL if wrong Test Selector is passed.”h]”hŒwCaller should take care of locking. This function will return 0 on success or -EINVAL if wrong Test Selector is passed.”…”�”}”(hjõ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K%hjF\ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ'dwc3_gadget_get_link_state (C function)”Œc.dwc3_gadget_get_link_state”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ1int dwc3_gadget_get_link_state (struct dwc3 *dwc)”h]”j?)�”}”(hŒ0int dwc3_gadget_get_link_state(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj$]h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj ]h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KBubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3]h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj ]h²hh³j2]h´KBubjh)�”}”(hŒdwc3_gadget_get_link_state”h]”jn)�”}”(hŒdwc3_gadget_get_link_state”h]”hŒdwc3_gadget_get_link_state”…”�”}”(hjE]h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjA]ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj ]h²hh³j2]h´KBubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hja]h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj]]ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn]h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj]]ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj|]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j�]Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjG]sbŒc.dwc3_gadget_get_link_state”†”asbuh1hhj]]ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ]h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj]]ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj­]h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj]]ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjº]h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj]]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjY]ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj ]h²hh³j2]h´KBubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj]h²hh³j2]h´KBubah}”(h]”j]ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j2]h´KBhj]h²hubjš)�”}”(hhh]”hì)�”}”(hŒgets current state of usb link”h]”hŒgets current state of usb link”…”�”}”(hjä]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KBhjá]h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj]h²hh³j2]h´KBubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jü]j½jü]j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒÇ**Parameters** ``struct dwc3 *dwc`` pointer to our context structure **Description** Caller should take care of locking. This function will return the link state on success (>= 0) or -ETIMEDOUT.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj^h]”hŒ Parameters”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KFhj^ubj )�”}”(hhh]”j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj%^h]”hŒstruct dwc3 *dwc”…”�”}”(hj'^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj#^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KChj^ubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj>^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j:^h´KChj;^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j:^h´KChj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj^ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj`^h]”hŒ Description”…”�”}”(hjb^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj^^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KEhj^ubhì)�”}”(hŒmCaller should take care of locking. This function will return the link state on success (>= 0) or -ETIMEDOUT.”h]”hŒmCaller should take care of locking. This function will return the link state on success (>= 0) or -ETIMEDOUT.”…”�”}”(hjv^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KDhj^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ'dwc3_gadget_set_link_state (C function)”Œc.dwc3_gadget_set_link_state”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒMint dwc3_gadget_set_link_state (struct dwc3 *dwc, enum dwc3_link_state state)”h]”j?)�”}”(hŒLint dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥^h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj¡^h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KRubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´^h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj¡^h²hh³j³^h´KRubjh)�”}”(hŒdwc3_gadget_set_link_state”h]”jn)�”}”(hŒdwc3_gadget_set_link_state”h]”hŒdwc3_gadget_set_link_state”…”�”}”(hjÆ^h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÂ^ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj¡^h²hh³j³^h´KRubjªP)�”}”(hŒ.(struct dwc3 *dwc, enum dwc3_link_state state)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjâ^h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÞ^ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï^h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÞ^ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjý^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j_Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjÈ^sbŒc.dwc3_gadget_set_link_state”†”asbuh1hhjÞ^ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÞ^ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj._h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÞ^ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj;_h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÞ^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÚ^ubj°P)�”}”(hŒenum dwc3_link_state state”h]”(jE)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjT_h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjP_ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjb_h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjP_ubh)�”}”(hhh]”jn)�”}”(hŒdwc3_link_state”h]”hŒdwc3_link_state”…”�”}”(hjs_h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjp_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”ju_Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j_Œc.dwc3_gadget_set_link_state”†”asbuh1hhjP_ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘_h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjP_ubjn)�”}”(hŒstate”h]”hŒstate”…”�”}”(hjŸ_h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjP_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÚ^ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj¡^h²hh³j³^h´KRubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj�^h²hh³j³^h´KRubah}”(h]”j˜^ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j³^h´KRhjš^h²hubjš)�”}”(hhh]”hì)�”}”(hŒ#sets usb link to a particular state”h]”hŒ#sets usb link to a particular state”…”�”}”(hjÉ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KRhjÆ_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjš^h²hh³j³^h´KRubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼já_j½já_j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒð**Parameters** ``struct dwc3 *dwc`` pointer to our context structure ``enum dwc3_link_state state`` the state to put link into **Description** Caller should take care of locking. This function will return 0 on success or -ETIMEDOUT.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjë_h]”hŒ Parameters”…”�”}”(hjí_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjé_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KVhjå_ubj )�”}”(hhh]”(j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj `h]”hŒstruct dwc3 *dwc”…”�”}”(hj `h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KShj`ubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj#`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j`h´KShj `ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j`h´KShj`ubj)�”}”(hŒ:``enum dwc3_link_state state`` the state to put link into ”h]”(j)�”}”(hŒ``enum dwc3_link_state state``”h]”jÄ)�”}”(hjC`h]”hŒenum dwc3_link_state state”…”�”}”(hjE`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjA`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KThj=`ubj1)�”}”(hhh]”hì)�”}”(hŒthe state to put link into”h]”hŒthe state to put link into”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jX`h´KThjY`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj=`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jX`h´KThj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjå_ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj~`h]”hŒ Description”…”�”}”(hj€`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj|`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KVhjå_ubhì)�”}”(hŒYCaller should take care of locking. This function will return 0 on success or -ETIMEDOUT.”h]”hŒYCaller should take care of locking. This function will return 0 on success or -ETIMEDOUT.”…”�”}”(hj”`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KUhjå_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_ep_inc_trb (C function)”Œc.dwc3_ep_inc_trb”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ void dwc3_ep_inc_trb (u8 *index)”h]”j?)�”}”(hŒvoid dwc3_ep_inc_trb(u8 *index)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÃ`h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj¿`h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¡ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ`h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj¿`h²hh³jÑ`h´K¡ubjh)�”}”(hŒdwc3_ep_inc_trb”h]”jn)�”}”(hŒdwc3_ep_inc_trb”h]”hŒdwc3_ep_inc_trb”…”�”}”(hjä`h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjà`ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj¿`h²hh³jÑ`h´K¡ubjªP)�”}”(hŒ (u8 *index)”h]”j°P)�”}”(hŒ u8 *index”h]”(h)�”}”(hhh]”jn)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jaŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjæ`sbŒc.dwc3_ep_inc_trb”†”asbuh1hhjü`ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#ah²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjü`ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj1ah²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjü`ubjn)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj>ah²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjü`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjø`ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj¿`h²hh³jÑ`h´K¡ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj»`h²hh³jÑ`h´K¡ubah}”(h]”j¶`ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jÑ`h´K¡hj¸`h²hubjš)�”}”(hhh]”hì)�”}”(hŒincrement a trb index.”h]”hŒincrement a trb index.”…”�”}”(hjhah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¡hjeah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj¸`h²hh³jÑ`h´K¡ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j€aj½j€aj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``u8 *index`` Pointer to the TRB index to increment. **Description** The index should never point to the link TRB. After incrementing, if it is point to the link TRB, wrap around to the beginning. The link TRB is always at the last TRB entry.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjŠah]”hŒ Parameters”…”�”}”(hjŒah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjˆaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¥hj„aubj )�”}”(hhh]”j)�”}”(hŒ5``u8 *index`` Pointer to the TRB index to increment. ”h]”(j)�”}”(hŒ ``u8 *index``”h]”jÄ)�”}”(hj©ah]”hŒ u8 *index”…”�”}”(hj«ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj§aubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¢hj£aubj1)�”}”(hhh]”hì)�”}”(hŒ&Pointer to the TRB index to increment.”h]”hŒ&Pointer to the TRB index to increment.”…”�”}”(hjÂah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¾ah´K¢hj¿aubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj£aubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¾ah´K¢hj aubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj„aubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjäah]”hŒ Description”…”�”}”(hjæah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjâaubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¤hj„aubhì)�”}”(hŒ­The index should never point to the link TRB. After incrementing, if it is point to the link TRB, wrap around to the beginning. The link TRB is always at the last TRB entry.”h]”hŒ­The index should never point to the link TRB. After incrementing, if it is point to the link TRB, wrap around to the beginning. The link TRB is always at the last TRB entry.”…”�”}”(hjúah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K£hj„aubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_ep_inc_enq (C function)”Œc.dwc3_ep_inc_enq”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ*void dwc3_ep_inc_enq (struct dwc3_ep *dep)”h]”j?)�”}”(hŒ)void dwc3_ep_inc_enq(struct dwc3_ep *dep)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj)bh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj%bh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K°ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8bh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj%bh²hh³j7bh´K°ubjh)�”}”(hŒdwc3_ep_inc_enq”h]”jn)�”}”(hŒdwc3_ep_inc_enq”h]”hŒdwc3_ep_inc_enq”…”�”}”(hjJbh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjFbubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj%bh²hh³j7bh´K°ubjªP)�”}”(hŒ(struct dwc3_ep *dep)”h]”j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjfbh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjbbubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsbh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjbbubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hj„bh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�bubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j†bŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjLbsbŒc.dwc3_ep_inc_enq”†”asbuh1hhjbbubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤bh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjbbubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj²bh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjbbubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hj¿bh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjbbubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj^bubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj%bh²hh³j7bh´K°ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj!bh²hh³j7bh´K°ubah}”(h]”jbah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j7bh´K°hjbh²hubjš)�”}”(hhh]”hì)�”}”(hŒ$increment endpoint's enqueue pointer”h]”hŒ&increment endpoint’s enqueue pointer”…”�”}”(hjébh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K°hjæbh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjbh²hh³j7bh´K°ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jcj½jcj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ_**Parameters** ``struct dwc3_ep *dep`` The endpoint whose enqueue pointer we're incrementing”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj ch]”hŒ Parameters”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj cubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K´hjcubj )�”}”(hhh]”j)�”}”(hŒM``struct dwc3_ep *dep`` The endpoint whose enqueue pointer we're incrementing”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj*ch]”hŒstruct dwc3_ep *dep”…”�”}”(hj,ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj(cubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¶hj$cubj1)�”}”(hhh]”hì)�”}”(hŒ5The endpoint whose enqueue pointer we're incrementing”h]”hŒ7The endpoint whose enqueue pointer we’re incrementing”…”�”}”(hjCch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K±hj@cubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj$cubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j?ch´K¶hj!cubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjcubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_ep_inc_deq (C function)”Œc.dwc3_ep_inc_deq”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ*void dwc3_ep_inc_deq (struct dwc3_ep *dep)”h]”j?)�”}”(hŒ)void dwc3_ep_inc_deq(struct dwc3_ep *dep)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj„ch²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj€ch²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¹ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“ch²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj€ch²hh³j’ch´K¹ubjh)�”}”(hŒdwc3_ep_inc_deq”h]”jn)�”}”(hŒdwc3_ep_inc_deq”h]”hŒdwc3_ep_inc_deq”…”�”}”(hj¥ch²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¡cubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj€ch²hh³j’ch´K¹ubjªP)�”}”(hŒ(struct dwc3_ep *dep)”h]”j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÁch²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj½cubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎch²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj½cubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hjßch²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÜcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jácŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj§csbŒc.dwc3_ep_inc_deq”†”asbuh1hhj½cubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿch²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj½cubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj dh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj½cubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj½cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj¹cubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj€ch²hh³j’ch´K¹ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj|ch²hh³j’ch´K¹ubah}”(h]”jwcah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j’ch´K¹hjych²hubjš)�”}”(hhh]”hì)�”}”(hŒ$increment endpoint's dequeue pointer”h]”hŒ&increment endpoint’s dequeue pointer”…”�”}”(hjDdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¹hjAdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjych²hh³j’ch´K¹ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j\dj½j\dj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ_**Parameters** ``struct dwc3_ep *dep`` The endpoint whose enqueue pointer we're incrementing”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjfdh]”hŒ Parameters”…”�”}”(hjhdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjddubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K½hj`dubj )�”}”(hhh]”j)�”}”(hŒM``struct dwc3_ep *dep`` The endpoint whose enqueue pointer we're incrementing”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj…dh]”hŒstruct dwc3_ep *dep”…”�”}”(hj‡dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjƒdubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K¿hjdubj1)�”}”(hhh]”hì)�”}”(hŒ5The endpoint whose enqueue pointer we're incrementing”h]”hŒ7The endpoint whose enqueue pointer we’re incrementing”…”�”}”(hjždh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Kºhj›dubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jšdh´K¿hj|dubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj`dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ!dwc3_gadget_giveback (C function)”Œc.dwc3_gadget_giveback”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒUvoid dwc3_gadget_giveback (struct dwc3_ep *dep, struct dwc3_request *req, int status)”h]”j?)�”}”(hŒTvoid dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req, int status)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjßdh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÛdh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÙubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîdh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÛdh²hh³jídh´KÙubjh)�”}”(hŒdwc3_gadget_giveback”h]”jn)�”}”(hŒdwc3_gadget_giveback”h]”hŒdwc3_gadget_giveback”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjüdubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjÛdh²hh³jídh´KÙubjªP)�”}”(hŒ;(struct dwc3_ep *dep, struct dwc3_request *req, int status)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjeubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)eh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjeubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hj:eh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj7eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jjŒj�hj×dh²hh³jídh´KÙubah}”(h]”jÒdah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jídh´KÙhjÔdh²hubjš)�”}”(hhh]”hì)�”}”(hŒ-call struct usb_request's ->complete callback”h]”hŒ/call struct usb_request’s ->complete callback”…”�”}”(hjDfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÙhjAfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÔdh²hh³jídh´KÙubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j\fj½j\fj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX�**Parameters** ``struct dwc3_ep *dep`` The endpoint to whom the request belongs to ``struct dwc3_request *req`` The request we're giving back ``int status`` completion code for the request **Description** Must be called with controller's lock held and interrupts disabled. This function will unmap **req** and call its ->complete() callback to notify upper layers that it has completed.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjffh]”hŒ Parameters”…”�”}”(hjhfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjdfubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÝhj`fubj )�”}”(hhh]”(j)�”}”(hŒD``struct dwc3_ep *dep`` The endpoint to whom the request belongs to ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj…fh]”hŒstruct dwc3_ep *dep”…”�”}”(hj‡fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjƒfubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÚhjfubj1)�”}”(hhh]”hì)�”}”(hŒ+The endpoint to whom the request belongs to”h]”hŒ+The endpoint to whom the request belongs to”…”�”}”(hjžfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jšfh´KÚhj›fubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jšfh´KÚhj|fubj)�”}”(hŒ;``struct dwc3_request *req`` The request we're giving back ”h]”(j)�”}”(hŒ``struct dwc3_request *req``”h]”jÄ)�”}”(hj¾fh]”hŒstruct dwc3_request *req”…”�”}”(hjÀfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¼fubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÛhj¸fubj1)�”}”(hhh]”hì)�”}”(hŒThe request we're giving back”h]”hŒThe request we’re giving back”…”�”}”(hj×fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÓfh´KÛhjÔfubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¸fubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÓfh´KÛhj|fubj)�”}”(hŒ/``int status`` completion code for the request ”h]”(j)�”}”(hŒ``int status``”h]”jÄ)�”}”(hj÷fh]”hŒ int status”…”�”}”(hjùfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjõfubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÜhjñfubj1)�”}”(hhh]”hì)�”}”(hŒcompletion code for the request”h]”hŒcompletion code for the request”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j gh´KÜhj gubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjñfubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j gh´KÜhj|fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj`fubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj2gh]”hŒ Description”…”�”}”(hj4gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj0gubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÞhj`fubhì)�”}”(hŒµMust be called with controller's lock held and interrupts disabled. This function will unmap **req** and call its ->complete() callback to notify upper layers that it has completed.”h]”(hŒ_Must be called with controller’s lock held and interrupts disabled. This function will unmap ”…”�”}”(hjHgh²hh³Nh´Nubj®)�”}”(hŒ**req**”h]”hŒreq”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjHgubhŒQ and call its ->complete() callback to notify upper layers that it has completed.”…”�”}”(hjHgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´KÝhj`fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ-dwc3_send_gadget_generic_command (C function)”Œ"c.dwc3_send_gadget_generic_command”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒTint dwc3_send_gadget_generic_command (struct dwc3 *dwc, unsigned int cmd, u32 param)”h]”j?)�”}”(hŒSint dwc3_send_gadget_generic_command(struct dwc3 *dwc, unsigned int cmd, u32 param)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰gh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj…gh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K÷ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜gh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj…gh²hh³j—gh´K÷ubjh)�”}”(hŒ dwc3_send_gadget_generic_command”h]”jn)�”}”(hŒ dwc3_send_gadget_generic_command”h]”hŒ dwc3_send_gadget_generic_command”…”�”}”(hjªgh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¦gubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj…gh²hh³j—gh´K÷ubjªP)�”}”(hŒ/(struct dwc3 *dwc, unsigned int cmd, u32 param)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÆgh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÂgubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓgh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÂgubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjägh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjágubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jægŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj¬gsbŒ"c.dwc3_send_gadget_generic_command”†”asbuh1hhjÂgubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÂgubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÂgubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÂgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj¾gubj°P)�”}”(hŒunsigned int cmd”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj8hh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj4hubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFhh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj4hubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjThh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj4hubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbhh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj4hubjn)�”}”(hŒcmd”h]”hŒcmd”…”�”}”(hjphh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj4hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj¾gubj°P)�”}”(hŒ u32 param”h]”(h)�”}”(hhh]”jn)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŒhh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj‰hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jŽhŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”jhŒ"c.dwc3_send_gadget_generic_command”†”asbuh1hhj…hubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj…hubjn)�”}”(hŒparam”h]”hŒparam”…”�”}”(hj¸hh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj…hubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj¾gubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj…gh²hh³j—gh´K÷ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj�gh²hh³j—gh´K÷ubah}”(h]”j|gah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j—gh´K÷hj~gh²hubjš)�”}”(hhh]”hì)�”}”(hŒ*issue a generic command for the controller”h]”hŒ*issue a generic command for the controller”…”�”}”(hjâhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´K÷hjßhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj~gh²hh³j—gh´K÷ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼júhj½júhj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3 *dwc`` pointer to the controller context ``unsigned int cmd`` the command to be issued ``u32 param`` command parameter **Description** Caller should take care of locking. Issue **cmd** with a given **param** to **dwc** and wait for its completion.”•5h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjih]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Kûhjþhubj )�”}”(hhh]”(j)�”}”(hŒ7``struct dwc3 *dwc`` pointer to the controller context ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj#ih]”hŒstruct dwc3 *dwc”…”�”}”(hj%ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj!iubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Køhjiubj1)�”}”(hhh]”hì)�”}”(hŒ!pointer to the controller context”h]”hŒ!pointer to the controller context”…”�”}”(hjjŒj�hjCjh²hh³jYjh´Mubah}”(h]”j>jah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jYjh´Mhj@jh²hubjš)�”}”(hhh]”hì)�”}”(hŒissue an endpoint command”h]”hŒissue an endpoint command”…”�”}”(hjÌkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MhjÉkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj@jh²hh³jYjh´Mubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jäkj½jäkj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX¬**Parameters** ``struct dwc3_ep *dep`` the endpoint to which the command is going to be issued ``unsigned int cmd`` the command to be issued ``struct dwc3_gadget_ep_cmd_params *params`` parameters to the command **Description** Caller should handle locking. This function will issue **cmd** with given **params** to **dep** and wait for its completion. According to the programming guide, if the link state is in L1/L2/U3, then sending the Start Transfer command may not complete. The programming guide suggested to bring the link state back to ON/U0 by performing remote wakeup prior to sending the command. However, don't initiate remote wakeup when the user/function does not send wakeup request via wakeup ops. Send the command when it's allowed. **Notes** For L1 link state, issuing a command requires the clearing of GUSB2PHYCFG.SUSPENDUSB2, which turns on the signal required to complete the given command (usually within 50us). This should happen within the command timeout set by driver. No additional step is needed. For L2 or U3 link state, the gadget is in USB suspend. Care should be taken when sending Start Transfer command to ensure that it's done after USB resume.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjîkh]”hŒ Parameters”…”�”}”(hjðkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjìkubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M#hjèkubj )�”}”(hhh]”(j)�”}”(hŒP``struct dwc3_ep *dep`` the endpoint to which the command is going to be issued ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj lh]”hŒstruct dwc3_ep *dep”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj lubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M hjlubj1)�”}”(hhh]”hì)�”}”(hŒ7the endpoint to which the command is going to be issued”h]”hŒ7the endpoint to which the command is going to be issued”…”�”}”(hj&lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j"lh´M hj#lubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j"lh´M hjlubj)�”}”(hŒ.``unsigned int cmd`` the command to be issued ”h]”(j)�”}”(hŒ``unsigned int cmd``”h]”jÄ)�”}”(hjFlh]”hŒunsigned int cmd”…”�”}”(hjHlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjDlubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M!hj@lubj1)�”}”(hhh]”hì)�”}”(hŒthe command to be issued”h]”hŒthe command to be issued”…”�”}”(hj_lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j[lh´M!hj\lubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj@lubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j[lh´M!hjlubj)�”}”(hŒG``struct dwc3_gadget_ep_cmd_params *params`` parameters to the command ”h]”(j)�”}”(hŒ,``struct dwc3_gadget_ep_cmd_params *params``”h]”jÄ)�”}”(hjlh]”hŒ(struct dwc3_gadget_ep_cmd_params *params”…”�”}”(hj�lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj}lubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M"hjylubj1)�”}”(hhh]”hì)�”}”(hŒparameters to the command”h]”hŒparameters to the command”…”�”}”(hj˜lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j”lh´M"hj•lubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjylubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j”lh´M"hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjèkubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjºlh]”hŒ Description”…”�”}”(hj¼lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¸lubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M$hjèkubhì)�”}”(hŒ|Caller should handle locking. This function will issue **cmd** with given **params** to **dep** and wait for its completion.”h]”(hŒ7Caller should handle locking. This function will issue ”…”�”}”(hjÐlh²hh³Nh´Nubj®)�”}”(hŒ**cmd**”h]”hŒcmd”…”�”}”(hjØlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÐlubhŒ with given ”…”�”}”(hjÐlh²hh³Nh´Nubj®)�”}”(hŒ **params**”h]”hŒparams”…”�”}”(hjêlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÐlubhŒ to ”…”�”}”(hjÐlh²hh³Nh´Nubj®)�”}”(hŒ**dep**”h]”hŒdep”…”�”}”(hjülh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÐlubhŒ and wait for its completion.”…”�”}”(hjÐlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M#hjèkubhì)�”}”(hX�According to the programming guide, if the link state is in L1/L2/U3, then sending the Start Transfer command may not complete. The programming guide suggested to bring the link state back to ON/U0 by performing remote wakeup prior to sending the command. However, don't initiate remote wakeup when the user/function does not send wakeup request via wakeup ops. Send the command when it's allowed.”h]”hX‘According to the programming guide, if the link state is in L1/L2/U3, then sending the Start Transfer command may not complete. The programming guide suggested to bring the link state back to ON/U0 by performing remote wakeup prior to sending the command. However, don’t initiate remote wakeup when the user/function does not send wakeup request via wakeup ops. Send the command when it’s allowed.”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M&hjèkubhì)�”}”(hŒ **Notes**”h]”j®)�”}”(hj&mh]”hŒNotes”…”�”}”(hj(mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj$mubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M-hjèkubhì)�”}”(hX For L1 link state, issuing a command requires the clearing of GUSB2PHYCFG.SUSPENDUSB2, which turns on the signal required to complete the given command (usually within 50us). This should happen within the command timeout set by driver. No additional step is needed.”h]”hX For L1 link state, issuing a command requires the clearing of GUSB2PHYCFG.SUSPENDUSB2, which turns on the signal required to complete the given command (usually within 50us). This should happen within the command timeout set by driver. No additional step is needed.”…”�”}”(hjjŒj�hjrmh²hh³jˆmh´Mubah}”(h]”jmmah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jˆmh´Mhjomh²hubjš)�”}”(hhh]”hì)�”}”(hŒreset endpoint resources”h]”hŒreset endpoint resources”…”�”}”(hj‹nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhjˆnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjomh²hh³jˆmh´Mubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j£nj½j£nj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX³**Parameters** ``struct dwc3 *dwc`` pointer to the DWC3 context ``unsigned int resource_index`` DEPSTARTCFG.XferRscIdx value (must be 0 or 2) **Description** Set resource_index=0 to reset all endpoints' resources allocation. Do this as part of the power-on/soft-reset initialization. Set resource_index=2 to reset only non-control endpoints' resources. Do this on receiving the SET_CONFIGURATION request or hibernation resume.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj­nh]”hŒ Parameters”…”�”}”(hj¯nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj«nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M#hj§nubj )�”}”(hhh]”(j)�”}”(hŒ1``struct dwc3 *dwc`` pointer to the DWC3 context ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjÌnh]”hŒstruct dwc3 *dwc”…”�”}”(hjÎnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÊnubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M hjÆnubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the DWC3 context”h]”hŒpointer to the DWC3 context”…”�”}”(hjånh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jánh´M hjânubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÆnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jánh´M hjÃnubj)�”}”(hŒN``unsigned int resource_index`` DEPSTARTCFG.XferRscIdx value (must be 0 or 2) ”h]”(j)�”}”(hŒ``unsigned int resource_index``”h]”jÄ)�”}”(hjoh]”hŒunsigned int resource_index”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M!hjÿnubj1)�”}”(hhh]”hì)�”}”(hŒ-DEPSTARTCFG.XferRscIdx value (must be 0 or 2)”h]”hŒ-DEPSTARTCFG.XferRscIdx value (must be 0 or 2)”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³joh´M!hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÿnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³joh´M!hjÃnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj§nubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj@oh]”hŒ Description”…”�”}”(hjBoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj>oubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M#hj§nubhì)�”}”(hŒ}Set resource_index=0 to reset all endpoints' resources allocation. Do this as part of the power-on/soft-reset initialization.”h]”hŒSet resource_index=0 to reset all endpoints’ resources allocation. Do this as part of the power-on/soft-reset initialization.”…”�”}”(hjVoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M"hj§nubhì)�”}”(hŒŽSet resource_index=2 to reset only non-control endpoints' resources. Do this on receiving the SET_CONFIGURATION request or hibernation resume.”h]”hŒ�Set resource_index=2 to reset only non-control endpoints’ resources. Do this on receiving the SET_CONFIGURATION request or hibernation resume.”…”�”}”(hjeoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M%hj§nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ*dwc3_gadget_calc_tx_fifo_size (C function)”Œc.dwc3_gadget_calc_tx_fifo_size”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ>int dwc3_gadget_calc_tx_fifo_size (struct dwc3 *dwc, int mult)”h]”j?)�”}”(hŒ=int dwc3_gadget_calc_tx_fifo_size(struct dwc3 *dwc, int mult)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj”oh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj�oh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M›ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£oh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�oh²hh³j¢oh´M›ubjh)�”}”(hŒdwc3_gadget_calc_tx_fifo_size”h]”jn)�”}”(hŒdwc3_gadget_calc_tx_fifo_size”h]”hŒdwc3_gadget_calc_tx_fifo_size”…”�”}”(hjµoh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj±oubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj�oh²hh³j¢oh´M›ubjªP)�”}”(hŒ(struct dwc3 *dwc, int mult)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÑoh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÍoubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞoh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÍoubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjïoh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjìoubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jñoŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj·osbŒc.dwc3_gadget_calc_tx_fifo_size”†”asbuh1hhjÍoubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÍoubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÍoubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj*ph²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÍoubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÉoubj°P)�”}”(hŒint mult”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjCph²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj?pubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQph²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj?pubjn)�”}”(hŒmult”h]”hŒmult”…”�”}”(hj_ph²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj?pubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÉoubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj�oh²hh³j¢oh´M›ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjŒoh²hh³j¢oh´M›ubah}”(h]”j‡oah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j¢oh´M›hj‰oh²hubjš)�”}”(hhh]”hì)�”}”(hŒ calculates the txfifo size value”h]”hŒ calculates the txfifo size value”…”�”}”(hj‰ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M›hj†ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj‰oh²hh³j¢oh´M›ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j¡pj½j¡pj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXJ**Parameters** ``struct dwc3 *dwc`` pointer to the DWC3 context ``int mult`` multiplier to be used when calculating the fifo_size **Description** Calculates the size value based on the equation below: DWC3 revision 280A and prior: fifo_size = mult * (max_packet / mdwidth) + 1; DWC3 revision 290A and onwards: fifo_size = mult * ((max_packet + mdwidth)/mdwidth + 1) + 1 The max packet size is set to 1024, as the txfifo requirements mainly apply to super speed USB use cases. However, it is safe to overestimate the fifo allocations for other scenarios, i.e. high speed USB.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj«ph]”hŒ Parameters”…”�”}”(hj­ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj©pubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MŸhj¥pubj )�”}”(hhh]”(j)�”}”(hŒ1``struct dwc3 *dwc`` pointer to the DWC3 context ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjÊph]”hŒstruct dwc3 *dwc”…”�”}”(hjÌph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÈpubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MœhjÄpubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the DWC3 context”h]”hŒpointer to the DWC3 context”…”�”}”(hjãph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jßph´Mœhjàpubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÄpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jßph´MœhjÁpubj)�”}”(hŒB``int mult`` multiplier to be used when calculating the fifo_size ”h]”(j)�”}”(hŒ ``int mult``”h]”jÄ)�”}”(hjqh]”hŒint mult”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M�hjýpubj1)�”}”(hhh]”hì)�”}”(hŒ4multiplier to be used when calculating the fifo_size”h]”hŒ4multiplier to be used when calculating the fifo_size”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jqh´M�hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjýpubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jqh´M�hjÁpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¥pubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj>qh]”hŒ Description”…”�”}”(hj@qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjjŒj�hj¨qh²hh³j¾qh´M¾ubah}”(h]”j£qah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j¾qh´M¾hj¥qh²hubjš)�”}”(hhh]”hì)�”}”(hŒ#calculates the ram depth for txfifo”h]”hŒ#calculates the ram depth for txfifo”…”�”}”(hjprh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¾hjmrh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj¥qh²hh³j¾qh´M¾ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jˆrj½jˆrj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒB**Parameters** ``struct dwc3 *dwc`` pointer to the DWC3 context”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj’rh]”hŒ Parameters”…”�”}”(hj”rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj�rubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÂhjŒrubj )�”}”(hhh]”j)�”}”(hŒ0``struct dwc3 *dwc`` pointer to the DWC3 context”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj±rh]”hŒstruct dwc3 *dwc”…”�”}”(hj³rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¯rubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÄhj«rubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the DWC3 context”h]”hŒpointer to the DWC3 context”…”�”}”(hjÊrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¿hjÇrubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj«rubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÆrh´MÄhj¨rubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjŒrubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ'dwc3_gadget_clear_tx_fifos (C function)”Œc.dwc3_gadget_clear_tx_fifos”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ2void dwc3_gadget_clear_tx_fifos (struct dwc3 *dwc)”h]”j?)�”}”(hŒ1void dwc3_gadget_clear_tx_fifos(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjsh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MäubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjsh²hh³jsh´Mäubjh)�”}”(hŒdwc3_gadget_clear_tx_fifos”h]”jn)�”}”(hŒdwc3_gadget_clear_tx_fifos”h]”hŒdwc3_gadget_clear_tx_fifos”…”�”}”(hj,sh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj(subah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjsh²hh³jsh´MäubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjHsh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjDsubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUsh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjDsubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjfsh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjcsubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jhsŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj.ssbŒc.dwc3_gadget_clear_tx_fifos”†”asbuh1hhjDsubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†sh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjDsubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj”sh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjDsubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj¡sh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjDsubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj@subah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phjsh²hh³jsh´Mäubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjsh²hh³jsh´Mäubah}”(h]”jþrah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jsh´Mähjsh²hubjš)�”}”(hhh]”hì)�”}”(hŒClears txfifo allocation”h]”hŒClears txfifo allocation”…”�”}”(hjËsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MähjÈsh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjsh²hh³jsh´Mäubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jãsj½jãsj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ¬**Parameters** ``struct dwc3 *dwc`` pointer to the DWC3 context **Description** Iterates through all the endpoint registers and clears the previous txfifo allocations.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjísh]”hŒ Parameters”…”�”}”(hjïsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjësubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mèhjçsubj )�”}”(hhh]”j)�”}”(hŒ1``struct dwc3 *dwc`` pointer to the DWC3 context ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj th]”hŒstruct dwc3 *dwc”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj tubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Måhjtubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the DWC3 context”h]”hŒpointer to the DWC3 context”…”�”}”(hj%th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j!th´Måhj"tubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j!th´Måhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjçsubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjGth]”hŒ Description”…”�”}”(hjIth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjEtubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mçhjçsubhì)�”}”(hŒWIterates through all the endpoint registers and clears the previous txfifo allocations.”h]”hŒWIterates through all the endpoint registers and clears the previous txfifo allocations.”…”�”}”(hj]th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mæhjçsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ$__dwc3_gadget_ep_enable (C function)”Œc.__dwc3_gadget_ep_enable”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒFint __dwc3_gadget_ep_enable (struct dwc3_ep *dep, unsigned int action)”h]”j?)�”}”(hŒEint __dwc3_gadget_ep_enable(struct dwc3_ep *dep, unsigned int action)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒth²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjˆth²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MŽubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›th²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjˆth²hh³jšth´MŽubjh)�”}”(hŒ__dwc3_gadget_ep_enable”h]”jn)�”}”(hŒ__dwc3_gadget_ep_enable”h]”hŒ__dwc3_gadget_ep_enable”…”�”}”(hj­th²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj©tubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjˆth²hh³jšth´MŽubjªP)�”}”(hŒ*(struct dwc3_ep *dep, unsigned int action)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÉth²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÅtubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖth²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÅtubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hjçth²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjätubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jétŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj¯tsbŒc.__dwc3_gadget_ep_enable”†”asbuh1hhjÅtubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÅtubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÅtubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hj"uh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÅtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÁtubj°P)�”}”(hŒunsigned int action”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj;uh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj7uubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIuh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj7uubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjWuh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj7uubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeuh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj7uubjn)�”}”(hŒaction”h]”hŒaction”…”�”}”(hjsuh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj7uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÁtubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phjˆth²hh³jšth´MŽubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj„th²hh³jšth´MŽubah}”(h]”jtah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jšth´MŽhj�th²hubjš)�”}”(hhh]”hì)�”}”(hŒinitializes a hw endpoint”h]”hŒinitializes a hw endpoint”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MŽhjšuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj�th²hh³jšth´MŽubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jµuj½jµuj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3_ep *dep`` endpoint to be initialized ``unsigned int action`` one of INIT, MODIFY or RESTORE **Description** Caller should take care of locking. Execute all necessary commands to initialize a HW endpoint so it can be used by a gadget driver.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj¿uh]”hŒ Parameters”…”�”}”(hjÁuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj½uubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M’hj¹uubj )�”}”(hhh]”(j)�”}”(hŒ3``struct dwc3_ep *dep`` endpoint to be initialized ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hjÞuh]”hŒstruct dwc3_ep *dep”…”�”}”(hjàuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÜuubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M�hjØuubj1)�”}”(hhh]”hì)�”}”(hŒendpoint to be initialized”h]”hŒendpoint to be initialized”…”�”}”(hj÷uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jóuh´M�hjôuubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjØuubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jóuh´M�hjÕuubj)�”}”(hŒ7``unsigned int action`` one of INIT, MODIFY or RESTORE ”h]”(j)�”}”(hŒ``unsigned int action``”h]”jÄ)�”}”(hjvh]”hŒunsigned int action”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M�hjvubj1)�”}”(hhh]”hì)�”}”(hŒone of INIT, MODIFY or RESTORE”h]”hŒone of INIT, MODIFY or RESTORE”…”�”}”(hj0vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j,vh´M�hj-vubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjvubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,vh´M�hjÕuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj¹uubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjRvh]”hŒ Description”…”�”}”(hjTvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjPvubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M’hj¹uubhì)�”}”(hŒ„Caller should take care of locking. Execute all necessary commands to initialize a HW endpoint so it can be used by a gadget driver.”h]”hŒ„Caller should take care of locking. Execute all necessary commands to initialize a HW endpoint so it can be used by a gadget driver.”…”�”}”(hjhvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M‘hj¹uubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ%__dwc3_gadget_ep_disable (C function)”Œc.__dwc3_gadget_ep_disable”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ2int __dwc3_gadget_ep_disable (struct dwc3_ep *dep)”h]”j?)�”}”(hŒ1int __dwc3_gadget_ep_disable(struct dwc3_ep *dep)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj—vh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj“vh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M&ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦vh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj“vh²hh³j¥vh´M&ubjh)�”}”(hŒ__dwc3_gadget_ep_disable”h]”jn)�”}”(hŒ__dwc3_gadget_ep_disable”h]”hŒ__dwc3_gadget_ep_disable”…”�”}”(hj¸vh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj´vubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj“vh²hh³j¥vh´M&ubjªP)�”}”(hŒ(struct dwc3_ep *dep)”h]”j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÔvh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÐvubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjávh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐvubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hjòvh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjïvubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jôvŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjºvsbŒc.__dwc3_gadget_ep_disable”†”asbuh1hhjÐvubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐvubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÐvubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hj-wh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÐvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÌvubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj“vh²hh³j¥vh´M&ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj�vh²hh³j¥vh´M&ubah}”(h]”jŠvah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j¥vh´M&hjŒvh²hubjš)�”}”(hhh]”hì)�”}”(hŒdisables a hw endpoint”h]”hŒdisables a hw endpoint”…”�”}”(hjWwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M&hjTwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjŒvh²hh³j¥vh´M&ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jowj½jowj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX#**Parameters** ``struct dwc3_ep *dep`` the endpoint to disable **Description** This function undoes what __dwc3_gadget_ep_enable did and also removes requests which are currently being processed by the hardware and those which are not yet scheduled. Caller should take care of locking.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjywh]”hŒ Parameters”…”�”}”(hj{wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjwwubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M*hjswubj )�”}”(hhh]”j)�”}”(hŒ0``struct dwc3_ep *dep`` the endpoint to disable ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj˜wh]”hŒstruct dwc3_ep *dep”…”�”}”(hjšwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj–wubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M'hj’wubj1)�”}”(hhh]”hì)�”}”(hŒthe endpoint to disable”h]”hŒthe endpoint to disable”…”�”}”(hj±wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j­wh´M'hj®wubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj’wubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j­wh´M'hj�wubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjswubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjÓwh]”hŒ Description”…”�”}”(hjÕwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÑwubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M)hjswubhì)�”}”(hŒªThis function undoes what __dwc3_gadget_ep_enable did and also removes requests which are currently being processed by the hardware and those which are not yet scheduled.”h]”hŒªThis function undoes what __dwc3_gadget_ep_enable did and also removes requests which are currently being processed by the hardware and those which are not yet scheduled.”…”�”}”(hjéwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M(hjswubhì)�”}”(hŒ#Caller should take care of locking.”h]”hŒ#Caller should take care of locking.”…”�”}”(hjøwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M,hjswubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_ep_prev_trb (C function)”Œc.dwc3_ep_prev_trb”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒBstruct dwc3_trb * dwc3_ep_prev_trb (struct dwc3_ep *dep, u8 index)”h]”j?)�”}”(hŒ@struct dwc3_trb *dwc3_ep_prev_trb(struct dwc3_ep *dep, u8 index)”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj'xh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj#xh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÃubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5xh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj#xh²hh³j4xh´MÃubh)�”}”(hhh]”jn)�”}”(hŒdwc3_trb”h]”hŒdwc3_trb”…”�”}”(hjFxh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjCxubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jHxŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPŒdwc3_ep_prev_trb”sbŒc.dwc3_ep_prev_trb”†”asbuh1hhj#xh²hh³j4xh´MÃubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgxh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj#xh²hh³j4xh´MÃubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjuxh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj#xh²hh³j4xh´MÃubjh)�”}”(hŒdwc3_ep_prev_trb”h]”jn)�”}”(hjdxh]”hŒdwc3_ep_prev_trb”…”�”}”(hj†xh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj‚xubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj#xh²hh³j4xh´MÃubjªP)�”}”(hŒ(struct dwc3_ep *dep, u8 index)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj¡xh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj�xubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®xh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�xubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hj¿xh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¼xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÁxŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”jbxŒc.dwc3_ep_prev_trb”†”asbuh1hhj�xubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÝxh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�xubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjëxh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj�xubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hjøxh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™xubj°P)�”}”(hŒu8 index”h]”(h)�”}”(hhh]”jn)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jyŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”jbxŒc.dwc3_ep_prev_trb”†”asbuh1hhj yubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2yh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj yubjn)�”}”(hŒindex”h]”hŒindex”…”�”}”(hj@yh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™xubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj#xh²hh³j4xh´MÃubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjxh²hh³j4xh´MÃubah}”(h]”jxah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j4xh´MÃhjxh²hubjš)�”}”(hhh]”hì)�”}”(hŒ$returns the previous TRB in the ring”h]”hŒ$returns the previous TRB in the ring”…”�”}”(hjjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÃhjgyh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjxh²hh³j4xh´MÃubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j‚yj½j‚yj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX0**Parameters** ``struct dwc3_ep *dep`` The endpoint with the TRB ring ``u8 index`` The index of the current TRB in the ring **Description** Returns the TRB prior to the one pointed to by the index. If the index is 0, we will wrap backwards, skip the link TRB, and return the one just before that.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjŒyh]”hŒ Parameters”…”�”}”(hjŽyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjŠyubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÇhj†yubj )�”}”(hhh]”(j)�”}”(hŒ7``struct dwc3_ep *dep`` The endpoint with the TRB ring ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj«yh]”hŒstruct dwc3_ep *dep”…”�”}”(hj­yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj©yubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÄhj¥yubj1)�”}”(hhh]”hì)�”}”(hŒThe endpoint with the TRB ring”h]”hŒThe endpoint with the TRB ring”…”�”}”(hjÄyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÀyh´MÄhjÁyubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj¥yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÀyh´MÄhj¢yubj)�”}”(hŒ6``u8 index`` The index of the current TRB in the ring ”h]”(j)�”}”(hŒ ``u8 index``”h]”jÄ)�”}”(hjäyh]”hŒu8 index”…”�”}”(hjæyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjâyubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÅhjÞyubj1)�”}”(hhh]”hì)�”}”(hŒ(The index of the current TRB in the ring”h]”hŒ(The index of the current TRB in the ring”…”�”}”(hjýyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jùyh´MÅhjúyubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÞyubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jùyh´MÅhj¢yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj†yubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjzh]”hŒ Description”…”�”}”(hj!zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjzubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÇhj†yubhì)�”}”(hŒœReturns the TRB prior to the one pointed to by the index. If the index is 0, we will wrap backwards, skip the link TRB, and return the one just before that.”h]”hŒœReturns the TRB prior to the one pointed to by the index. If the index is 0, we will wrap backwards, skip the link TRB, and return the one just before that.”…”�”}”(hj5zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÆhj†yubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ!dwc3_prepare_one_trb (C function)”Œc.dwc3_prepare_one_trb”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ¶void dwc3_prepare_one_trb (struct dwc3_ep *dep, struct dwc3_request *req, unsigned int trb_length, unsigned int chain, unsigned int node, bool use_bounce_buffer, bool must_interrupt)”h]”j?)�”}”(hŒµvoid dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_request *req, unsigned int trb_length, unsigned int chain, unsigned int node, bool use_bounce_buffer, bool must_interrupt)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjdzh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj`zh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MöubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjszh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj`zh²hh³jrzh´Möubjh)�”}”(hŒdwc3_prepare_one_trb”h]”jn)�”}”(hŒdwc3_prepare_one_trb”h]”hŒdwc3_prepare_one_trb”…”�”}”(hj…zh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�zubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj`zh²hh³jrzh´MöubjªP)�”}”(hŒœ(struct dwc3_ep *dep, struct dwc3_request *req, unsigned int trb_length, unsigned int chain, unsigned int node, bool use_bounce_buffer, bool must_interrupt)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj¡zh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj�zubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®zh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�zubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hj¿zh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¼zubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÁzŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj‡zsbŒc.dwc3_prepare_one_trb”†”asbuh1hhj�zubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßzh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�zubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjízh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj�zubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�zubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒstruct dwc3_request *req”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj {h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{ubh)�”}”(hhh]”jn)�”}”(hŒ dwc3_request”h]”hŒ dwc3_request”…”�”}”(hj1{h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj.{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j3{Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”jÛzŒc.dwc3_prepare_one_trb”†”asbuh1hhj{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj]{h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj{ubjn)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjj{h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒunsigned int trb_length”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjƒ{h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjŸ{h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{ubjn)�”}”(hŒ trb_length”h]”hŒ trb_length”…”�”}”(hj»{h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒunsigned int chain”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÔ{h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÐ{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐ{ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjð{h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÐ{ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ{h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐ{ubjn)�”}”(hŒchain”h]”hŒchain”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÐ{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒunsigned int node”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj%|h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj!|ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3|h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj!|ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjA|h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj!|ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO|h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj!|ubjn)�”}”(hŒnode”h]”hŒnode”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj!|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒbool use_bounce_buffer”h]”(jÜS)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjv|h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjr|ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„|h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjr|ubjn)�”}”(hŒuse_bounce_buffer”h]”hŒuse_bounce_buffer”…”�”}”(hj’|h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjr|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubj°P)�”}”(hŒbool must_interrupt”h]”(jÜS)�”}”(hjx|h]”hŒbool”…”�”}”(hj«|h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj§|ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸|h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj§|ubjn)�”}”(hŒmust_interrupt”h]”hŒmust_interrupt”…”�”}”(hjÆ|h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj§|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™zubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj`zh²hh³jrzh´Möubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj\zh²hh³jrzh´Möubah}”(h]”jWzah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jrzh´MöhjYzh²hubjš)�”}”(hhh]”hì)�”}”(hŒsetup one TRB from one request”h]”hŒsetup one TRB from one request”…”�”}”(hjð|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Möhjí|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjYzh²hh³jrzh´Möubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j}j½j}j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXÐ**Parameters** ``struct dwc3_ep *dep`` endpoint for which this request is prepared ``struct dwc3_request *req`` dwc3_request pointer ``unsigned int trb_length`` buffer size of the TRB ``unsigned int chain`` should this TRB be chained to the next? ``unsigned int node`` only for isochronous endpoints. First TRB needs different type. ``bool use_bounce_buffer`` set to use bounce buffer ``bool must_interrupt`` set to interrupt on TRB completion”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj}h]”hŒ Parameters”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Múhj }ubj )�”}”(hhh]”(j)�”}”(hŒD``struct dwc3_ep *dep`` endpoint for which this request is prepared ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hj1}h]”hŒstruct dwc3_ep *dep”…”�”}”(hj3}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj/}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M÷hj+}ubj1)�”}”(hhh]”hì)�”}”(hŒ+endpoint for which this request is prepared”h]”hŒ+endpoint for which this request is prepared”…”�”}”(hjJ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jF}h´M÷hjG}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj+}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jF}h´M÷hj(}ubj)�”}”(hŒ2``struct dwc3_request *req`` dwc3_request pointer ”h]”(j)�”}”(hŒ``struct dwc3_request *req``”h]”jÄ)�”}”(hjj}h]”hŒstruct dwc3_request *req”…”�”}”(hjl}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjh}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Møhjd}ubj1)�”}”(hhh]”hì)�”}”(hŒdwc3_request pointer”h]”hŒdwc3_request pointer”…”�”}”(hjƒ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j}h´Møhj€}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjd}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j}h´Møhj(}ubj)�”}”(hŒ3``unsigned int trb_length`` buffer size of the TRB ”h]”(j)�”}”(hŒ``unsigned int trb_length``”h]”jÄ)�”}”(hj£}h]”hŒunsigned int trb_length”…”�”}”(hj¥}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¡}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mùhj�}ubj1)�”}”(hhh]”hì)�”}”(hŒbuffer size of the TRB”h]”hŒbuffer size of the TRB”…”�”}”(hj¼}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¸}h´Mùhj¹}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj�}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¸}h´Mùhj(}ubj)�”}”(hŒ?``unsigned int chain`` should this TRB be chained to the next? ”h]”(j)�”}”(hŒ``unsigned int chain``”h]”jÄ)�”}”(hjÜ}h]”hŒunsigned int chain”…”�”}”(hjÞ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÚ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MúhjÖ}ubj1)�”}”(hhh]”hì)�”}”(hŒ'should this TRB be chained to the next?”h]”hŒ'should this TRB be chained to the next?”…”�”}”(hjõ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jñ}h´Múhjò}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÖ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jñ}h´Múhj(}ubj)�”}”(hŒV``unsigned int node`` only for isochronous endpoints. First TRB needs different type. ”•h]”(j)�”}”(hŒ``unsigned int node``”h]”jÄ)�”}”(hj~h]”hŒunsigned int node”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mûhj~ubj1)�”}”(hhh]”hì)�”}”(hŒ?only for isochronous endpoints. First TRB needs different type.”h]”hŒ?only for isochronous endpoints. First TRB needs different type.”…”�”}”(hj.~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j*~h´Mûhj+~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j*~h´Mûhj(}ubj)�”}”(hŒ4``bool use_bounce_buffer`` set to use bounce buffer ”h]”(j)�”}”(hŒ``bool use_bounce_buffer``”h]”jÄ)�”}”(hjN~h]”hŒbool use_bounce_buffer”…”�”}”(hjP~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjL~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MühjH~ubj1)�”}”(hhh]”hì)�”}”(hŒset to use bounce buffer”h]”hŒset to use bounce buffer”…”�”}”(hjg~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jc~h´Mühjd~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjH~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jc~h´Mühj(}ubj)�”}”(hŒ:``bool must_interrupt`` set to interrupt on TRB completion”h]”(j)�”}”(hŒ``bool must_interrupt``”h]”jÄ)�”}”(hj‡~h]”hŒbool must_interrupt”…”�”}”(hj‰~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj…~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mþhj�~ubj1)�”}”(hhh]”hì)�”}”(hŒ"set to interrupt on TRB completion”h]”hŒ"set to interrupt on TRB completion”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mýhj�~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj�~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jœ~h´Mþhj(}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj }ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ!dwc3_prepare_last_sg (C function)”Œc.dwc3_prepare_last_sg”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒvint dwc3_prepare_last_sg (struct dwc3_ep *dep, struct dwc3_request *req, unsigned int entry_length, unsigned int node)”h]”j?)�”}”(hŒuint dwc3_prepare_last_sg(struct dwc3_ep *dep, struct dwc3_request *req, unsigned int entry_length, unsigned int node)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjá~h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÝ~h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¢ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð~h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÝ~h²hh³jï~h´M¢ubjh)�”}”(hŒdwc3_prepare_last_sg”h]”jn)�”}”(hŒdwc3_prepare_last_sg”h]”hŒdwc3_prepare_last_sg”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjþ~ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjÝ~h²hh³jï~h´M¢ubjªP)�”}”(hŒ](struct dwc3_ep *dep, struct dwc3_request *req, unsigned int entry_length, unsigned int node)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j>Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjsbŒc.dwc3_prepare_last_sg”†”asbuh1hhjubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjubj°P)�”}”(hŒstruct dwc3_request *req”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjŒubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjŒubh)�”}”(hhh]”jn)�”}”(hŒ dwc3_request”h]”hŒ dwc3_request”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j°Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”jXŒc.dwc3_prepare_last_sg”†”asbuh1hhjŒubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjŒubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjŒubjn)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjubj°P)�”}”(hŒunsigned int entry_length”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjüubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjüubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjüubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*€h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjüubjn)�”}”(hŒ entry_length”h]”hŒ entry_length”…”�”}”(hj8€h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjüubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjubj°P)�”}”(hŒunsigned int node”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQ€h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjM€ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_€h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjM€ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjm€h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjM€ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{€h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjM€ubjn)�”}”(hŒnode”h]”hŒnode”…”�”}”(hj‰€h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjM€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjÝ~h²hh³jï~h´M¢ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÙ~h²hh³jï~h´M¢ubah}”(h]”jÔ~ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jï~h´M¢hjÖ~h²hubjš)�”}”(hhh]”hì)�”}”(hŒ"prepare TRBs for the last SG entry”h]”hŒ"prepare TRBs for the last SG entry”…”�”}”(hj³€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¢hj°€h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÖ~h²hh³jï~h´M¢ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jË€j½jË€j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXN**Parameters** ``struct dwc3_ep *dep`` The endpoint that the request belongs to ``struct dwc3_request *req`` The request to prepare ``unsigned int entry_length`` The last SG entry size ``unsigned int node`` Indicates whether this is not the first entry (for isoc only) **Description** Return the number of TRBs prepared.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjÕ€h]”hŒ Parameters”…”�”}”(hj×€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÓ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¦hjÏ€ubj )�”}”(hhh]”(j)�”}”(hŒA``struct dwc3_ep *dep`` The endpoint that the request belongs to ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hjô€h]”hŒstruct dwc3_ep *dep”…”�”}”(hjö€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjò€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M£hjî€ubj1)�”}”(hhh]”hì)�”}”(hŒ(The endpoint that the request belongs to”h]”hŒ(The endpoint that the request belongs to”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j �h´M£hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjî€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j �h´M£hjë€ubj)�”}”(hŒ4``struct dwc3_request *req`` The request to prepare ”h]”(j)�”}”(hŒ``struct dwc3_request *req``”h]”jÄ)�”}”(hj-�h]”hŒstruct dwc3_request *req”…”�”}”(hj/�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj+�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¤hj'�ubj1)�”}”(hhh]”hì)�”}”(hŒThe request to prepare”h]”hŒThe request to prepare”…”�”}”(hjF�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jB�h´M¤hjC�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj'�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jB�h´M¤hjë€ubj)�”}”(hŒ5``unsigned int entry_length`` The last SG entry size ”h]”(j)�”}”(hŒ``unsigned int entry_length``”h]”jÄ)�”}”(hjf�h]”hŒunsigned int entry_length”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjd�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¥hj`�ubj1)�”}”(hhh]”hì)�”}”(hŒThe last SG entry size”h]”hŒThe last SG entry size”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j{�h´M¥hj|�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj`�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j{�h´M¥hjë€ubj)�”}”(hŒT``unsigned int node`` Indicates whether this is not the first entry (for isoc only) ”h]”(j)�”}”(hŒ``unsigned int node``”h]”jÄ)�”}”(hjŸ�h]”hŒunsigned int node”…”�”}”(hj¡�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¦hj™�ubj1)�”}”(hhh]”hì)�”}”(hŒ=Indicates whether this is not the first entry (for isoc only)”h]”hŒ=Indicates whether this is not the first entry (for isoc only)”…”�”}”(hj¸�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j´�h´M¦hjµ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj™�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´�h´M¦hjë€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjÏ€ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjÚ�h]”hŒ Description”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjØ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M¨hjÏ€ubhì)�”}”(hŒ#Return the number of TRBs prepared.”h]”hŒ#Return the number of TRBs prepared.”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M§hjÏ€ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ(__dwc3_stop_active_transfer (C function)”Œc.__dwc3_stop_active_transfer”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒQint __dwc3_stop_active_transfer (struct dwc3_ep *dep, bool force, bool interrupt)”h]”j?)�”}”(hŒPint __dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, bool interrupt)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj‚h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÛubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.‚h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj‚h²hh³j-‚h´MÛubjh)�”}”(hŒ__dwc3_stop_active_transfer”h]”jn)�”}”(hŒ__dwc3_stop_active_transfer”h]”hŒ__dwc3_stop_active_transfer”…”�”}”(hj@‚h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj<‚ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj‚h²hh³j-‚h´MÛubjªP)�”}”(hŒ1(struct dwc3_ep *dep, bool force, bool interrupt)”h]”(j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj\‚h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjX‚ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji‚h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjX‚ubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hjz‚h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjw‚ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j|‚Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjB‚sbŒc.__dwc3_stop_active_transfer”†”asbuh1hhjX‚ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjš‚h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjX‚ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj¨‚h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjX‚ubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hjµ‚h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjX‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjT‚ubj°P)�”}”(hŒ bool force”h]”(jÜS)�”}”(hjx|h]”hŒbool”…”�”}”(hj΂h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÊ‚ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ‚h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÊ‚ubjn)�”}”(hŒforce”h]”hŒforce”…”�”}”(hjé‚h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÊ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjT‚ubj°P)�”}”(hŒbool interrupt”h]”(jÜS)�”}”(hjx|h]”hŒbool”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjþ‚ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjþ‚ubjn)�”}”(hŒ interrupt”h]”hŒ interrupt”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjþ‚ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjT‚ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj‚h²hh³j-‚h´MÛubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj‚h²hh³j-‚h´MÛubah}”(h]”j‚ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j-‚h´MÛhj‚h²hubjš)�”}”(hhh]”hì)�”}”(hŒ stop the current active transfer”h]”hŒ stop the current active transfer”…”�”}”(hjGƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÛhjDƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj‚h²hh³j-‚h´MÛubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j_ƒj½j_ƒj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX‹**Parameters** ``struct dwc3_ep *dep`` isoc endpoint ``bool force`` set forcerm bit in the command ``bool interrupt`` command complete interrupt after End Transfer command **Description** When setting force, the ForceRM bit will be set. In that case the controller won't update the TRB progress on command completion. It also won't clear the HWO bit in the TRB. The command will also not complete immediately in that case. Older programming guide revisions recommended setting ForceRM to 1 when ending a transfer. Newer programming guide revisions now recommend keeping ForceRM cleared, and TRBs are properly updated on command completion.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjiƒh]”hŒ Parameters”…”�”}”(hjkƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjgƒubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mßhjcƒubj )�”}”(hhh]”(j)�”}”(hŒ&``struct dwc3_ep *dep`` isoc endpoint ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hjˆƒh]”hŒstruct dwc3_ep *dep”…”�”}”(hjŠƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj†ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÜhj‚ƒubj1)�”}”(hhh]”hì)�”}”(hŒ isoc endpoint”h]”hŒ isoc endpoint”…”�”}”(hj¡ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j�ƒh´MÜhjžƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‚ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�ƒh´MÜhjƒubj)�”}”(hŒ.``bool force`` set forcerm bit in the command ”h]”(j)�”}”(hŒ``bool force``”h]”jÄ)�”}”(hjÁƒh]”hŒ bool force”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¿ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÝhj»ƒubj1)�”}”(hhh]”hì)�”}”(hŒset forcerm bit in the command”h]”hŒset forcerm bit in the command”…”�”}”(hjÚƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jÖƒh´MÝhj׃ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj»ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖƒh´MÝhjƒubj)�”}”(hŒI``bool interrupt`` command complete interrupt after End Transfer command ”h]”(j)�”}”(hŒ``bool interrupt``”h]”jÄ)�”}”(hjúƒh]”hŒbool interrupt”…”�”}”(hjüƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjøƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MÞhjôƒubj1)�”}”(hhh]”hì)�”}”(hŒ5command complete interrupt after End Transfer command”h]”hŒ5command complete interrupt after End Transfer command”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j„h´MÞhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjôƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„h´MÞhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hjcƒubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj5„h]”hŒ Description”…”�”}”(hj7„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj3„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Màhjcƒubhì)�”}”(hŒêWhen setting force, the ForceRM bit will be set. In that case the controller won't update the TRB progress on command completion. It also won't clear the HWO bit in the TRB. The command will also not complete immediately in that case.”h]”hŒîWhen setting force, the ForceRM bit will be set. In that case the controller won’t update the TRB progress on command completion. It also won’t clear the HWO bit in the TRB. The command will also not complete immediately in that case.”…”�”}”(hjK„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mßhjcƒubhì)�”}”(hŒØOlder programming guide revisions recommended setting ForceRM to 1 when ending a transfer. Newer programming guide revisions now recommend keeping ForceRM cleared, and TRBs are properly updated on command completion.”h]”hŒØOlder programming guide revisions recommended setting ForceRM to 1 when ending a transfer. Newer programming guide revisions now recommend keeping ForceRM cleared, and TRBs are properly updated on command completion.”…”�”}”(hjZ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mähjcƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ)dwc3_gadget_start_isoc_quirk (C function)”Œc.dwc3_gadget_start_isoc_quirk”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ6int dwc3_gadget_start_isoc_quirk (struct dwc3_ep *dep)”h]”j?)�”}”(hŒ5int dwc3_gadget_start_isoc_quirk(struct dwc3_ep *dep)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj‰„h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj…„h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜„h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj…„h²hh³j—„h´Mubjh)�”}”(hŒdwc3_gadget_start_isoc_quirk”h]”jn)�”}”(hŒdwc3_gadget_start_isoc_quirk”h]”hŒdwc3_gadget_start_isoc_quirk”…”�”}”(hjª„h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¦„ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj…„h²hh³j—„h´MubjªP)�”}”(hŒ(struct dwc3_ep *dep)”h]”j°P)�”}”(hŒstruct dwc3_ep *dep”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÆ„h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj„ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ„h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj„ubh)�”}”(hhh]”jn)�”}”(hŒdwc3_ep”h]”hŒdwc3_ep”…”�”}”(hjä„h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjá„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j愌modname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj¬„sbŒc.dwc3_gadget_start_isoc_quirk”†”asbuh1hhj„ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj„ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj„ubjn)�”}”(hŒdep”h]”hŒdep”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj¾„ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj…„h²hh³j—„h´Mubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj�„h²hh³j—„h´Mubah}”(h]”j|„ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j—„h´Mhj~„h²hubjš)�”}”(hhh]”hì)�”}”(hŒworkaround invalid frame number”h]”hŒworkaround invalid frame number”…”�”}”(hjI…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MhjF…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj~„h²hh³j—„h´Mubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼ja…j½ja…j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXB**Parameters** ``struct dwc3_ep *dep`` isoc endpoint **Description** This function tests for the correct combination of BIT[15:14] from the 16-bit microframe number reported by the XferNotReady event for the future frame number to start the isoc transfer. In DWC_usb31 version 1.70a-ea06 and prior, for highspeed and fullspeed isochronous IN, BIT[15:14] of the 16-bit microframe number reported by the XferNotReady event are invalid. The driver uses this number to schedule the isochronous transfer and passes it to the START TRANSFER command. Because this number is invalid, the command may fail. If BIT[15:14] matches the internal 16-bit microframe, the START TRANSFER command will pass and the transfer will start at the scheduled time, if it is off by 1, the command will still pass, but the transfer will start 2 seconds in the future. For all other conditions, the START TRANSFER command will fail with bus-expiry. In order to workaround this issue, we can test for the correct combination of BIT[15:14] by sending START TRANSFER commands with different values of BIT[15:14]: 'b00, 'b01, 'b10, and 'b11. Each combination is 2^14 uframe apart (or 2 seconds). 4 seconds into the future will result in a bus-expiry status. As the result, within the 4 possible combinations for BIT[15:14], there will be 2 successful and 2 failure START COMMAND status. One of the 2 successful command status will result in a 2-second delay start. The smaller BIT[15:14] value is the correct combination. Since there are only 4 outcomes and the results are ordered, we can simply test 2 START TRANSFER commands with BIT[15:14] combinations 'b00 and 'b01 to deduce the smaller successful combination. Let test0 = test status for combination 'b00 and test1 = test status for 'b01 of BIT[15:14]. The correct combination is as follow: if test0 fails and test1 passes, BIT[15:14] is 'b01 if test0 fails and test1 fails, BIT[15:14] is 'b10 if test0 passes and test1 fails, BIT[15:14] is 'b11 if test0 passes and test1 passes, BIT[15:14] is 'b00 Synopsys STAR 9001202023: Wrong microframe number for isochronous IN endpoints.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjk…h]”hŒ Parameters”…”�”}”(hjm…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hji…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhje…ubj )�”}”(hhh]”j)�”}”(hŒ&``struct dwc3_ep *dep`` isoc endpoint ”h]”(j)�”}”(hŒ``struct dwc3_ep *dep``”h]”jÄ)�”}”(hjŠ…h]”hŒstruct dwc3_ep *dep”…”�”}”(hjŒ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjˆ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhj„…ubj1)�”}”(hhh]”hì)�”}”(hŒ isoc endpoint”h]”hŒ isoc endpoint”…”�”}”(hj£…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jŸ…h´Mhj …ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj„…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŸ…h´Mhj�…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hje…ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjÅ…h]”hŒ Description”…”�”}”(hjÇ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÃ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhje…ubhì)�”}”(hŒºThis function tests for the correct combination of BIT[15:14] from the 16-bit microframe number reported by the XferNotReady event for the future frame number to start the isoc transfer.”h]”hŒºThis function tests for the correct combination of BIT[15:14] from the 16-bit microframe number reported by the XferNotReady event for the future frame number to start the isoc transfer.”…”�”}”(hjÛ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhje…ubhì)�”}”(hX˜In DWC_usb31 version 1.70a-ea06 and prior, for highspeed and fullspeed isochronous IN, BIT[15:14] of the 16-bit microframe number reported by the XferNotReady event are invalid. The driver uses this number to schedule the isochronous transfer and passes it to the START TRANSFER command. Because this number is invalid, the command may fail. If BIT[15:14] matches the internal 16-bit microframe, the START TRANSFER command will pass and the transfer will start at the scheduled time, if it is off by 1, the command will still pass, but the transfer will start 2 seconds in the future. For all other conditions, the START TRANSFER command will fail with bus-expiry.”h]”hX˜In DWC_usb31 version 1.70a-ea06 and prior, for highspeed and fullspeed isochronous IN, BIT[15:14] of the 16-bit microframe number reported by the XferNotReady event are invalid. The driver uses this number to schedule the isochronous transfer and passes it to the START TRANSFER command. Because this number is invalid, the command may fail. If BIT[15:14] matches the internal 16-bit microframe, the START TRANSFER command will pass and the transfer will start at the scheduled time, if it is off by 1, the command will still pass, but the transfer will start 2 seconds in the future. For all other conditions, the START TRANSFER command will fail with bus-expiry.”…”�”}”(hjê…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mhje…ubhì)�”}”(hX8In order to workaround this issue, we can test for the correct combination of BIT[15:14] by sending START TRANSFER commands with different values of BIT[15:14]: 'b00, 'b01, 'b10, and 'b11. Each combination is 2^14 uframe apart (or 2 seconds). 4 seconds into the future will result in a bus-expiry status. As the result, within the 4 possible combinations for BIT[15:14], there will be 2 successful and 2 failure START COMMAND status. One of the 2 successful command status will result in a 2-second delay start. The smaller BIT[15:14] value is the correct combination.”h]”hX@In order to workaround this issue, we can test for the correct combination of BIT[15:14] by sending START TRANSFER commands with different values of BIT[15:14]: ‘b00, ‘b01, ‘b10, and ‘b11. Each combination is 2^14 uframe apart (or 2 seconds). 4 seconds into the future will result in a bus-expiry status. As the result, within the 4 possible combinations for BIT[15:14], there will be 2 successful and 2 failure START COMMAND status. One of the 2 successful command status will result in a 2-second delay start. The smaller BIT[15:14] value is the correct combination.”…”�”}”(hjù…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M!hje…ubhì)�”}”(hŒÂSince there are only 4 outcomes and the results are ordered, we can simply test 2 START TRANSFER commands with BIT[15:14] combinations 'b00 and 'b01 to deduce the smaller successful combination.”h]”hŒÆSince there are only 4 outcomes and the results are ordered, we can simply test 2 START TRANSFER commands with BIT[15:14] combinations ‘b00 and ‘b01 to deduce the smaller successful combination.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M*hje…ubhì)�”}”(hŒ‚Let test0 = test status for combination 'b00 and test1 = test status for 'b01 of BIT[15:14]. The correct combination is as follow:”h]”hŒ†Let test0 = test status for combination ‘b00 and test1 = test status for ‘b01 of BIT[15:14]. The correct combination is as follow:”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M.hje…ubhì)�”}”(hŒÏif test0 fails and test1 passes, BIT[15:14] is 'b01 if test0 fails and test1 fails, BIT[15:14] is 'b10 if test0 passes and test1 fails, BIT[15:14] is 'b11 if test0 passes and test1 passes, BIT[15:14] is 'b00”h]”hŒ×if test0 fails and test1 passes, BIT[15:14] is ‘b01 if test0 fails and test1 fails, BIT[15:14] is ‘b10 if test0 passes and test1 fails, BIT[15:14] is ‘b11 if test0 passes and test1 passes, BIT[15:14] is ‘b00”…”�”}”(hj&†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M1hje…ubhì)�”}”(hŒOSynopsys STAR 9001202023: Wrong microframe number for isochronous IN endpoints.”h]”hŒOSynopsys STAR 9001202023: Wrong microframe number for isochronous IN endpoints.”…”�”}”(hj5†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M6hje…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ#dwc3_gadget_setup_nump (C function)”Œc.dwc3_gadget_setup_nump”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ.void dwc3_gadget_setup_nump (struct dwc3 *dwc)”h]”j?)�”}”(hŒ-void dwc3_gadget_setup_nump(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjd†h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj`†h²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MZ ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs†h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj`†h²hh³jr†h´MZ ubjh)�”}”(hŒdwc3_gadget_setup_nump”h]”jn)�”}”(hŒdwc3_gadget_setup_nump”h]”hŒdwc3_gadget_setup_nump”…”�”}”(hj…†h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�†ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj`†h²hh³jr†h´MZ ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj¡†h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj�†ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®†h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�†ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hj¿†h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj¼†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÁ†Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj‡†sbŒc.dwc3_gadget_setup_nump”†”asbuh1hhj�†ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj߆h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj�†ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjí†h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj�†ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjú†h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj�†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phj™†ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj`†h²hh³jr†h´MZ ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj\†h²hh³jr†h´MZ ubah}”(h]”jW†ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jr†h´MZ hjY†h²hubjš)�”}”(hhh]”hì)�”}”(hŒ4calculate and initialize NUMP field of ``DWC3_DCFG``”h]”(hŒ'calculate and initialize NUMP field of ”…”�”}”(hj$‡h²hh³Nh´NubjÄ)�”}”(hŒ ``DWC3_DCFG``”h]”hŒ DWC3_DCFG”…”�”}”(hj,‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj$‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´MZ hj!‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjY†h²hh³jr†h´MZ ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jJ‡j½jJ‡j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX•**Parameters** ``struct dwc3 *dwc`` pointer to our context structure **Description** The following looks like complex but it's actually very simple. In order to calculate the number of packets we can burst at once on OUT transfers, we're gonna use RxFIFO size. To calculate RxFIFO size we need two numbers: MDWIDTH = size, in bits, of the internal memory bus RAM2_DEPTH = depth, in MDWIDTH, of internal RAM2 (where RxFIFO sits) Given these two numbers, the formula is simple: RxFIFO Size = (RAM2_DEPTH * MDWIDTH / 8) - 24 - 16; 24 bytes is for 3x SETUP packets 16 bytes is a clock domain crossing tolerance Given RxFIFO Size, NUMP = RxFIFOSize / 1024;”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjT‡h]”hŒ Parameters”…”�”}”(hjV‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjR‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M^ hjN‡ubj )�”}”(hhh]”j)�”}”(hŒ6``struct dwc3 *dwc`` pointer to our context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjs‡h]”hŒstruct dwc3 *dwc”…”�”}”(hju‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjq‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M[ hjm‡ubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hjŒ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jˆ‡h´M[ hj‰‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjm‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jˆ‡h´M[ hjj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjN‡ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hj®‡h]”hŒ Description”…”�”}”(hj°‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj¬‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M] hjN‡ubhì)�”}”(hŒ¯The following looks like complex but it's actually very simple. In order to calculate the number of packets we can burst at once on OUT transfers, we're gonna use RxFIFO size.”h]”hŒ³The following looks like complex but it’s actually very simple. In order to calculate the number of packets we can burst at once on OUT transfers, we’re gonna use RxFIFO size.”…”�”}”(hjćh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M\ hjN‡ubhì)�”}”(hŒ¦To calculate RxFIFO size we need two numbers: MDWIDTH = size, in bits, of the internal memory bus RAM2_DEPTH = depth, in MDWIDTH, of internal RAM2 (where RxFIFO sits)”h]”hŒ¦To calculate RxFIFO size we need two numbers: MDWIDTH = size, in bits, of the internal memory bus RAM2_DEPTH = depth, in MDWIDTH, of internal RAM2 (where RxFIFO sits)”…”�”}”(hjÓ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´M` hjN‡ubhì)�”}”(hŒ/Given these two numbers, the formula is simple:”h]”hŒ/Given these two numbers, the formula is simple:”…”�”}”(hjâ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Md hjN‡ubhì)�”}”(hŒ3RxFIFO Size = (RAM2_DEPTH * MDWIDTH / 8) - 24 - 16;”h]”hŒ3RxFIFO Size = (RAM2_DEPTH * MDWIDTH / 8) - 24 - 16;”…”�”}”(hjñ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mf hjN‡ubhì)�”}”(hŒN24 bytes is for 3x SETUP packets 16 bytes is a clock domain crossing tolerance”h]”hŒN24 bytes is for 3x SETUP packets 16 bytes is a clock domain crossing tolerance”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mh hjN‡ubhì)�”}”(hŒ,Given RxFIFO Size, NUMP = RxFIFOSize / 1024;”h]”hŒ,Given RxFIFO Size, NUMP = RxFIFOSize / 1024;”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mk hjN‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ%dwc3_gadget_check_config (C function)”Œc.dwc3_gadget_check_config”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ3int dwc3_gadget_check_config (struct usb_gadget *g)”h]”j?)�”}”(hŒ2int dwc3_gadget_check_config(struct usb_gadget *g)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj>ˆh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj:ˆh²hh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mp ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjMˆh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj:ˆh²hh³jLˆh´Mp ubjh)�”}”(hŒdwc3_gadget_check_config”h]”jn)�”}”(hŒdwc3_gadget_check_config”h]”hŒdwc3_gadget_check_config”…”�”}”(hj_ˆh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj[ˆubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj:ˆh²hh³jLˆh´Mp ubjªP)�”}”(hŒ(struct usb_gadget *g)”h]”j°P)�”}”(hŒstruct usb_gadget *g”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj{ˆh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjwˆubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆˆh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjwˆubh)�”}”(hhh]”jn)�”}”(hŒ usb_gadget”h]”hŒ usb_gadget”…”�”}”(hj™ˆh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj–ˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j›ˆŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjaˆsbŒc.dwc3_gadget_check_config”†”asbuh1hhjwˆubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹ˆh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjwˆubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjLjh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjwˆubjn)�”}”(hŒg”h]”hŒg”…”�”}”(hjÔˆh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjwˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjsˆubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj:ˆh²hh³jLˆh´Mp ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj6ˆh²hh³jLˆh´Mp ubah}”(h]”j1ˆah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jLˆh´Mp hj3ˆh²hubjš)�”}”(hhh]”hì)�”}”(hŒ-ensure dwc3 can support the USB configuration”h]”hŒ-ensure dwc3 can support the USB configuration”…”�”}”(hjþˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mp hjûˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj3ˆh²hh³jLˆh´Mp ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j‰j½j‰j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hXš**Parameters** ``struct usb_gadget *g`` pointer to the USB gadget **Description** Used to record the maximum number of endpoints being used in a USB composite device. (across all configurations) This is to be used in the calculation of the TXFIFO sizes when resizing internal memory for individual endpoints. It will help ensured that the resizing logic reserves enough space for at least one max packet.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj ‰h]”hŒ Parameters”…”�”}”(hj"‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mt hj‰ubj )�”}”(hhh]”j)�”}”(hŒ3``struct usb_gadget *g`` pointer to the USB gadget ”h]”(j)�”}”(hŒ``struct usb_gadget *g``”h]”jÄ)�”}”(hj?‰h]”hŒstruct usb_gadget *g”…”�”}”(hjA‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj=‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mq hj9‰ubj1)�”}”(hhh]”hì)�”}”(hŒpointer to the USB gadget”h]”hŒpointer to the USB gadget”…”�”}”(hjX‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jT‰h´Mq hjU‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj9‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jT‰h´Mq hj6‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj‰ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjz‰h]”hŒ Description”…”�”}”(hj|‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjx‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Ms hj‰ubhì)�”}”(hXCUsed to record the maximum number of endpoints being used in a USB composite device. (across all configurations) This is to be used in the calculation of the TXFIFO sizes when resizing internal memory for individual endpoints. It will help ensured that the resizing logic reserves enough space for at least one max packet.”h]”hXCUsed to record the maximum number of endpoints being used in a USB composite device. (across all configurations) This is to be used in the calculation of the TXFIFO sizes when resizing internal memory for individual endpoints. It will help ensured that the resizing logic reserves enough space for at least one max packet.”…”�”}”(hj�‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ^/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:695: ./drivers/usb/dwc3/gadget.c”h´Mr hj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_get_dr_mode (C function)”Œc.dwc3_get_dr_mode”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ'int dwc3_get_dr_mode (struct dwc3 *dwc)”h]”j?)�”}”(hŒ&int dwc3_get_dr_mode(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿‰h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj»‰h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´K2ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjΉh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj»‰h²hh³j͉h´K2ubjh)�”}”(hŒdwc3_get_dr_mode”h]”jn)�”}”(hŒdwc3_get_dr_mode”h]”hŒdwc3_get_dr_mode”…”�”}”(hjà‰h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj܉ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj»‰h²hh³j͉h´K2ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjü‰h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjø‰ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjø‰ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jŠŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjâ‰sbŒc.dwc3_get_dr_mode”†”asbuh1hhjø‰ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Šh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjø‰ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjHŠh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjø‰ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjUŠh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjø‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjô‰ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj»‰h²hh³j͉h´K2ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj·‰h²hh³j͉h´K2ubah}”(h]”j²‰ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j͉h´K2hj´‰h²hubjš)�”}”(hhh]”hì)�”}”(hŒValidates and sets dr_mode”h]”hŒValidates and sets dr_mode”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´K2hj|Šh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj´‰h²hh³j͉h´K2ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j—Šj½j—Šj¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒG**Parameters** ``struct dwc3 *dwc`` pointer to our context structure”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj¡Šh]”hŒ Parameters”…”�”}”(hj£Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjŸŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´K6hj›Šubj )�”}”(hhh]”j)�”}”(hŒ5``struct dwc3 *dwc`` pointer to our context structure”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjÀŠh]”hŒstruct dwc3 *dwc”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj¾Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´K8hjºŠubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hjÙŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´K3hjÖŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjºŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÕŠh´K8hj·Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j hj›Šubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ!dwc3_core_soft_reset (C function)”Œc.dwc3_core_soft_reset”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ+int dwc3_core_soft_reset (struct dwc3 *dwc)”h]”j?)�”}”(hŒ*int dwc3_core_soft_reset(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj‹h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M?ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)‹h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj‹h²hh³j(‹h´M?ubjh)�”}”(hŒdwc3_core_soft_reset”h]”jn)�”}”(hŒdwc3_core_soft_reset”h]”hŒdwc3_core_soft_reset”…”�”}”(hj;‹h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj7‹ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj‹h²hh³j(‹h´M?ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjW‹h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjS‹ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd‹h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjS‹ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hju‹h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjr‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jw‹Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj=‹sbŒc.dwc3_core_soft_reset”†”asbuh1hhjS‹ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•‹h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjS‹ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj£‹h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjS‹ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj°‹h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjS‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjO‹ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj‹h²hh³j(‹h´M?ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj‹h²hh³j(‹h´M?ubah}”(h]”j ‹ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j(‹h´M?hj‹h²hubjš)�”}”(hhh]”hì)�”}”(hŒ$Issues core soft reset and PHY reset”h]”hŒ$Issues core soft reset and PHY reset”…”�”}”(hjÚ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M?hj׋h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj‹h²hh³j(‹h´M?ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jò‹j½jò‹j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒG**Parameters** ``struct dwc3 *dwc`` pointer to our context structure”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjü‹h]”hŒ Parameters”…”�”}”(hjþ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjú‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MChjö‹ubj )�”}”(hhh]”j)�”}”(hŒ5``struct dwc3 *dwc`` pointer to our context structure”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjŒh]”hŒstruct dwc3 *dwc”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MEhjŒubj1)�”}”(hhh]”hì)�”}”(hŒ pointer to our context structure”h]”hŒ pointer to our context structure”…”�”}”(hj4Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M@hj1Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0Œh´MEhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ dwc3_ref_clk_period (C function)”Œc.dwc3_ref_clk_period”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ+void dwc3_ref_clk_period (struct dwc3 *dwc)”h]”j?)�”}”(hŒ*void dwc3_ref_clk_period(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjuŒh²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjqŒh²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M�ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Œh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjqŒh²hh³jƒŒh´M�ubjh)�”}”(hŒdwc3_ref_clk_period”h]”jn)�”}”(hŒdwc3_ref_clk_period”h]”hŒdwc3_ref_clk_period”…”�”}”(hj–Œh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj’Œubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjqŒh²hh³jƒŒh´M�ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj²Œh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj®ŒubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Œh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj®Œubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjÐŒh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÍŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÒŒŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj˜ŒsbŒc.dwc3_ref_clk_period”†”asbuh1hhj®ŒubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjðŒh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj®ŒubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjþŒh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj®Œubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj®Œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjªŒubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjqŒh²hh³jƒŒh´M�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjmŒh²hh³jƒŒh´M�ubah}”(h]”jhŒah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jƒŒh´M�hjjŒh²hubjš)�”}”(hhh]”hì)�”}”(hŒÙReference clock period configuration Default reference clock period depends on hardware configuration. For systems with reference clock that differs from the default, this will set clock period in DWC3_GUCTL register.”h]”hŒÙReference clock period configuration Default reference clock period depends on hardware configuration. For systems with reference clock that differs from the default, this will set clock period in DWC3_GUCTL register.”…”�”}”(hj5�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M�hj2�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjjŒh²hh³jƒŒh´M�ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jM�j½jM�j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒR**Parameters** ``struct dwc3 *dwc`` Pointer to our controller context structure”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjW�h]”hŒ Parameters”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjU�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M”hjQ�ubj )�”}”(hhh]”j)�”}”(hŒ@``struct dwc3 *dwc`` Pointer to our controller context structure”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjv�h]”hŒstruct dwc3 *dwc”…”�”}”(hjx�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjt�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M–hjp�ubj1)�”}”(hhh]”hì)�”}”(hŒ+Pointer to our controller context structure”h]”hŒ+Pointer to our controller context structure”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M•hjŒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjp�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‹�h´M–hjm�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjQ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ'dwc3_free_one_event_buffer (C function)”Œc.dwc3_free_one_event_buffer”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒQvoid dwc3_free_one_event_buffer (struct dwc3 *dwc, struct dwc3_event_buffer *evt)”h]”j?)�”}”(hŒPvoid dwc3_free_one_event_buffer(struct dwc3 *dwc, struct dwc3_event_buffer *evt)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÐ�h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjÌ�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MÕubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÌ�h²hh³jÞ�h´MÕubjh)�”}”(hŒdwc3_free_one_event_buffer”h]”jn)�”}”(hŒdwc3_free_one_event_buffer”h]”hŒdwc3_free_one_event_buffer”…”�”}”(hjñ�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjí�ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjÌ�h²hh³jÞ�h´MÕubjªP)�”}”(hŒ1(struct dwc3 *dwc, struct dwc3_event_buffer *evt)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj Žh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj ŽubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj Žubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hj+Žh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj(Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j-ŽŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPjó�sbŒc.dwc3_free_one_event_buffer”†”asbuh1hhj ŽubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKŽh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj ŽubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjYŽh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj Žubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hjfŽh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjŽubj°P)�”}”(hŒstruct dwc3_event_buffer *evt”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj{ŽubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒŽh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{Žubh)�”}”(hhh]”jn)�”}”(hŒdwc3_event_buffer”h]”hŒdwc3_event_buffer”…”�”}”(hj�Žh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjšŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jŸŽŒmodname”NŒ classname”NjtPjwP)�”}”jzP]”jGŽŒc.dwc3_free_one_event_buffer”†”asbuh1hhj{ŽubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Žh²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj{ŽubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjÉŽh²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj{Žubjn)�”}”(hŒevt”h]”hŒevt”…”�”}”(hjÖŽh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj{Žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjŽubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjÌ�h²hh³jÞ�h´MÕubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÈ�h²hh³jÞ�h´MÕubah}”(h]”jÃ�ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jÞ�h´MÕhjÅ�h²hubjš)�”}”(hhh]”hì)�”}”(hŒFrees one event buffer”h]”hŒFrees one event buffer”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MÕhjýŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÅ�h²hh³jÞ�h´MÕubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j�j½j�j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ›**Parameters** ``struct dwc3 *dwc`` Pointer to our controller context structure ``struct dwc3_event_buffer *evt`` Pointer to event buffer to be freed”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj"�h]”hŒ Parameters”…”�”}”(hj$�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MÙhj�ubj )�”}”(hhh]”(j)�”}”(hŒA``struct dwc3 *dwc`` Pointer to our controller context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjA�h]”hŒstruct dwc3 *dwc”…”�”}”(hjC�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj?�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MÖhj;�ubj1)�”}”(hhh]”hì)�”}”(hŒ+Pointer to our controller context structure”h]”hŒ+Pointer to our controller context structure”…”�”}”(hjZ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jV�h´MÖhjW�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj;�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jV�h´MÖhj8�ubj)�”}”(hŒE``struct dwc3_event_buffer *evt`` Pointer to event buffer to be freed”h]”(j)�”}”(hŒ!``struct dwc3_event_buffer *evt``”h]”jÄ)�”}”(hjz�h]”hŒstruct dwc3_event_buffer *evt”…”�”}”(hj|�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjx�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MØhjt�ubj1)�”}”(hhh]”hì)�”}”(hŒ#Pointer to event buffer to be freed”h]”hŒ#Pointer to event buffer to be freed”…”�”}”(hj“�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M×hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjt�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j��h´MØhj8�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ(dwc3_alloc_one_event_buffer (C function)”Œc.dwc3_alloc_one_event_buffer”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ^struct dwc3_event_buffer * dwc3_alloc_one_event_buffer (struct dwc3 *dwc, unsigned int length)”h]”j?)�”}”(hŒ\struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc, unsigned int length)”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjÔ�h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÐ�h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MàubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâ�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐ�h²hh³já�h´Màubh)�”}”(hhh]”jn)�”}”(hŒdwc3_event_buffer”h]”hŒdwc3_event_buffer”…”�”}”(hjó�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjð�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jõ�Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPŒdwc3_alloc_one_event_buffer”sbŒc.dwc3_alloc_one_event_buffer”†”asbuh1hhjÐ�h²hh³já�h´MàubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÐ�h²hh³já�h´MàubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÐ�h²hh³já�h´Màubjh)�”}”(hŒdwc3_alloc_one_event_buffer”h]”jn)�”}”(hj�h]”hŒdwc3_alloc_one_event_buffer”…”�”}”(hj3�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj/�ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjÐ�h²hh³já�h´MàubjªP)�”}”(hŒ'(struct dwc3 *dwc, unsigned int length)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjJ�ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj[�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjJ�ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhji�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jn�Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j�Œc.dwc3_alloc_one_event_buffer”†”asbuh1hhjJ�ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjJ�ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj˜�h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjJ�ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj¥�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjJ�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjF�ubj°P)�”}”(hŒunsigned int length”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjº�ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjº�ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjº�ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjº�ubjn)�”}”(hŒlength”h]”hŒlength”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjº�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjF�ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjÐ�h²hh³já�h´Màubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjÌ�h²hh³já�h´Màubah}”(h]”jÇ�ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³já�h´MàhjÉ�h²hubjš)�”}”(hhh]”hì)�”}”(hŒ$Allocates one event buffer structure”h]”hŒ$Allocates one event buffer structure”…”�”}”(hj ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Màhj‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjÉ�h²hh³já�h´Màubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j8‘j½j8‘j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ÷**Parameters** ``struct dwc3 *dwc`` Pointer to our controller context structure ``unsigned int length`` size of the event buffer **Description** Returns a pointer to the allocated event buffer structure on success otherwise ERR_PTR(errno).”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjB‘h]”hŒ Parameters”…”�”}”(hjD‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj@‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mähj<‘ubj )�”}”(hhh]”(j)�”}”(hŒA``struct dwc3 *dwc`` Pointer to our controller context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hja‘h]”hŒstruct dwc3 *dwc”…”�”}”(hjc‘h²hh³Nh´Nubah}”(•ºmh]”h ]”h"]”h$]”h&]”uh1jÃhj_‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Máhj[‘ubj1)�”}”(hhh]”hì)�”}”(hŒ+Pointer to our controller context structure”h]”hŒ+Pointer to our controller context structure”…”�”}”(hjz‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jv‘h´Máhjw‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj[‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jv‘h´MáhjX‘ubj)�”}”(hŒ1``unsigned int length`` size of the event buffer ”h]”(j)�”}”(hŒ``unsigned int length``”h]”jÄ)�”}”(hjš‘h]”hŒunsigned int length”…”�”}”(hjœ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj˜‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mâhj”‘ubj1)�”}”(hhh]”hì)�”}”(hŒsize of the event buffer”h]”hŒsize of the event buffer”…”�”}”(hj³‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¯‘h´Mâhj°‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj”‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¯‘h´MâhjX‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj<‘ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjÕ‘h]”hŒ Description”…”�”}”(hjבh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÓ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mähj<‘ubhì)�”}”(hŒ^Returns a pointer to the allocated event buffer structure on success otherwise ERR_PTR(errno).”h]”hŒ^Returns a pointer to the allocated event buffer structure on success otherwise ERR_PTR(errno).”…”�”}”(hjë‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mãhj<‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ$dwc3_free_event_buffers (C function)”Œc.dwc3_free_event_buffers”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ/void dwc3_free_event_buffers (struct dwc3 *dwc)”h]”j?)�”}”(hŒ.void dwc3_free_event_buffers(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj’h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´MÿubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)’h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj’h²hh³j(’h´Mÿubjh)�”}”(hŒdwc3_free_event_buffers”h]”jn)�”}”(hŒdwc3_free_event_buffers”h]”hŒdwc3_free_event_buffers”…”�”}”(hj;’h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj7’ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj’h²hh³j(’h´MÿubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjW’h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjS’ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd’h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjS’ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hju’h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjr’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jw’Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj=’sbŒc.dwc3_free_event_buffers”†”asbuh1hhjS’ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•’h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjS’ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj£’h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjS’ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj°’h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjS’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjO’ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj’h²hh³j(’h´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj’h²hh³j(’h´Mÿubah}”(h]”j ’ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j(’h´Mÿhj’h²hubjš)�”}”(hhh]”hì)�”}”(hŒ!frees all allocated event buffers”h]”hŒ!frees all allocated event buffers”…”�”}”(hjÚ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mÿhj×’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj’h²hh³j(’h´Mÿubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jò’j½jò’j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒR**Parameters** ``struct dwc3 *dwc`` Pointer to our controller context structure”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjü’h]”hŒ Parameters”…”�”}”(hjþ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjú’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhjö’ubj )�”}”(hhh]”j)�”}”(hŒ@``struct dwc3 *dwc`` Pointer to our controller context structure”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj“h]”hŒstruct dwc3 *dwc”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj“ubj1)�”}”(hhh]”hì)�”}”(hŒ+Pointer to our controller context structure”h]”hŒ+Pointer to our controller context structure”…”�”}”(hj4“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj1“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0“h´Mhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjö’ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ%dwc3_alloc_event_buffers (C function)”Œc.dwc3_alloc_event_buffers”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒDint dwc3_alloc_event_buffers (struct dwc3 *dwc, unsigned int length)”h]”j?)�”}”(hŒCint dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned int length)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hju“h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjq“h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„“h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjq“h²hh³jƒ“h´M ubjh)�”}”(hŒdwc3_alloc_event_buffers”h]”jn)�”}”(hŒdwc3_alloc_event_buffers”h]”hŒdwc3_alloc_event_buffers”…”�”}”(hj–“h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj’“ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjq“h²hh³jƒ“h´M ubjªP)�”}”(hŒ'(struct dwc3 *dwc, unsigned int length)”h]”(j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hj²“h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhj®“ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿“h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj®“ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjГh²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÍ“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jÒ“Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj˜“sbŒc.dwc3_alloc_event_buffers”†”asbuh1hhj®“ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð“h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj®“ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hjþ“h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhj®“ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj®“ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjª“ubj°P)�”}”(hŒunsigned int length”h]”(jÜS)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj$”h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj ”ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2”h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj ”ubjÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj@”h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj ”ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN”h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj ”ubjn)�”}”(hŒlength”h]”hŒlength”…”�”}”(hj\”h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj ”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯Phjª“ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phjq“h²hh³jƒ“h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hjm“h²hh³jƒ“h´M ubah}”(h]”jh“ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jƒ“h´M hjj“h²hubjš)�”}”(hhh]”hì)�”}”(hŒ,Allocate one event buffer of size **length**”h]”(hŒ"Allocate one event buffer of size ”…”�”}”(hj†”h²hh³Nh´Nubj®)�”}”(hŒ **length**”h]”hŒlength”…”�”}”(hjŽ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj†”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M hjƒ”h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjj“h²hh³jƒ“h´M ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼j¬”j½j¬”j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3 *dwc`` pointer to our controller context structure ``unsigned int length`` size of event buffer **Description** Returns 0 on success otherwise negative errno. In the error case, dwc may contain some buffers allocated but not all which were requested.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hj¶”h]”hŒ Parameters”…”�”}”(hj¸”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hj´”ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj°”ubj )�”}”(hhh]”(j)�”}”(hŒA``struct dwc3 *dwc`` pointer to our controller context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hjÕ”h]”hŒstruct dwc3 *dwc”…”�”}”(hj×”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhjÓ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M hjÏ”ubj1)�”}”(hhh]”hì)�”}”(hŒ+pointer to our controller context structure”h]”hŒ+pointer to our controller context structure”…”�”}”(hjî”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³jê”h´M hjë”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hjÏ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jê”h´M hjÌ”ubj)�”}”(hŒ-``unsigned int length`` size of event buffer ”h]”(j)�”}”(hŒ``unsigned int length``”h]”jÄ)�”}”(hj•h]”hŒunsigned int length”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj •ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj•ubj1)�”}”(hhh]”hì)�”}”(hŒsize of event buffer”h]”hŒsize of event buffer”…”�”}”(hj'•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j#•h´Mhj$•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#•h´MhjÌ”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j hj°”ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjI•h]”hŒ Description”…”�”}”(hjK•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjG•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj°”ubhì)�”}”(hŒŠReturns 0 on success otherwise negative errno. In the error case, dwc may contain some buffers allocated but not all which were requested.”h]”hŒŠReturns 0 on success otherwise negative errno. In the error case, dwc may contain some buffers allocated but not all which were requested.”…”�”}”(hj_•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´Mhj°”ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œ%dwc3_event_buffers_setup (C function)”Œc.dwc3_event_buffers_setup”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ/int dwc3_event_buffers_setup (struct dwc3 *dwc)”h]”j?)�”}”(hŒ.int dwc3_event_buffers_setup(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hjŽ•h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShjŠ•h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M)ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjŠ•h²hh³jœ•h´M)ubjh)�”}”(hŒdwc3_event_buffers_setup”h]”jn)�”}”(hŒdwc3_event_buffers_setup”h]”hŒdwc3_event_buffers_setup”…”�”}”(hj¯•h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj«•ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghjŠ•h²hh³jœ•h´M)ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjË•h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjÇ•ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ•h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÇ•ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjé•h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjæ•ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”j때modname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj±•sbŒc.dwc3_event_buffers_setup”†”asbuh1hhjÇ•ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj –h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjÇ•ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjÇ•ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj$–h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjÇ•ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjÕubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©PhjŠ•h²hh³jœ•h´M)ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj†•h²hh³jœ•h´M)ubah}”(h]”j�•ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³jœ•h´M)hjƒ•h²hubjš)�”}”(hhh]”hì)�”}”(hŒ!setup our allocated event buffers”h]”hŒ!setup our allocated event buffers”…”�”}”(hjN–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M)hjK–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hjƒ•h²hh³jœ•h´M)ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jf–j½jf–j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hŒ“**Parameters** ``struct dwc3 *dwc`` pointer to our controller context structure **Description** Returns 0 on success otherwise negative errno.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjp–h]”hŒ Parameters”…”�”}”(hjr–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjn–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M-hjj–ubj )�”}”(hhh]”j)�”}”(hŒA``struct dwc3 *dwc`` pointer to our controller context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj�–h]”hŒstruct dwc3 *dwc”…”�”}”(hj‘–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj�–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M*hj‰–ubj1)�”}”(hhh]”hì)�”}”(hŒ+pointer to our controller context structure”h]”hŒ+pointer to our controller context structure”…”�”}”(hj¨–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j¤–h´M*hj¥–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj‰–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¤–h´M*hj†–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjj–ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjÊ–h]”hŒ Description”…”�”}”(hjÌ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjÈ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M,hjj–ubhì)�”}”(hŒ.Returns 0 on success otherwise negative errno.”h]”hŒ.Returns 0 on success otherwise negative errno.”…”�”}”(hjà–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M+hjj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´Nubj#)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(j/Œdwc3_phy_setup (C function)”Œc.dwc3_phy_setup”hNt”auh1j"hjh²hh³Nh´Nubj4)�”}”(hhh]”(j9)�”}”(hŒ%int dwc3_phy_setup (struct dwc3 *dwc)”h]”j?)�”}”(hŒ$int dwc3_phy_setup(struct dwc3 *dwc)”h]”(jÜS)�”}”(hŒint”h]”hŒint”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jèSah"]”h$]”h&]”uh1jÛShj —h²hh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhj —h²hh³j—h´M ubjh)�”}”(hŒdwc3_phy_setup”h]”jn)�”}”(hŒdwc3_phy_setup”h]”hŒdwc3_phy_setup”…”�”}”(hj0—h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhj,—ubah}”(h]”h ]”(j€j�eh"]”h$]”h&]”j´jµuh1jghj —h²hh³j—h´M ubjªP)�”}”(hŒ(struct dwc3 *dwc)”h]”j°P)�”}”(hŒstruct dwc3 *dwc”h]”(jE)�”}”(hjHh]”hŒstruct”…”�”}”(hjL—h²hh³Nh´Nubah}”(h]”h ]”jQah"]”h$]”h&]”uh1jDhjH—ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjY—h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjH—ubh)�”}”(hhh]”jn)�”}”(hŒdwc3”h]”hŒdwc3”…”�”}”(hjj—h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjg—ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¶Œreftype”jpPŒ reftarget”jl—Œmodname”NŒ classname”NjtPjwP)�”}”jzP]”j}P)�”}”jpPj2—sbŒc.dwc3_phy_setup”†”asbuh1hhjH—ubjW)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠ—h²hh³Nh´Nubah}”(h]”h ]”jcah"]”h$]”h&]”uh1jVhjH—ubjQ)�”}”(hjQh]”hŒ*”…”�”}”(hj˜—h²hh³Nh´Nubah}”(h]”h ]”j Qah"]”h$]”h&]”uh1jÿPhjH—ubjn)�”}”(hŒdwc”h]”hŒdwc”…”�”}”(hj¥—h²hh³Nh´Nubah}”(h]”h ]”jyah"]”h$]”h&]”uh1jmhjH—ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆj´jµuh1j¯PhjD—ubah}”(h]”h ]”h"]”h$]”h&]”j´jµuh1j©Phj —h²hh³j—h´M ubeh}”(h]”h ]”h"]”h$]”h&]”j´jµj‹ˆuh1j>jŒj�hj—h²hh³j—h´M ubah}”(h]”j—ah ]”(j‘j’eh"]”h$]”h&]”j–ˆj—)j˜huh1j8h³j—h´M hj—h²hubjš)�”}”(hhh]”hì)�”}”(hŒ(Configure USB PHY Interface of DWC3 Core”h]”hŒ(Configure USB PHY Interface of DWC3 Core”…”�”}”(hjÏ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M hjÌ—h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j™hj—h²hh³j—h´M ubeh}”(h]”h ]”(j¶Œfunction”eh"]”h$]”h&]”j»j¶j¼jç—j½jç—j¾‰j¿‰jÀ‰uh1j3h²hhjh³Nh´NubjÂ)�”}”(hX**Parameters** ``struct dwc3 *dwc`` Pointer to our controller context structure **Description** Returns 0 on success. The USB PHY interfaces are configured but not initialized. The PHY interfaces and the PHYs get initialized together with the core in dwc3_core_init.”h]”(hì)�”}”(hŒ**Parameters**”h]”j®)�”}”(hjñ—h]”hŒ Parameters”…”�”}”(hjó—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjï—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M$hjë—ubj )�”}”(hhh]”j)�”}”(hŒA``struct dwc3 *dwc`` Pointer to our controller context structure ”h]”(j)�”}”(hŒ``struct dwc3 *dwc``”h]”jÄ)�”}”(hj˜h]”hŒstruct dwc3 *dwc”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÃhj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M!hj ˜ubj1)�”}”(hhh]”hì)�”}”(hŒ+Pointer to our controller context structure”h]”hŒ+Pointer to our controller context structure”…”�”}”(hj)˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³j%˜h´M!hj&˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j0hj ˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%˜h´M!hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j hjë—ubhì)�”}”(hŒ**Description**”h]”j®)�”}”(hjK˜h]”hŒ Description”…”�”}”(hjM˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j­hjI˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M#hjë—ubhì)�”}”(hŒªReturns 0 on success. The USB PHY interfaces are configured but not initialized. The PHY interfaces and the PHYs get initialized together with the core in dwc3_core_init.”h]”hŒªReturns 0 on success. The USB PHY interfaces are configured but not initialized. The PHY interfaces and the PHYs get initialized together with the core in dwc3_core_init.”…”�”}”(hja˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³Œ\/var/lib/git/docbuild/linux/Documentation/driver-api/usb/dwc3:699: ./drivers/usb/dwc3/core.c”h´M"hjë—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jÁhjh²hh³Nh´NubhŒfootnote”“”)�”}”(hŒTransfer Request Block”h]”(hŒlabel”“”)�”}”(hhh]”hŒ1”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}˜hjy˜h²hh³Nh´Nubhì)�”}”(hj{˜h]”hŒTransfer Request Block”…”�”}”(hjŒ˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´M¿hjy˜ubeh}”(h]”j´ah ]”h"]”Œtrb”ah$]”h&]”(j­jŒjfej²Kjµj¶uh1jw˜h³hÊh´M¿hjh²hubjx˜)�”}”(hŒBTransfer Request Block pointing to another Transfer Request Block.”h]”(j~˜)�”}”(hhh]”hŒ2”…”�”}”(hj¤˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}˜hj ˜h²hh³Nh´Nubhì)�”}”(hŒBTransfer Request Block pointing to another Transfer Request Block.”h]”hŒBTransfer Request Block pointing to another Transfer Request Block.”…”�”}”(hj±˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÀhj ˜ubeh}”(h]”j~ah ]”h"]”Œlink_trb”ah$]”h&]”jyaj²Kjµj¶uh1jw˜h³hÊh´MÀhjh²hubjx˜)�”}”(hŒThe Debug File System”h]”(j~˜)�”}”(hhh]”hŒ3”…”�”}”(hjʘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}˜hjƘh²hh³Nh´Nubhì)�”}”(hjȘh]”hŒThe Debug File System”…”�”}”(hjטh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÂhjƘubeh}”(h]”jˆah ]”h"]”jSah$]”h&]”(jƒjuej²Kjµj¶uh1jw˜h³hÊh´MÂhjh²hubjx˜)�”}”(hŒThe Config File System”h]”(j~˜)�”}”(hhh]”hŒ4”…”�”}”(hjî˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}˜hjê˜h²hh³Nh´Nubhì)�”}”(hjì˜h]”hŒThe Config File System”…”�”}”(hjû˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÃhjê˜ubeh}”(h]”jâah ]”h"]”Œconfigfs”ah$]”h&]”jÝaj²Kjµj¶uh1jw˜h³hÊh´MÃhjh²hubjx˜)�”}”(hŒCommand Block Wrapper”h]”(j~˜)�”}”(hhh]”hŒ5”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j}˜hj™h²hh³Nh´Nubhì)�”}”(hj™h]”hŒCommand Block Wrapper”…”�”}”(hj ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÊh´MÄhj™ubeh}”(h]”jìah ]”h"]”Œcbw”ah$]”h&]”jçaj²Kjµj¶uh1jw˜h³hÊh´MÄhjh²hubhŒtarget”“”)�”}”(hŒT.. _Linus' tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/”h]”h}”(h]”Œ linus-tree”ah ]”h"]”Œ linus' tree”ah$]”h&]”jújûuh1j4™h´MÅhjh²hh³hÊjUKubj5™)�”}”(hŒ$.. _me: felipe.balbi@linux.intel.com”h]”h}”(h]”Œme”ah ]”h"]”Œme”ah$]”h&]”júj;uh1j4™h´MÆhjh²hh³hÊjUKubj5™)�”}”(hŒ(.. _linux-usb: linux-usb@vger.kernel.org”h]”h}”(h]”Œ linux-usb”ah ]”h"]”Œ linux-usb”ah$]”h&]”jújPuh1j4™h´MÇhjh²hh³hÊjUKubeh}”(h]”Œ"structures-methods-and-definitions”ah ]”h"]”Œ#structures, methods and definitions”ah$]”h&]”uh1hµhh·h²hh³hÊh´M­ubeh}”(h]”Œ6synopsys-designware-core-superspeed-usb-3-0-controller”ah ]”h"]”Œ6synopsys designware core superspeed usb 3.0 controller”ah$]”h&]”uh1hµhhh²hh³hÊh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÊuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hºNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j�™Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÊŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”(Œtrb”]”(j£j‚j\eŒdebugfs”]”(jyjkeŒconfigfs”]”jÓaŒcbw”]”jÝaŒlink_trb”]”joaŒ linus' tree”]”jêaŒme”]”(j+j' eŒ linux-usb”]”(j@j; euŒrefids”}”(j´]”(j£j‚j\ej~]”joajˆ]”(jyjkejâ]”jÓajì]”jÝauŒnameids”}”(jg™jd™jþjûjòjïjGjDj¶j³j@j=j®j«j¥j¢j�jšjj Œdebugfs”jˆjT jQ j– j“ jR jO jJjGjð jí jBj?jjjjjNjKj‘jŽjæjãjjjPjMjÉjÆjþjûj_™j\™j�˜j´jØj~j ™jâj1™jìj?™j<™jK™jH™jW™jT™uŒ nametypes”}”(jg™‰jþ‰jò‰jG‰j¶‰j@‰j®‰j¥‰j�‰j‰j晈jT ‰j– ‰jR ‰jJ‰jð ‰jB‰j‰j‰jN‰j‘‰jæ‰j‰jP‰jɉjþ‰j_™‰j�˜ˆj؈j ™ˆj1™ˆj?™ˆjK™ˆjW™ˆuh}”(jd™h·jûjQjïjj­j£jƒjyjÝjÓjDjõj³jJj=jijŒj‚jçjÝj«jCjfj\jyjoj¢j¹jšjRjujkj j¨jOjU jQ jù j“ jW jO j™ jGjU jí jW j?jó jjVjjÃjKj jŽjQjãj”jjéjMjjÆjSjûjÌj\™jj1j:jøjýj¼jÁjpjujzjj="jB"j#j„#jßFjäFjIj Ij-Kj2KjáLjæLjÏNjÔNjJPjOPjîQjóQjÎSjÓSjvUj{Uj¥WjªWj&Yj+Yj([j-[j]j]j˜^j�^j¶`j»`jbj!bjwcj|cjÒdj×dj|gj�gj>jjCjjmmjrmj‡ojŒoj£qj¨qjþrjsjtj„tjŠvj�vjxjxjWzj\zjÔ~jÙ~j‚j‚j|„j�„jW†j\†j1ˆj6ˆj²‰j·‰j ‹j‹jhŒjmŒjÃ�jÈ�jÇ�jÌ�j ’j’jh“jm“j�•j†•j—j—j´jy˜j~j ˜jˆjƘjâjê˜jìj™j<™j6™jH™jB™jT™jN™uŒ footnote_refs”}”(jÍ™]”(j£j‚j\ejÏ™]”(jyjkejÑ™]”jÓajÓ™]”jÝajÕ™]”joauŒ citation_refs”}”Œ autofootnotes”]”(jy˜j ˜jƘjê˜j™eŒautofootnote_refs”]”(j£jyjÓj‚jÝj\jojkeŒsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j›™K s…”R”Œparse_messages”]”hŒsystem_message”“”)�”}”(hhh]”hì)�”}”(hŒ*Duplicate implicit target name: "debugfs".”h]”hŒ.Duplicate implicit target name: “debugfsâ€�.”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëhj šubah}”(h]”h ]”h"]”h$]”h&]”jˆaŒlevel”KŒtype”ŒINFO”Œsource”hÊŒline”MÂuh1j šhjƘubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.