usb_kinetis_reg.h 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487
  1. /*
  2. * Copyright (c) 2024, sakumisu
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef __USB_KINETIS_REG_H__
  7. #define __USB_KINETIS_REG_H__
  8. #define __I volatile const /* Define "read-only" permission */
  9. #define __IO volatile /* Define "read-write" permission */
  10. /* ----------------------------------------------------------------------------
  11. -- USB Peripheral Access Layer
  12. ---------------------------------------------------------------------------- */
  13. /*!
  14. * @addtogroup USB_Peripheral_Access_Layer USB Peripheral Access Layer
  15. * @{
  16. */
  17. /** USB - Register Layout Typedef */
  18. typedef struct {
  19. __I uint8_t PERID; /**< Peripheral ID, offset: 0x0 */
  20. uint8_t RESERVED_0[3];
  21. __I uint8_t IDCOMP; /**< Peripheral ID Complement, offset: 0x4 */
  22. uint8_t RESERVED_1[3];
  23. __I uint8_t REV; /**< Peripheral Revision, offset: 0x8 */
  24. uint8_t RESERVED_2[3];
  25. __I uint8_t ADDINFO; /**< Peripheral Additional Information, offset: 0xC */
  26. uint8_t RESERVED_3[3];
  27. __IO uint8_t OTGISTAT; /**< OTG Interrupt Status, offset: 0x10 */
  28. uint8_t RESERVED_4[3];
  29. __IO uint8_t OTGICR; /**< OTG Interrupt Control, offset: 0x14 */
  30. uint8_t RESERVED_5[3];
  31. __I uint8_t OTGSTAT; /**< OTG Status, offset: 0x18 */
  32. uint8_t RESERVED_6[3];
  33. __IO uint8_t OTGCTL; /**< OTG Control, offset: 0x1C */
  34. uint8_t RESERVED_7[99];
  35. __IO uint8_t ISTAT; /**< Interrupt Status, offset: 0x80 */
  36. uint8_t RESERVED_8[3];
  37. __IO uint8_t INTEN; /**< Interrupt Enable, offset: 0x84 */
  38. uint8_t RESERVED_9[3];
  39. __IO uint8_t ERRSTAT; /**< Error Interrupt Status, offset: 0x88 */
  40. uint8_t RESERVED_10[3];
  41. __IO uint8_t ERREN; /**< Error Interrupt Enable, offset: 0x8C */
  42. uint8_t RESERVED_11[3];
  43. __I uint8_t STAT; /**< Status, offset: 0x90 */
  44. uint8_t RESERVED_12[3];
  45. __IO uint8_t CTL; /**< Control, offset: 0x94 */
  46. uint8_t RESERVED_13[3];
  47. __IO uint8_t ADDR; /**< Address, offset: 0x98 */
  48. uint8_t RESERVED_14[3];
  49. __IO uint8_t BDTPAGE1; /**< BDT Page 1, offset: 0x9C */
  50. uint8_t RESERVED_15[3];
  51. __I uint8_t FRMNUML; /**< Frame Number Register Low, offset: 0xA0 */
  52. uint8_t RESERVED_16[3];
  53. __I uint8_t FRMNUMH; /**< Frame Number Register High, offset: 0xA4 */
  54. uint8_t RESERVED_17[3];
  55. __IO uint8_t TOKEN; /**< Token, offset: 0xA8 */
  56. uint8_t RESERVED_18[3];
  57. __IO uint8_t SOFTHLD; /**< SOF Threshold, offset: 0xAC */
  58. uint8_t RESERVED_19[3];
  59. __IO uint8_t BDTPAGE2; /**< BDT Page 2, offset: 0xB0 */
  60. uint8_t RESERVED_20[3];
  61. __IO uint8_t BDTPAGE3; /**< BDT Page 3, offset: 0xB4 */
  62. uint8_t RESERVED_21[11];
  63. struct { /* offset: 0xC0, array step: 0x4 */
  64. __IO uint8_t ENDPT; /**< Endpoint Control, array offset: 0xC0, array step: 0x4 */
  65. uint8_t RESERVED_0[3];
  66. } ENDPOINT[16];
  67. } KINETIS_TypeDef;
  68. /* ----------------------------------------------------------------------------
  69. -- USB Register Masks
  70. ---------------------------------------------------------------------------- */
  71. /*!
  72. * @addtogroup USB_Register_Masks USB Register Masks
  73. * @{
  74. */
  75. /*! @name PERID - Peripheral ID */
  76. /*! @{ */
  77. #define USB_PERID_ID_MASK (0x3FU)
  78. #define USB_PERID_ID_SHIFT (0U)
  79. /*! ID - Peripheral Identification */
  80. #define USB_PERID_ID(x) (((uint8_t)(((uint8_t)(x)) << USB_PERID_ID_SHIFT)) & USB_PERID_ID_MASK)
  81. /*! @} */
  82. /*! @name IDCOMP - Peripheral ID Complement */
  83. /*! @{ */
  84. #define USB_IDCOMP_NID_MASK (0x3FU)
  85. #define USB_IDCOMP_NID_SHIFT (0U)
  86. /*! NID - Negative Peripheral ID */
  87. #define USB_IDCOMP_NID(x) (((uint8_t)(((uint8_t)(x)) << USB_IDCOMP_NID_SHIFT)) & USB_IDCOMP_NID_MASK)
  88. /*! @} */
  89. /*! @name REV - Peripheral Revision */
  90. /*! @{ */
  91. #define USB_REV_REV_MASK (0xFFU)
  92. #define USB_REV_REV_SHIFT (0U)
  93. /*! REV - Revision */
  94. #define USB_REV_REV(x) (((uint8_t)(((uint8_t)(x)) << USB_REV_REV_SHIFT)) & USB_REV_REV_MASK)
  95. /*! @} */
  96. /*! @name ADDINFO - Peripheral Additional Information */
  97. /*! @{ */
  98. #define USB_ADDINFO_IEHOST_MASK (0x1U)
  99. #define USB_ADDINFO_IEHOST_SHIFT (0U)
  100. /*! IEHOST - Host Mode Enable
  101. * 0b0..Disabled
  102. * 0b1..Enabled
  103. */
  104. #define USB_ADDINFO_IEHOST(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDINFO_IEHOST_SHIFT)) & USB_ADDINFO_IEHOST_MASK)
  105. /*! @} */
  106. /*! @name OTGISTAT - OTG Interrupt Status */
  107. /*! @{ */
  108. #define USB_OTGISTAT_LINE_STATE_CHG_MASK (0x20U)
  109. #define USB_OTGISTAT_LINE_STATE_CHG_SHIFT (5U)
  110. /*! LINE_STATE_CHG - Line State Change Interrupt Flag
  111. * 0b0..Interrupt did not occur
  112. * 0b1..Interrupt occurred
  113. * 0b0..No effect
  114. * 0b1..Clear the flag
  115. */
  116. #define USB_OTGISTAT_LINE_STATE_CHG(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_LINE_STATE_CHG_SHIFT)) & USB_OTGISTAT_LINE_STATE_CHG_MASK)
  117. #define USB_OTGISTAT_ONEMSEC_MASK (0x40U)
  118. #define USB_OTGISTAT_ONEMSEC_SHIFT (6U)
  119. /*! ONEMSEC - One Millisecond Timer Timeout Flag
  120. * 0b0..Not timed out
  121. * 0b1..Timed out
  122. * 0b0..No effect
  123. * 0b1..Clear the flag
  124. */
  125. #define USB_OTGISTAT_ONEMSEC(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGISTAT_ONEMSEC_SHIFT)) & USB_OTGISTAT_ONEMSEC_MASK)
  126. /*! @} */
  127. /*! @name OTGICR - OTG Interrupt Control */
  128. /*! @{ */
  129. #define USB_OTGICR_LINESTATEEN_MASK (0x20U)
  130. #define USB_OTGICR_LINESTATEEN_SHIFT (5U)
  131. /*! LINESTATEEN - Line State Change Interrupt Enable
  132. * 0b0..Disable
  133. * 0b1..Enable
  134. */
  135. #define USB_OTGICR_LINESTATEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_LINESTATEEN_SHIFT)) & USB_OTGICR_LINESTATEEN_MASK)
  136. #define USB_OTGICR_ONEMSECEN_MASK (0x40U)
  137. #define USB_OTGICR_ONEMSECEN_SHIFT (6U)
  138. /*! ONEMSECEN - 1-Millisecond Interrupt Enable
  139. * 0b0..Disable
  140. * 0b1..Enable
  141. */
  142. #define USB_OTGICR_ONEMSECEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGICR_ONEMSECEN_SHIFT)) & USB_OTGICR_ONEMSECEN_MASK)
  143. /*! @} */
  144. /*! @name OTGSTAT - OTG Status */
  145. /*! @{ */
  146. #define USB_OTGSTAT_LINESTATESTABLE_MASK (0x20U)
  147. #define USB_OTGSTAT_LINESTATESTABLE_SHIFT (5U)
  148. /*! LINESTATESTABLE - Line State Stable
  149. * 0b0..Unstable
  150. * 0b1..Stable
  151. */
  152. #define USB_OTGSTAT_LINESTATESTABLE(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_LINESTATESTABLE_SHIFT)) & USB_OTGSTAT_LINESTATESTABLE_MASK)
  153. #define USB_OTGSTAT_ONEMSEC_MASK (0x40U)
  154. #define USB_OTGSTAT_ONEMSEC_SHIFT (6U)
  155. /*! ONEMSEC - Reserved for 1 ms count */
  156. #define USB_OTGSTAT_ONEMSEC(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGSTAT_ONEMSEC_SHIFT)) & USB_OTGSTAT_ONEMSEC_MASK)
  157. /*! @} */
  158. /*! @name OTGCTL - OTG Control */
  159. /*! @{ */
  160. #define USB_OTGCTL_OTGEN_MASK (0x4U)
  161. #define USB_OTGCTL_OTGEN_SHIFT (2U)
  162. /*! OTGEN - On-The-Go Pullup and Pulldown Resistor Enable
  163. * 0b0..If USBENSOFEN is 1 and HOSTMODEEN is 0 in the Control Register (CTL), then the D+ Data line pullup
  164. * resistors are enabled. If HOSTMODEEN is 1, then the D+ and D- Data line pulldown resistors are engaged.
  165. * 0b1..Uses the pullup and pulldown controls in this register.
  166. */
  167. #define USB_OTGCTL_OTGEN(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_OTGEN_SHIFT)) & USB_OTGCTL_OTGEN_MASK)
  168. #define USB_OTGCTL_DMLOW_MASK (0x10U)
  169. #define USB_OTGCTL_DMLOW_SHIFT (4U)
  170. /*! DMLOW - D- Data Line Pulldown Resistor Enable
  171. * 0b0..Disable
  172. * 0b1..Enable
  173. */
  174. #define USB_OTGCTL_DMLOW(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DMLOW_SHIFT)) & USB_OTGCTL_DMLOW_MASK)
  175. #define USB_OTGCTL_DPLOW_MASK (0x20U)
  176. #define USB_OTGCTL_DPLOW_SHIFT (5U)
  177. /*! DPLOW - D+ Data Line pulldown Resistor Enable
  178. * 0b0..Disable
  179. * 0b1..Enable
  180. */
  181. #define USB_OTGCTL_DPLOW(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPLOW_SHIFT)) & USB_OTGCTL_DPLOW_MASK)
  182. #define USB_OTGCTL_DPHIGH_MASK (0x80U)
  183. #define USB_OTGCTL_DPHIGH_SHIFT (7U)
  184. /*! DPHIGH - D+ Data Line Pullup Resistor Enable
  185. * 0b0..Disable
  186. * 0b1..Enable
  187. */
  188. #define USB_OTGCTL_DPHIGH(x) (((uint8_t)(((uint8_t)(x)) << USB_OTGCTL_DPHIGH_SHIFT)) & USB_OTGCTL_DPHIGH_MASK)
  189. /*! @} */
  190. /*! @name ISTAT - Interrupt Status */
  191. /*! @{ */
  192. #define USB_ISTAT_USBRST_MASK (0x1U)
  193. #define USB_ISTAT_USBRST_SHIFT (0U)
  194. /*! USBRST - USB Reset Flag
  195. * 0b0..Not detected
  196. * 0b1..Detected
  197. * 0b0..No effect
  198. * 0b1..Clear the flag
  199. */
  200. #define USB_ISTAT_USBRST(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_USBRST_SHIFT)) & USB_ISTAT_USBRST_MASK)
  201. #define USB_ISTAT_ERROR_MASK (0x2U)
  202. #define USB_ISTAT_ERROR_SHIFT (1U)
  203. /*! ERROR - Error Flag
  204. * 0b0..Error did not occur
  205. * 0b1..Error occurred
  206. * 0b0..No effect
  207. * 0b1..Clear the flag
  208. */
  209. #define USB_ISTAT_ERROR(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ERROR_SHIFT)) & USB_ISTAT_ERROR_MASK)
  210. #define USB_ISTAT_SOFTOK_MASK (0x4U)
  211. #define USB_ISTAT_SOFTOK_SHIFT (2U)
  212. /*! SOFTOK - Start Of Frame (SOF) Token Flag
  213. * 0b0..Did not receive
  214. * 0b1..Received
  215. * 0b0..No effect
  216. * 0b1..Clear the flag
  217. */
  218. #define USB_ISTAT_SOFTOK(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SOFTOK_SHIFT)) & USB_ISTAT_SOFTOK_MASK)
  219. #define USB_ISTAT_TOKDNE_MASK (0x8U)
  220. #define USB_ISTAT_TOKDNE_SHIFT (3U)
  221. /*! TOKDNE - Current Token Processing Flag
  222. * 0b0..Not processed
  223. * 0b1..Processed
  224. * 0b0..No effect
  225. * 0b1..Clear the flag
  226. */
  227. #define USB_ISTAT_TOKDNE(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_TOKDNE_SHIFT)) & USB_ISTAT_TOKDNE_MASK)
  228. #define USB_ISTAT_SLEEP_MASK (0x10U)
  229. #define USB_ISTAT_SLEEP_SHIFT (4U)
  230. /*! SLEEP - Sleep Flag
  231. * 0b0..Interrupt did not occur
  232. * 0b1..Interrupt occurred
  233. * 0b0..No effect
  234. * 0b1..Clear the flag
  235. */
  236. #define USB_ISTAT_SLEEP(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_SLEEP_SHIFT)) & USB_ISTAT_SLEEP_MASK)
  237. #define USB_ISTAT_RESUME_MASK (0x20U)
  238. #define USB_ISTAT_RESUME_SHIFT (5U)
  239. /*! RESUME - Resume Flag
  240. * 0b0..Interrupt did not occur
  241. * 0b1..Interrupt occurred
  242. * 0b0..No effect
  243. * 0b1..Clear the flag
  244. */
  245. #define USB_ISTAT_RESUME(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_RESUME_SHIFT)) & USB_ISTAT_RESUME_MASK)
  246. #define USB_ISTAT_ATTACH_MASK (0x40U)
  247. #define USB_ISTAT_ATTACH_SHIFT (6U)
  248. /*! ATTACH - Attach Interrupt Flag
  249. * 0b0..Not detected
  250. * 0b1..Detected
  251. * 0b0..No effect
  252. * 0b1..Clear the flag
  253. */
  254. #define USB_ISTAT_ATTACH(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_ATTACH_SHIFT)) & USB_ISTAT_ATTACH_MASK)
  255. #define USB_ISTAT_STALL_MASK (0x80U)
  256. #define USB_ISTAT_STALL_SHIFT (7U)
  257. /*! STALL - Stall Interrupt Flag
  258. * 0b0..Interrupt did not occur
  259. * 0b1..Interrupt occurred
  260. * 0b0..No effect
  261. * 0b1..Clear the flag
  262. */
  263. #define USB_ISTAT_STALL(x) (((uint8_t)(((uint8_t)(x)) << USB_ISTAT_STALL_SHIFT)) & USB_ISTAT_STALL_MASK)
  264. /*! @} */
  265. /*! @name INTEN - Interrupt Enable */
  266. /*! @{ */
  267. #define USB_INTEN_USBRSTEN_MASK (0x1U)
  268. #define USB_INTEN_USBRSTEN_SHIFT (0U)
  269. /*! USBRSTEN - USBRST Interrupt Enable
  270. * 0b0..Disable
  271. * 0b1..Enable
  272. */
  273. #define USB_INTEN_USBRSTEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_USBRSTEN_SHIFT)) & USB_INTEN_USBRSTEN_MASK)
  274. #define USB_INTEN_ERROREN_MASK (0x2U)
  275. #define USB_INTEN_ERROREN_SHIFT (1U)
  276. /*! ERROREN - ERROR Interrupt Enable
  277. * 0b0..Disable
  278. * 0b1..Enable
  279. */
  280. #define USB_INTEN_ERROREN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ERROREN_SHIFT)) & USB_INTEN_ERROREN_MASK)
  281. #define USB_INTEN_SOFTOKEN_MASK (0x4U)
  282. #define USB_INTEN_SOFTOKEN_SHIFT (2U)
  283. /*! SOFTOKEN - SOFTOK Interrupt Enable
  284. * 0b0..Disable
  285. * 0b1..Enable
  286. */
  287. #define USB_INTEN_SOFTOKEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SOFTOKEN_SHIFT)) & USB_INTEN_SOFTOKEN_MASK)
  288. #define USB_INTEN_TOKDNEEN_MASK (0x8U)
  289. #define USB_INTEN_TOKDNEEN_SHIFT (3U)
  290. /*! TOKDNEEN - TOKDNE Interrupt Enable
  291. * 0b0..Disable
  292. * 0b1..Enable
  293. */
  294. #define USB_INTEN_TOKDNEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_TOKDNEEN_SHIFT)) & USB_INTEN_TOKDNEEN_MASK)
  295. #define USB_INTEN_SLEEPEN_MASK (0x10U)
  296. #define USB_INTEN_SLEEPEN_SHIFT (4U)
  297. /*! SLEEPEN - SLEEP Interrupt Enable
  298. * 0b0..Disable
  299. * 0b1..Enable
  300. */
  301. #define USB_INTEN_SLEEPEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_SLEEPEN_SHIFT)) & USB_INTEN_SLEEPEN_MASK)
  302. #define USB_INTEN_RESUMEEN_MASK (0x20U)
  303. #define USB_INTEN_RESUMEEN_SHIFT (5U)
  304. /*! RESUMEEN - RESUME Interrupt Enable
  305. * 0b0..Disable
  306. * 0b1..Enable
  307. */
  308. #define USB_INTEN_RESUMEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_RESUMEEN_SHIFT)) & USB_INTEN_RESUMEEN_MASK)
  309. #define USB_INTEN_ATTACHEN_MASK (0x40U)
  310. #define USB_INTEN_ATTACHEN_SHIFT (6U)
  311. /*! ATTACHEN - ATTACH Interrupt Enable
  312. * 0b0..Disable
  313. * 0b1..Enable
  314. */
  315. #define USB_INTEN_ATTACHEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_ATTACHEN_SHIFT)) & USB_INTEN_ATTACHEN_MASK)
  316. #define USB_INTEN_STALLEN_MASK (0x80U)
  317. #define USB_INTEN_STALLEN_SHIFT (7U)
  318. /*! STALLEN - STALL Interrupt Enable
  319. * 0b0..Disable
  320. * 0b1..Enable
  321. */
  322. #define USB_INTEN_STALLEN(x) (((uint8_t)(((uint8_t)(x)) << USB_INTEN_STALLEN_SHIFT)) & USB_INTEN_STALLEN_MASK)
  323. /*! @} */
  324. /*! @name ERRSTAT - Error Interrupt Status */
  325. /*! @{ */
  326. #define USB_ERRSTAT_PIDERR_MASK (0x1U)
  327. #define USB_ERRSTAT_PIDERR_SHIFT (0U)
  328. /*! PIDERR - PID Error Flag
  329. * 0b0..Did not fail
  330. * 0b1..Failed
  331. * 0b0..No effect
  332. * 0b1..Clear the flag
  333. */
  334. #define USB_ERRSTAT_PIDERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_PIDERR_SHIFT)) & USB_ERRSTAT_PIDERR_MASK)
  335. #define USB_ERRSTAT_CRC5EOF_MASK (0x2U)
  336. #define USB_ERRSTAT_CRC5EOF_SHIFT (1U)
  337. /*! CRC5EOF - CRC5 Error or End of Frame Error Flag
  338. * 0b0..Interrupt did not occur
  339. * 0b1..Interrupt occurred
  340. * 0b0..No effect
  341. * 0b1..Clear the flag
  342. */
  343. #define USB_ERRSTAT_CRC5EOF(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC5EOF_SHIFT)) & USB_ERRSTAT_CRC5EOF_MASK)
  344. #define USB_ERRSTAT_CRC16_MASK (0x4U)
  345. #define USB_ERRSTAT_CRC16_SHIFT (2U)
  346. /*! CRC16 - CRC16 Error Flag
  347. * 0b0..Not rejected
  348. * 0b1..Rejected
  349. * 0b0..No effect
  350. * 0b1..Clear the flag
  351. */
  352. #define USB_ERRSTAT_CRC16(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_CRC16_SHIFT)) & USB_ERRSTAT_CRC16_MASK)
  353. #define USB_ERRSTAT_DFN8_MASK (0x8U)
  354. #define USB_ERRSTAT_DFN8_SHIFT (3U)
  355. /*! DFN8 - Data Field Not 8 Bits Flag
  356. * 0b0..Integer number of bytes
  357. * 0b1..Not an integer number of bytes
  358. * 0b0..No effect
  359. * 0b1..Clear the flag
  360. */
  361. #define USB_ERRSTAT_DFN8(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DFN8_SHIFT)) & USB_ERRSTAT_DFN8_MASK)
  362. #define USB_ERRSTAT_BTOERR_MASK (0x10U)
  363. #define USB_ERRSTAT_BTOERR_SHIFT (4U)
  364. /*! BTOERR - Bus Turnaround Timeout Error Flag
  365. * 0b0..Not timed out
  366. * 0b1..Timed out
  367. * 0b0..No effect
  368. * 0b1..Clear the flag
  369. */
  370. #define USB_ERRSTAT_BTOERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTOERR_SHIFT)) & USB_ERRSTAT_BTOERR_MASK)
  371. #define USB_ERRSTAT_DMAERR_MASK (0x20U)
  372. #define USB_ERRSTAT_DMAERR_SHIFT (5U)
  373. /*! DMAERR - DMA Access Error Flag
  374. * 0b0..Interrupt did not occur
  375. * 0b1..Interrupt occurred
  376. * 0b0..No effect
  377. * 0b1..Clear the flag
  378. */
  379. #define USB_ERRSTAT_DMAERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_DMAERR_SHIFT)) & USB_ERRSTAT_DMAERR_MASK)
  380. #define USB_ERRSTAT_OWNERR_MASK (0x40U)
  381. #define USB_ERRSTAT_OWNERR_SHIFT (6U)
  382. /*! OWNERR - BD Unavailable Error Flag
  383. * 0b0..Interrupt did not occur
  384. * 0b1..Interrupt occurred
  385. * 0b0..No effect
  386. * 0b1..Clear the flag
  387. */
  388. #define USB_ERRSTAT_OWNERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_OWNERR_SHIFT)) & USB_ERRSTAT_OWNERR_MASK)
  389. #define USB_ERRSTAT_BTSERR_MASK (0x80U)
  390. #define USB_ERRSTAT_BTSERR_SHIFT (7U)
  391. /*! BTSERR - Bit Stuff Error Flag
  392. * 0b0..Packet not rejected due to the error
  393. * 0b1..Packet rejected due to the error
  394. * 0b0..No effect
  395. * 0b1..Clear the flag
  396. */
  397. #define USB_ERRSTAT_BTSERR(x) (((uint8_t)(((uint8_t)(x)) << USB_ERRSTAT_BTSERR_SHIFT)) & USB_ERRSTAT_BTSERR_MASK)
  398. /*! @} */
  399. /*! @name ERREN - Error Interrupt Enable */
  400. /*! @{ */
  401. #define USB_ERREN_PIDERREN_MASK (0x1U)
  402. #define USB_ERREN_PIDERREN_SHIFT (0U)
  403. /*! PIDERREN - PIDERR Interrupt Enable
  404. * 0b0..Disable
  405. * 0b1..Enable
  406. */
  407. #define USB_ERREN_PIDERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_PIDERREN_SHIFT)) & USB_ERREN_PIDERREN_MASK)
  408. #define USB_ERREN_CRC5EOFEN_MASK (0x2U)
  409. #define USB_ERREN_CRC5EOFEN_SHIFT (1U)
  410. /*! CRC5EOFEN - CRC5/EOF Interrupt Enable
  411. * 0b0..Disable
  412. * 0b1..Enable
  413. */
  414. #define USB_ERREN_CRC5EOFEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC5EOFEN_SHIFT)) & USB_ERREN_CRC5EOFEN_MASK)
  415. #define USB_ERREN_CRC16EN_MASK (0x4U)
  416. #define USB_ERREN_CRC16EN_SHIFT (2U)
  417. /*! CRC16EN - CRC16 Interrupt Enable
  418. * 0b0..Disable
  419. * 0b1..Enable
  420. */
  421. #define USB_ERREN_CRC16EN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_CRC16EN_SHIFT)) & USB_ERREN_CRC16EN_MASK)
  422. #define USB_ERREN_DFN8EN_MASK (0x8U)
  423. #define USB_ERREN_DFN8EN_SHIFT (3U)
  424. /*! DFN8EN - DFN8 (Data Field Not Integer Number of Bytes) Interrupt Enable
  425. * 0b0..Disable
  426. * 0b1..Enable
  427. */
  428. #define USB_ERREN_DFN8EN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DFN8EN_SHIFT)) & USB_ERREN_DFN8EN_MASK)
  429. #define USB_ERREN_BTOERREN_MASK (0x10U)
  430. #define USB_ERREN_BTOERREN_SHIFT (4U)
  431. /*! BTOERREN - BTOERR (Bus Timeout Error) Interrupt Enable
  432. * 0b0..Disable
  433. * 0b1..Enable
  434. */
  435. #define USB_ERREN_BTOERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTOERREN_SHIFT)) & USB_ERREN_BTOERREN_MASK)
  436. #define USB_ERREN_DMAERREN_MASK (0x20U)
  437. #define USB_ERREN_DMAERREN_SHIFT (5U)
  438. /*! DMAERREN - DMAERR Interrupt Enable
  439. * 0b0..Disable
  440. * 0b1..Enable
  441. */
  442. #define USB_ERREN_DMAERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_DMAERREN_SHIFT)) & USB_ERREN_DMAERREN_MASK)
  443. #define USB_ERREN_OWNERREN_MASK (0x40U)
  444. #define USB_ERREN_OWNERREN_SHIFT (6U)
  445. /*! OWNERREN - OWNERR Interrupt Enable
  446. * 0b0..Disable
  447. * 0b1..Enable
  448. */
  449. #define USB_ERREN_OWNERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_OWNERREN_SHIFT)) & USB_ERREN_OWNERREN_MASK)
  450. #define USB_ERREN_BTSERREN_MASK (0x80U)
  451. #define USB_ERREN_BTSERREN_SHIFT (7U)
  452. /*! BTSERREN - BTSERR (Bit Stuff Error) Interrupt Enable
  453. * 0b0..Disable
  454. * 0b1..Enable
  455. */
  456. #define USB_ERREN_BTSERREN(x) (((uint8_t)(((uint8_t)(x)) << USB_ERREN_BTSERREN_SHIFT)) & USB_ERREN_BTSERREN_MASK)
  457. /*! @} */
  458. /*! @name STAT - Status */
  459. /*! @{ */
  460. #define USB_STAT_ODD_MASK (0x4U)
  461. #define USB_STAT_ODD_SHIFT (2U)
  462. /*! ODD - Odd Bank
  463. * 0b0..Not in the odd bank
  464. * 0b1..In the odd bank
  465. */
  466. #define USB_STAT_ODD(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_ODD_SHIFT)) & USB_STAT_ODD_MASK)
  467. #define USB_STAT_TX_MASK (0x8U)
  468. #define USB_STAT_TX_SHIFT (3U)
  469. /*! TX - Transmit Indicator
  470. * 0b0..Receive
  471. * 0b1..Transmit
  472. */
  473. #define USB_STAT_TX(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_TX_SHIFT)) & USB_STAT_TX_MASK)
  474. #define USB_STAT_ENDP_MASK (0xF0U)
  475. #define USB_STAT_ENDP_SHIFT (4U)
  476. /*! ENDP - Endpoint address */
  477. #define USB_STAT_ENDP(x) (((uint8_t)(((uint8_t)(x)) << USB_STAT_ENDP_SHIFT)) & USB_STAT_ENDP_MASK)
  478. /*! @} */
  479. /*! @name CTL - Control */
  480. /*! @{ */
  481. #define USB_CTL_USBENSOFEN_MASK (0x1U)
  482. #define USB_CTL_USBENSOFEN_SHIFT (0U)
  483. /*! USBENSOFEN - USB Enable
  484. * 0b0..Disable
  485. * 0b1..Enable
  486. */
  487. #define USB_CTL_USBENSOFEN(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_USBENSOFEN_SHIFT)) & USB_CTL_USBENSOFEN_MASK)
  488. #define USB_CTL_ODDRST_MASK (0x2U)
  489. #define USB_CTL_ODDRST_SHIFT (1U)
  490. /*! ODDRST - Odd Reset */
  491. #define USB_CTL_ODDRST(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_ODDRST_SHIFT)) & USB_CTL_ODDRST_MASK)
  492. #define USB_CTL_RESUME_MASK (0x4U)
  493. #define USB_CTL_RESUME_SHIFT (2U)
  494. /*! RESUME - Resume */
  495. #define USB_CTL_RESUME(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESUME_SHIFT)) & USB_CTL_RESUME_MASK)
  496. #define USB_CTL_HOSTMODEEN_MASK (0x8U)
  497. #define USB_CTL_HOSTMODEEN_SHIFT (3U)
  498. /*! HOSTMODEEN - Host Mode Enable
  499. * 0b0..USBFS operates in Device mode.
  500. * 0b1..USBFS operates in Host mode. In Host mode, USBFS performs USB transactions under the programmed control of the host processor.
  501. */
  502. #define USB_CTL_HOSTMODEEN(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_HOSTMODEEN_SHIFT)) & USB_CTL_HOSTMODEEN_MASK)
  503. #define USB_CTL_RESET_MASK (0x10U)
  504. #define USB_CTL_RESET_SHIFT (4U)
  505. /*! RESET - Reset Signaling Enable
  506. * 0b0..Disable
  507. * 0b1..Enable
  508. */
  509. #define USB_CTL_RESET(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_RESET_SHIFT)) & USB_CTL_RESET_MASK)
  510. #define USB_CTL_TXSUSPENDTOKENBUSY_MASK (0x20U)
  511. #define USB_CTL_TXSUSPENDTOKENBUSY_SHIFT (5U)
  512. /*! TXSUSPENDTOKENBUSY - TXD Suspend And Token Busy */
  513. #define USB_CTL_TXSUSPENDTOKENBUSY(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_TXSUSPENDTOKENBUSY_SHIFT)) & USB_CTL_TXSUSPENDTOKENBUSY_MASK)
  514. #define USB_CTL_SE0_MASK (0x40U)
  515. #define USB_CTL_SE0_SHIFT (6U)
  516. /*! SE0 - Live USB Single-Ended Zero signal */
  517. #define USB_CTL_SE0(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_SE0_SHIFT)) & USB_CTL_SE0_MASK)
  518. #define USB_CTL_JSTATE_MASK (0x80U)
  519. #define USB_CTL_JSTATE_SHIFT (7U)
  520. /*! JSTATE - Live USB Differential Receiver JSTATE Signal */
  521. #define USB_CTL_JSTATE(x) (((uint8_t)(((uint8_t)(x)) << USB_CTL_JSTATE_SHIFT)) & USB_CTL_JSTATE_MASK)
  522. /*! @} */
  523. /*! @name ADDR - Address */
  524. /*! @{ */
  525. #define USB_ADDR_ADDR_MASK (0x7FU)
  526. #define USB_ADDR_ADDR_SHIFT (0U)
  527. /*! ADDR - USB Address */
  528. #define USB_ADDR_ADDR(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDR_ADDR_SHIFT)) & USB_ADDR_ADDR_MASK)
  529. #define USB_ADDR_LSEN_MASK (0x80U)
  530. #define USB_ADDR_LSEN_SHIFT (7U)
  531. /*! LSEN - Low Speed Enable */
  532. #define USB_ADDR_LSEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ADDR_LSEN_SHIFT)) & USB_ADDR_LSEN_MASK)
  533. /*! @} */
  534. /*! @name BDTPAGE1 - BDT Page 1 */
  535. /*! @{ */
  536. #define USB_BDTPAGE1_BDTBA_MASK (0xFEU)
  537. #define USB_BDTPAGE1_BDTBA_SHIFT (1U)
  538. /*! BDTBA - BDT Base Address */
  539. #define USB_BDTPAGE1_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE1_BDTBA_SHIFT)) & USB_BDTPAGE1_BDTBA_MASK)
  540. /*! @} */
  541. /*! @name FRMNUML - Frame Number Register Low */
  542. /*! @{ */
  543. #define USB_FRMNUML_FRM_MASK (0xFFU)
  544. #define USB_FRMNUML_FRM_SHIFT (0U)
  545. /*! FRM - Frame Number, Bits 0-7 */
  546. #define USB_FRMNUML_FRM(x) (((uint8_t)(((uint8_t)(x)) << USB_FRMNUML_FRM_SHIFT)) & USB_FRMNUML_FRM_MASK)
  547. /*! @} */
  548. /*! @name FRMNUMH - Frame Number Register High */
  549. /*! @{ */
  550. #define USB_FRMNUMH_FRM_MASK (0x7U)
  551. #define USB_FRMNUMH_FRM_SHIFT (0U)
  552. /*! FRM - Frame Number, Bits 8-10 */
  553. #define USB_FRMNUMH_FRM(x) (((uint8_t)(((uint8_t)(x)) << USB_FRMNUMH_FRM_SHIFT)) & USB_FRMNUMH_FRM_MASK)
  554. /*! @} */
  555. /*! @name TOKEN - Token */
  556. /*! @{ */
  557. #define USB_TOKEN_TOKENENDPT_MASK (0xFU)
  558. #define USB_TOKEN_TOKENENDPT_SHIFT (0U)
  559. /*! TOKENENDPT - Token Endpoint Address */
  560. #define USB_TOKEN_TOKENENDPT(x) (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENENDPT_SHIFT)) & USB_TOKEN_TOKENENDPT_MASK)
  561. #define USB_TOKEN_TOKENPID_MASK (0xF0U)
  562. #define USB_TOKEN_TOKENPID_SHIFT (4U)
  563. /*! TOKENPID - Token Type
  564. * 0b0001..OUT token. USBFS performs an OUT (TX) transaction.
  565. * 0b1001..IN token. USBFS performs an IN (RX) transaction.
  566. * 0b1101..SETUP token. USBFS performs a SETUP (TX) transaction
  567. */
  568. #define USB_TOKEN_TOKENPID(x) (((uint8_t)(((uint8_t)(x)) << USB_TOKEN_TOKENPID_SHIFT)) & USB_TOKEN_TOKENPID_MASK)
  569. /*! @} */
  570. /*! @name SOFTHLD - SOF Threshold */
  571. /*! @{ */
  572. #define USB_SOFTHLD_CNT_MASK (0xFFU)
  573. #define USB_SOFTHLD_CNT_SHIFT (0U)
  574. /*! CNT - SOF Count Threshold */
  575. #define USB_SOFTHLD_CNT(x) (((uint8_t)(((uint8_t)(x)) << USB_SOFTHLD_CNT_SHIFT)) & USB_SOFTHLD_CNT_MASK)
  576. /*! @} */
  577. /*! @name BDTPAGE2 - BDT Page 2 */
  578. /*! @{ */
  579. #define USB_BDTPAGE2_BDTBA_MASK (0xFFU)
  580. #define USB_BDTPAGE2_BDTBA_SHIFT (0U)
  581. /*! BDTBA - BDT Base Address */
  582. #define USB_BDTPAGE2_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE2_BDTBA_SHIFT)) & USB_BDTPAGE2_BDTBA_MASK)
  583. /*! @} */
  584. /*! @name BDTPAGE3 - BDT Page 3 */
  585. /*! @{ */
  586. #define USB_BDTPAGE3_BDTBA_MASK (0xFFU)
  587. #define USB_BDTPAGE3_BDTBA_SHIFT (0U)
  588. /*! BDTBA - BDT Base Address */
  589. #define USB_BDTPAGE3_BDTBA(x) (((uint8_t)(((uint8_t)(x)) << USB_BDTPAGE3_BDTBA_SHIFT)) & USB_BDTPAGE3_BDTBA_MASK)
  590. /*! @} */
  591. /*! @name ENDPT - Endpoint Control */
  592. /*! @{ */
  593. #define USB_ENDPT_EPHSHK_MASK (0x1U)
  594. #define USB_ENDPT_EPHSHK_SHIFT (0U)
  595. /*! EPHSHK - Endpoint Handshaking Enable */
  596. #define USB_ENDPT_EPHSHK(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPHSHK_SHIFT)) & USB_ENDPT_EPHSHK_MASK)
  597. #define USB_ENDPT_EPSTALL_MASK (0x2U)
  598. #define USB_ENDPT_EPSTALL_SHIFT (1U)
  599. /*! EPSTALL - Endpoint Stalled */
  600. #define USB_ENDPT_EPSTALL(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPSTALL_SHIFT)) & USB_ENDPT_EPSTALL_MASK)
  601. #define USB_ENDPT_EPTXEN_MASK (0x4U)
  602. #define USB_ENDPT_EPTXEN_SHIFT (2U)
  603. /*! EPTXEN - Endpoint for TX transfers enable */
  604. #define USB_ENDPT_EPTXEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPTXEN_SHIFT)) & USB_ENDPT_EPTXEN_MASK)
  605. #define USB_ENDPT_EPRXEN_MASK (0x8U)
  606. #define USB_ENDPT_EPRXEN_SHIFT (3U)
  607. /*! EPRXEN - Endpoint for RX transfers enable */
  608. #define USB_ENDPT_EPRXEN(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPRXEN_SHIFT)) & USB_ENDPT_EPRXEN_MASK)
  609. #define USB_ENDPT_EPCTLDIS_MASK (0x10U)
  610. #define USB_ENDPT_EPCTLDIS_SHIFT (4U)
  611. /*! EPCTLDIS - Control Transfer Disable
  612. * 0b0..Enable
  613. * 0b1..Disable
  614. */
  615. #define USB_ENDPT_EPCTLDIS(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_EPCTLDIS_SHIFT)) & USB_ENDPT_EPCTLDIS_MASK)
  616. #define USB_ENDPT_RETRYDIS_MASK (0x40U)
  617. #define USB_ENDPT_RETRYDIS_SHIFT (6U)
  618. /*! RETRYDIS - Retry Disable
  619. * 0b0..Retried NAK'ed transactions in hardware.
  620. * 0b1..Do not retry NAK'ed transactions. When a transaction is NAK'ed, the BDT PID field is updated with the NAK
  621. * PID, and the TOKEN_DNE interrupt becomes 1.
  622. */
  623. #define USB_ENDPT_RETRYDIS(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_RETRYDIS_SHIFT)) & USB_ENDPT_RETRYDIS_MASK)
  624. #define USB_ENDPT_HOSTWOHUB_MASK (0x80U)
  625. #define USB_ENDPT_HOSTWOHUB_SHIFT (7U)
  626. /*! HOSTWOHUB - Host Without A Hub
  627. * 0b0..Connected using a hub (USBFS generates PRE_PID as required)
  628. * 0b1..Connected directly to host without a hub, or was used to attach
  629. */
  630. #define USB_ENDPT_HOSTWOHUB(x) (((uint8_t)(((uint8_t)(x)) << USB_ENDPT_HOSTWOHUB_SHIFT)) & USB_ENDPT_HOSTWOHUB_MASK)
  631. /*! @} */
  632. /* The count of USB_ENDPT */
  633. #define USB_ENDPT_COUNT (16U)
  634. /*! @name USBCTRL - USB Control */
  635. /*! @{ */
  636. #define USB_USBCTRL_DPDM_LANE_REVERSE_MASK (0x4U)
  637. #define USB_USBCTRL_DPDM_LANE_REVERSE_SHIFT (2U)
  638. /*! DPDM_LANE_REVERSE - DP and DM Lane Reversal Control
  639. * 0b0..Standard USB DP and DM package pin assignment
  640. * 0b1..Reverse roles of USB DP and DM package pins
  641. */
  642. #define USB_USBCTRL_DPDM_LANE_REVERSE(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_DPDM_LANE_REVERSE_SHIFT)) & USB_USBCTRL_DPDM_LANE_REVERSE_MASK)
  643. #define USB_USBCTRL_HOST_LS_EOP_MASK (0x8U)
  644. #define USB_USBCTRL_HOST_LS_EOP_SHIFT (3U)
  645. /*! HOST_LS_EOP - Host-Mode-Only Low-Speed Device EOP Signaling
  646. * 0b0..Full-speed device or a low-speed device through a hub
  647. * 0b1..Directly-connected low-speed device
  648. */
  649. #define USB_USBCTRL_HOST_LS_EOP(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_HOST_LS_EOP_SHIFT)) & USB_USBCTRL_HOST_LS_EOP_MASK)
  650. #define USB_USBCTRL_UARTSEL_MASK (0x10U)
  651. #define USB_USBCTRL_UARTSEL_SHIFT (4U)
  652. /*! UARTSEL - UART Select
  653. * 0b0..USB DP and DM external package pins are used for USB signaling.
  654. * 0b1..USB DP and DM external package pins are used for UART signaling.
  655. */
  656. #define USB_USBCTRL_UARTSEL(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_UARTSEL_SHIFT)) & USB_USBCTRL_UARTSEL_MASK)
  657. #define USB_USBCTRL_UARTCHLS_MASK (0x20U)
  658. #define USB_USBCTRL_UARTCHLS_SHIFT (5U)
  659. /*! UARTCHLS - UART Signal Channel Select
  660. * 0b0..USB DP and DM signals are used as UART TX/RX.
  661. * 0b1..USB DP and DM signals are used as UART RX/TX.
  662. */
  663. #define USB_USBCTRL_UARTCHLS(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_UARTCHLS_SHIFT)) & USB_USBCTRL_UARTCHLS_MASK)
  664. #define USB_USBCTRL_PDE_MASK (0x40U)
  665. #define USB_USBCTRL_PDE_SHIFT (6U)
  666. /*! PDE - Pulldown Enable
  667. * 0b0..Disable on D+ and D-
  668. * 0b1..Enable on D+ and D-
  669. */
  670. #define USB_USBCTRL_PDE(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_PDE_SHIFT)) & USB_USBCTRL_PDE_MASK)
  671. #define USB_USBCTRL_SUSP_MASK (0x80U)
  672. #define USB_USBCTRL_SUSP_SHIFT (7U)
  673. /*! SUSP - Suspend
  674. * 0b0..Not in Suspend state
  675. * 0b1..In Suspend state
  676. */
  677. #define USB_USBCTRL_SUSP(x) (((uint8_t)(((uint8_t)(x)) << USB_USBCTRL_SUSP_SHIFT)) & USB_USBCTRL_SUSP_MASK)
  678. /*! @} */
  679. /*! @name OBSERVE - USB OTG Observe */
  680. /*! @{ */
  681. #define USB_OBSERVE_DMPD_MASK (0x10U)
  682. #define USB_OBSERVE_DMPD_SHIFT (4U)
  683. /*! DMPD - D- Pulldown
  684. * 0b0..Disabled
  685. * 0b1..Enabled
  686. */
  687. #define USB_OBSERVE_DMPD(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DMPD_SHIFT)) & USB_OBSERVE_DMPD_MASK)
  688. #define USB_OBSERVE_DPPD_MASK (0x40U)
  689. #define USB_OBSERVE_DPPD_SHIFT (6U)
  690. /*! DPPD - D+ Pulldown
  691. * 0b0..Disabled
  692. * 0b1..Enabled
  693. */
  694. #define USB_OBSERVE_DPPD(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPD_SHIFT)) & USB_OBSERVE_DPPD_MASK)
  695. #define USB_OBSERVE_DPPU_MASK (0x80U)
  696. #define USB_OBSERVE_DPPU_SHIFT (7U)
  697. /*! DPPU - D+ Pullup
  698. * 0b0..Disabled
  699. * 0b1..Enabled
  700. */
  701. #define USB_OBSERVE_DPPU(x) (((uint8_t)(((uint8_t)(x)) << USB_OBSERVE_DPPU_SHIFT)) & USB_OBSERVE_DPPU_MASK)
  702. /*! @} */
  703. /*! @name CONTROL - USB OTG Control */
  704. /*! @{ */
  705. #define USB_CONTROL_VBUS_SOURCE_SEL_MASK (0x1U)
  706. #define USB_CONTROL_VBUS_SOURCE_SEL_SHIFT (0U)
  707. /*! VBUS_SOURCE_SEL - VBUS Monitoring Source Select
  708. * 0b0..Reserved
  709. * 0b1..Resistive divider attached to a GPIO pin
  710. */
  711. #define USB_CONTROL_VBUS_SOURCE_SEL(x) (((uint8_t)(((uint8_t)(x)) << USB_CONTROL_VBUS_SOURCE_SEL_SHIFT)) & USB_CONTROL_VBUS_SOURCE_SEL_MASK)
  712. #define USB_CONTROL_SESS_VLD_MASK (0x2U)
  713. #define USB_CONTROL_SESS_VLD_SHIFT (1U)
  714. /*! SESS_VLD - VBUS Session Valid status
  715. * 0b1..Above
  716. * 0b0..Below
  717. */
  718. #define USB_CONTROL_SESS_VLD(x) (((uint8_t)(((uint8_t)(x)) << USB_CONTROL_SESS_VLD_SHIFT)) & USB_CONTROL_SESS_VLD_MASK)
  719. #define USB_CONTROL_DPPULLUPNONOTG_MASK (0x10U)
  720. #define USB_CONTROL_DPPULLUPNONOTG_SHIFT (4U)
  721. /*! DPPULLUPNONOTG - DP Pullup in Non-OTG Device Mode
  722. * 0b0..Disable
  723. * 0b1..Enabled
  724. */
  725. #define USB_CONTROL_DPPULLUPNONOTG(x) (((uint8_t)(((uint8_t)(x)) << USB_CONTROL_DPPULLUPNONOTG_SHIFT)) & USB_CONTROL_DPPULLUPNONOTG_MASK)
  726. /*! @} */
  727. /*! @name USBTRC0 - USB Transceiver Control 0 */
  728. /*! @{ */
  729. #define USB_USBTRC0_USB_RESUME_INT_MASK (0x1U)
  730. #define USB_USBTRC0_USB_RESUME_INT_SHIFT (0U)
  731. /*! USB_RESUME_INT - USB Asynchronous Interrupt
  732. * 0b0..Not generated
  733. * 0b1..Generated because of the USB asynchronous interrupt
  734. */
  735. #define USB_USBTRC0_USB_RESUME_INT(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_RESUME_INT_SHIFT)) & USB_USBTRC0_USB_RESUME_INT_MASK)
  736. #define USB_USBTRC0_SYNC_DET_MASK (0x2U)
  737. #define USB_USBTRC0_SYNC_DET_SHIFT (1U)
  738. /*! SYNC_DET - Synchronous USB Interrupt Detect
  739. * 0b0..Not detected
  740. * 0b1..Detected
  741. */
  742. #define USB_USBTRC0_SYNC_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_SYNC_DET_SHIFT)) & USB_USBTRC0_SYNC_DET_MASK)
  743. #define USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK (0x4U)
  744. #define USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT (2U)
  745. /*! USB_CLK_RECOVERY_INT - Combined USB Clock Recovery interrupt status */
  746. #define USB_USBTRC0_USB_CLK_RECOVERY_INT(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USB_CLK_RECOVERY_INT_SHIFT)) & USB_USBTRC0_USB_CLK_RECOVERY_INT_MASK)
  747. #define USB_USBTRC0_VREDG_DET_MASK (0x8U)
  748. #define USB_USBTRC0_VREDG_DET_SHIFT (3U)
  749. /*! VREDG_DET - VREGIN Rising Edge Interrupt Detect
  750. * 0b0..Not detected
  751. * 0b1..Detected
  752. */
  753. #define USB_USBTRC0_VREDG_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_VREDG_DET_SHIFT)) & USB_USBTRC0_VREDG_DET_MASK)
  754. #define USB_USBTRC0_VFEDG_DET_MASK (0x10U)
  755. #define USB_USBTRC0_VFEDG_DET_SHIFT (4U)
  756. /*! VFEDG_DET - VREGIN Falling Edge Interrupt Detect
  757. * 0b0..Not detected
  758. * 0b1..Detected
  759. */
  760. #define USB_USBTRC0_VFEDG_DET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_VFEDG_DET_SHIFT)) & USB_USBTRC0_VFEDG_DET_MASK)
  761. #define USB_USBTRC0_USBRESMEN_MASK (0x20U)
  762. #define USB_USBTRC0_USBRESMEN_SHIFT (5U)
  763. /*! USBRESMEN - Asynchronous Resume Interrupt Enable
  764. * 0b0..Disable
  765. * 0b1..Enable
  766. */
  767. #define USB_USBTRC0_USBRESMEN(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESMEN_SHIFT)) & USB_USBTRC0_USBRESMEN_MASK)
  768. #define USB_USBTRC0_VREGIN_STS_MASK (0x40U)
  769. #define USB_USBTRC0_VREGIN_STS_SHIFT (6U)
  770. /*! VREGIN_STS - VREGIN Status */
  771. #define USB_USBTRC0_VREGIN_STS(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_VREGIN_STS_SHIFT)) & USB_USBTRC0_VREGIN_STS_MASK)
  772. #define USB_USBTRC0_USBRESET_MASK (0x80U)
  773. #define USB_USBTRC0_USBRESET_SHIFT (7U)
  774. /*! USBRESET - USB Reset
  775. * 0b0..Normal USBFS operation
  776. * 0b1..Returns USBFS to its reset state
  777. */
  778. #define USB_USBTRC0_USBRESET(x) (((uint8_t)(((uint8_t)(x)) << USB_USBTRC0_USBRESET_SHIFT)) & USB_USBTRC0_USBRESET_MASK)
  779. /*! @} */
  780. /*! @name USBFRMADJUST - Frame Adjust */
  781. /*! @{ */
  782. #define USB_USBFRMADJUST_ADJ_MASK (0xFFU)
  783. #define USB_USBFRMADJUST_ADJ_SHIFT (0U)
  784. /*! ADJ - Frame Adjustment */
  785. #define USB_USBFRMADJUST_ADJ(x) (((uint8_t)(((uint8_t)(x)) << USB_USBFRMADJUST_ADJ_SHIFT)) & USB_USBFRMADJUST_ADJ_MASK)
  786. /*! @} */
  787. /*! @name KEEP_ALIVE_CTRL - Keep Alive Mode Control */
  788. /*! @{ */
  789. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_EN_MASK (0x1U)
  790. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_EN_SHIFT (0U)
  791. /*! KEEP_ALIVE_EN - Keep Alive Mode Enable
  792. * 0b0..Everything remains same as before.
  793. * 0b1..USB shall enter USB_KEEP_ALIVE mode after asserting ipg_stop.
  794. */
  795. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_EN_SHIFT)) & USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_EN_MASK)
  796. #define USB_KEEP_ALIVE_CTRL_OWN_OVERRD_EN_MASK (0x2U)
  797. #define USB_KEEP_ALIVE_CTRL_OWN_OVERRD_EN_SHIFT (1U)
  798. /*! OWN_OVERRD_EN - OWN Bit Override Enable */
  799. #define USB_KEEP_ALIVE_CTRL_OWN_OVERRD_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_OWN_OVERRD_EN_SHIFT)) & USB_KEEP_ALIVE_CTRL_OWN_OVERRD_EN_MASK)
  800. #define USB_KEEP_ALIVE_CTRL_STOP_ACK_DLY_EN_MASK (0x4U)
  801. #define USB_KEEP_ALIVE_CTRL_STOP_ACK_DLY_EN_SHIFT (2U)
  802. /*! STOP_ACK_DLY_EN - Stop Acknowledge Delay Enable
  803. * 0b0..Enter KEEP_ALIVE mode immediately when there is no USB AHB transfer.
  804. * 0b1..Enter KEEP_ALIVE mode until the USB core is idle and there is no USB AHB transfer.
  805. */
  806. #define USB_KEEP_ALIVE_CTRL_STOP_ACK_DLY_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_STOP_ACK_DLY_EN_SHIFT)) & USB_KEEP_ALIVE_CTRL_STOP_ACK_DLY_EN_MASK)
  807. #define USB_KEEP_ALIVE_CTRL_WAKE_REQ_EN_MASK (0x8U)
  808. #define USB_KEEP_ALIVE_CTRL_WAKE_REQ_EN_SHIFT (3U)
  809. /*! WAKE_REQ_EN - Wakeup Request Enable
  810. * 0b0..Disable
  811. * 0b1..Enable
  812. */
  813. #define USB_KEEP_ALIVE_CTRL_WAKE_REQ_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_WAKE_REQ_EN_SHIFT)) & USB_KEEP_ALIVE_CTRL_WAKE_REQ_EN_MASK)
  814. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_EN_MASK (0x10U)
  815. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_EN_SHIFT (4U)
  816. /*! WAKE_INT_EN - Wakeup Interrupt Enable */
  817. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_WAKE_INT_EN_SHIFT)) & USB_KEEP_ALIVE_CTRL_WAKE_INT_EN_MASK)
  818. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_STS_MASK (0x40U)
  819. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_STS_SHIFT (6U)
  820. /*! KEEP_ALIVE_STS - Keep Alive Status
  821. * 0b0..Not in Keep Alive mode
  822. * 0b1..In Keep Alive mode
  823. */
  824. #define USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_STS(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_STS_SHIFT)) & USB_KEEP_ALIVE_CTRL_KEEP_ALIVE_STS_MASK)
  825. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_STS_MASK (0x80U)
  826. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_STS_SHIFT (7U)
  827. /*! WAKE_INT_STS - Wakeup Interrupt Status Flag
  828. * 0b0..Interrupt did not occur
  829. * 0b1..Interrupt occurred
  830. * 0b0..No effect
  831. * 0b1..Clear the flag
  832. */
  833. #define USB_KEEP_ALIVE_CTRL_WAKE_INT_STS(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_CTRL_WAKE_INT_STS_SHIFT)) & USB_KEEP_ALIVE_CTRL_WAKE_INT_STS_MASK)
  834. /*! @} */
  835. /*! @name KEEP_ALIVE_WKCTRL - Keep Alive Mode Wakeup Control */
  836. /*! @{ */
  837. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ON_THIS_MASK (0xFU)
  838. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ON_THIS_SHIFT (0U)
  839. /*! WAKE_ON_THIS - Token PID for the wakeup request
  840. * 0b0001..Wake up after receiving OUT or SETUP token packet.
  841. * 0b1101..Wake up after receiving SETUP token packet. All other values are reserved.
  842. */
  843. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ON_THIS(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_WKCTRL_WAKE_ON_THIS_SHIFT)) & USB_KEEP_ALIVE_WKCTRL_WAKE_ON_THIS_MASK)
  844. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ENDPT_MASK (0xF0U)
  845. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ENDPT_SHIFT (4U)
  846. /*! WAKE_ENDPT - Endpoint address for the wakeup request */
  847. #define USB_KEEP_ALIVE_WKCTRL_WAKE_ENDPT(x) (((uint8_t)(((uint8_t)(x)) << USB_KEEP_ALIVE_WKCTRL_WAKE_ENDPT_SHIFT)) & USB_KEEP_ALIVE_WKCTRL_WAKE_ENDPT_MASK)
  848. /*! @} */
  849. /*! @name MISCCTRL - Miscellaneous Control */
  850. /*! @{ */
  851. #define USB_MISCCTRL_SOFDYNTHLD_MASK (0x1U)
  852. #define USB_MISCCTRL_SOFDYNTHLD_SHIFT (0U)
  853. /*! SOFDYNTHLD - Dynamic SOF Threshold Compare mode
  854. * 0b0..When the byte-times SOF threshold is reached
  855. * 0b1..When 8 byte-times SOF threshold is reached or overstepped
  856. */
  857. #define USB_MISCCTRL_SOFDYNTHLD(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_SOFDYNTHLD_SHIFT)) & USB_MISCCTRL_SOFDYNTHLD_MASK)
  858. #define USB_MISCCTRL_SOFBUSSET_MASK (0x2U)
  859. #define USB_MISCCTRL_SOFBUSSET_SHIFT (1U)
  860. /*! SOFBUSSET - SOF_TOK Interrupt Generation Mode Select
  861. * 0b0..According to the SOF threshold value
  862. * 0b1..When the SOF counter reaches 0
  863. */
  864. #define USB_MISCCTRL_SOFBUSSET(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_SOFBUSSET_SHIFT)) & USB_MISCCTRL_SOFBUSSET_MASK)
  865. #define USB_MISCCTRL_OWNERRISODIS_MASK (0x4U)
  866. #define USB_MISCCTRL_OWNERRISODIS_SHIFT (2U)
  867. /*! OWNERRISODIS - OWN Error Detect for ISO IN and ISO OUT Disable
  868. * 0b0..Enable
  869. * 0b1..Disable
  870. */
  871. #define USB_MISCCTRL_OWNERRISODIS(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_OWNERRISODIS_SHIFT)) & USB_MISCCTRL_OWNERRISODIS_MASK)
  872. #define USB_MISCCTRL_VREDG_EN_MASK (0x8U)
  873. #define USB_MISCCTRL_VREDG_EN_SHIFT (3U)
  874. /*! VREDG_EN - VREGIN Rising Edge Interrupt Enable
  875. * 0b0..Disable
  876. * 0b1..Enable
  877. */
  878. #define USB_MISCCTRL_VREDG_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_VREDG_EN_SHIFT)) & USB_MISCCTRL_VREDG_EN_MASK)
  879. #define USB_MISCCTRL_VFEDG_EN_MASK (0x10U)
  880. #define USB_MISCCTRL_VFEDG_EN_SHIFT (4U)
  881. /*! VFEDG_EN - VREGIN Falling Edge Interrupt Enable
  882. * 0b0..Disable
  883. * 0b1..Enable
  884. */
  885. #define USB_MISCCTRL_VFEDG_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_VFEDG_EN_SHIFT)) & USB_MISCCTRL_VFEDG_EN_MASK)
  886. #define USB_MISCCTRL_STL_ADJ_EN_MASK (0x80U)
  887. #define USB_MISCCTRL_STL_ADJ_EN_SHIFT (7U)
  888. /*! STL_ADJ_EN - USB Peripheral Mode Stall Adjust Enable
  889. * 0b0..If ENDPTn[END_STALL] = 1, both IN and OUT directions for the associated endpoint stalls.
  890. * 0b1..If ENDPTn[END_STALL] = 1, the STALL_xx_DIS registers control which directions for the associated endpoint stalls.
  891. */
  892. #define USB_MISCCTRL_STL_ADJ_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_MISCCTRL_STL_ADJ_EN_SHIFT)) & USB_MISCCTRL_STL_ADJ_EN_MASK)
  893. /*! @} */
  894. /*! @name STALL_IL_DIS - Peripheral Mode Stall Disable for Endpoints 7 to 0 in IN Direction */
  895. /*! @{ */
  896. #define USB_STALL_IL_DIS_STALL_I_DIS0_MASK (0x1U)
  897. #define USB_STALL_IL_DIS_STALL_I_DIS0_SHIFT (0U)
  898. /*! STALL_I_DIS0 - Disable Endpoint 0 IN Direction
  899. * 0b0..Enable
  900. * 0b1..Disable
  901. */
  902. #define USB_STALL_IL_DIS_STALL_I_DIS0(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS0_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS0_MASK)
  903. #define USB_STALL_IL_DIS_STALL_I_DIS1_MASK (0x2U)
  904. #define USB_STALL_IL_DIS_STALL_I_DIS1_SHIFT (1U)
  905. /*! STALL_I_DIS1 - Disable Endpoint 1 IN Direction
  906. * 0b0..Enable
  907. * 0b1..Disable
  908. */
  909. #define USB_STALL_IL_DIS_STALL_I_DIS1(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS1_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS1_MASK)
  910. #define USB_STALL_IL_DIS_STALL_I_DIS2_MASK (0x4U)
  911. #define USB_STALL_IL_DIS_STALL_I_DIS2_SHIFT (2U)
  912. /*! STALL_I_DIS2 - Disable Endpoint 2 IN Direction
  913. * 0b0..Enable
  914. * 0b1..Disable
  915. */
  916. #define USB_STALL_IL_DIS_STALL_I_DIS2(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS2_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS2_MASK)
  917. #define USB_STALL_IL_DIS_STALL_I_DIS3_MASK (0x8U)
  918. #define USB_STALL_IL_DIS_STALL_I_DIS3_SHIFT (3U)
  919. /*! STALL_I_DIS3 - Disable Endpoint 3 IN Direction
  920. * 0b0..Enable
  921. * 0b1..Disable
  922. */
  923. #define USB_STALL_IL_DIS_STALL_I_DIS3(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS3_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS3_MASK)
  924. #define USB_STALL_IL_DIS_STALL_I_DIS4_MASK (0x10U)
  925. #define USB_STALL_IL_DIS_STALL_I_DIS4_SHIFT (4U)
  926. /*! STALL_I_DIS4 - Disable Endpoint 4 IN Direction
  927. * 0b0..Enable
  928. * 0b1..Disable
  929. */
  930. #define USB_STALL_IL_DIS_STALL_I_DIS4(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS4_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS4_MASK)
  931. #define USB_STALL_IL_DIS_STALL_I_DIS5_MASK (0x20U)
  932. #define USB_STALL_IL_DIS_STALL_I_DIS5_SHIFT (5U)
  933. /*! STALL_I_DIS5 - Disable Endpoint 5 IN Direction
  934. * 0b0..Enable
  935. * 0b1..Disable
  936. */
  937. #define USB_STALL_IL_DIS_STALL_I_DIS5(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS5_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS5_MASK)
  938. #define USB_STALL_IL_DIS_STALL_I_DIS6_MASK (0x40U)
  939. #define USB_STALL_IL_DIS_STALL_I_DIS6_SHIFT (6U)
  940. /*! STALL_I_DIS6 - Disable Endpoint 6 IN Direction
  941. * 0b0..Enable
  942. * 0b1..Disable
  943. */
  944. #define USB_STALL_IL_DIS_STALL_I_DIS6(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS6_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS6_MASK)
  945. #define USB_STALL_IL_DIS_STALL_I_DIS7_MASK (0x80U)
  946. #define USB_STALL_IL_DIS_STALL_I_DIS7_SHIFT (7U)
  947. /*! STALL_I_DIS7 - Disable Endpoint 7 IN Direction
  948. * 0b0..Enable
  949. * 0b1..Disable
  950. */
  951. #define USB_STALL_IL_DIS_STALL_I_DIS7(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IL_DIS_STALL_I_DIS7_SHIFT)) & USB_STALL_IL_DIS_STALL_I_DIS7_MASK)
  952. /*! @} */
  953. /*! @name STALL_IH_DIS - Peripheral Mode Stall Disable for Endpoints 15 to 8 in IN Direction */
  954. /*! @{ */
  955. #define USB_STALL_IH_DIS_STALL_I_DIS8_MASK (0x1U)
  956. #define USB_STALL_IH_DIS_STALL_I_DIS8_SHIFT (0U)
  957. /*! STALL_I_DIS8 - Disable Endpoint 8 IN Direction
  958. * 0b0..Enable
  959. * 0b1..Disable
  960. */
  961. #define USB_STALL_IH_DIS_STALL_I_DIS8(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS8_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS8_MASK)
  962. #define USB_STALL_IH_DIS_STALL_I_DIS9_MASK (0x2U)
  963. #define USB_STALL_IH_DIS_STALL_I_DIS9_SHIFT (1U)
  964. /*! STALL_I_DIS9 - Disable Endpoint 9 IN Direction
  965. * 0b0..Enable
  966. * 0b1..Disable
  967. */
  968. #define USB_STALL_IH_DIS_STALL_I_DIS9(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS9_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS9_MASK)
  969. #define USB_STALL_IH_DIS_STALL_I_DIS10_MASK (0x4U)
  970. #define USB_STALL_IH_DIS_STALL_I_DIS10_SHIFT (2U)
  971. /*! STALL_I_DIS10 - Disable Endpoint 10 IN Direction
  972. * 0b0..Enable
  973. * 0b1..Disable
  974. */
  975. #define USB_STALL_IH_DIS_STALL_I_DIS10(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS10_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS10_MASK)
  976. #define USB_STALL_IH_DIS_STALL_I_DIS11_MASK (0x8U)
  977. #define USB_STALL_IH_DIS_STALL_I_DIS11_SHIFT (3U)
  978. /*! STALL_I_DIS11 - Disable Endpoint 11 IN Direction
  979. * 0b0..Enable
  980. * 0b1..Disable
  981. */
  982. #define USB_STALL_IH_DIS_STALL_I_DIS11(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS11_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS11_MASK)
  983. #define USB_STALL_IH_DIS_STALL_I_DIS12_MASK (0x10U)
  984. #define USB_STALL_IH_DIS_STALL_I_DIS12_SHIFT (4U)
  985. /*! STALL_I_DIS12 - Disable Endpoint 12 IN Direction
  986. * 0b0..Enable
  987. * 0b1..Disable
  988. */
  989. #define USB_STALL_IH_DIS_STALL_I_DIS12(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS12_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS12_MASK)
  990. #define USB_STALL_IH_DIS_STALL_I_DIS13_MASK (0x20U)
  991. #define USB_STALL_IH_DIS_STALL_I_DIS13_SHIFT (5U)
  992. /*! STALL_I_DIS13 - Disable Endpoint 13 IN Direction
  993. * 0b0..Enable
  994. * 0b1..Disable
  995. */
  996. #define USB_STALL_IH_DIS_STALL_I_DIS13(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS13_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS13_MASK)
  997. #define USB_STALL_IH_DIS_STALL_I_DIS14_MASK (0x40U)
  998. #define USB_STALL_IH_DIS_STALL_I_DIS14_SHIFT (6U)
  999. /*! STALL_I_DIS14 - Disable Endpoint 14 IN Direction
  1000. * 0b0..Enable
  1001. * 0b1..Disable
  1002. */
  1003. #define USB_STALL_IH_DIS_STALL_I_DIS14(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS14_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS14_MASK)
  1004. #define USB_STALL_IH_DIS_STALL_I_DIS15_MASK (0x80U)
  1005. #define USB_STALL_IH_DIS_STALL_I_DIS15_SHIFT (7U)
  1006. /*! STALL_I_DIS15 - Disable Endpoint 15 IN Direction
  1007. * 0b0..Enable
  1008. * 0b1..Disable
  1009. */
  1010. #define USB_STALL_IH_DIS_STALL_I_DIS15(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_IH_DIS_STALL_I_DIS15_SHIFT)) & USB_STALL_IH_DIS_STALL_I_DIS15_MASK)
  1011. /*! @} */
  1012. /*! @name STALL_OL_DIS - Peripheral Mode Stall Disable for Endpoints 7 to 0 in OUT Direction */
  1013. /*! @{ */
  1014. #define USB_STALL_OL_DIS_STALL_O_DIS0_MASK (0x1U)
  1015. #define USB_STALL_OL_DIS_STALL_O_DIS0_SHIFT (0U)
  1016. /*! STALL_O_DIS0 - Disable Endpoint 0 OUT Direction
  1017. * 0b0..Enable
  1018. * 0b1..Disable
  1019. */
  1020. #define USB_STALL_OL_DIS_STALL_O_DIS0(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS0_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS0_MASK)
  1021. #define USB_STALL_OL_DIS_STALL_O_DIS1_MASK (0x2U)
  1022. #define USB_STALL_OL_DIS_STALL_O_DIS1_SHIFT (1U)
  1023. /*! STALL_O_DIS1 - Disable Endpoint 1 OUT Direction
  1024. * 0b0..Enable
  1025. * 0b1..Disable
  1026. */
  1027. #define USB_STALL_OL_DIS_STALL_O_DIS1(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS1_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS1_MASK)
  1028. #define USB_STALL_OL_DIS_STALL_O_DIS2_MASK (0x4U)
  1029. #define USB_STALL_OL_DIS_STALL_O_DIS2_SHIFT (2U)
  1030. /*! STALL_O_DIS2 - Disable Endpoint 2 OUT Direction
  1031. * 0b0..Enable
  1032. * 0b1..Disable
  1033. */
  1034. #define USB_STALL_OL_DIS_STALL_O_DIS2(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS2_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS2_MASK)
  1035. #define USB_STALL_OL_DIS_STALL_O_DIS3_MASK (0x8U)
  1036. #define USB_STALL_OL_DIS_STALL_O_DIS3_SHIFT (3U)
  1037. /*! STALL_O_DIS3 - Disable Endpoint 3 OUT Direction
  1038. * 0b0..Enable
  1039. * 0b1..Disable
  1040. */
  1041. #define USB_STALL_OL_DIS_STALL_O_DIS3(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS3_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS3_MASK)
  1042. #define USB_STALL_OL_DIS_STALL_O_DIS4_MASK (0x10U)
  1043. #define USB_STALL_OL_DIS_STALL_O_DIS4_SHIFT (4U)
  1044. /*! STALL_O_DIS4 - Disable Endpoint 4 OUT Direction
  1045. * 0b0..Enable
  1046. * 0b1..Disable
  1047. */
  1048. #define USB_STALL_OL_DIS_STALL_O_DIS4(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS4_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS4_MASK)
  1049. #define USB_STALL_OL_DIS_STALL_O_DIS5_MASK (0x20U)
  1050. #define USB_STALL_OL_DIS_STALL_O_DIS5_SHIFT (5U)
  1051. /*! STALL_O_DIS5 - Disable Endpoint 5 OUT Direction
  1052. * 0b0..Enable
  1053. * 0b1..Disable
  1054. */
  1055. #define USB_STALL_OL_DIS_STALL_O_DIS5(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS5_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS5_MASK)
  1056. #define USB_STALL_OL_DIS_STALL_O_DIS6_MASK (0x40U)
  1057. #define USB_STALL_OL_DIS_STALL_O_DIS6_SHIFT (6U)
  1058. /*! STALL_O_DIS6 - Disable Endpoint 6 OUT Direction
  1059. * 0b0..Enable
  1060. * 0b1..Disable
  1061. */
  1062. #define USB_STALL_OL_DIS_STALL_O_DIS6(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS6_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS6_MASK)
  1063. #define USB_STALL_OL_DIS_STALL_O_DIS7_MASK (0x80U)
  1064. #define USB_STALL_OL_DIS_STALL_O_DIS7_SHIFT (7U)
  1065. /*! STALL_O_DIS7 - Disable Endpoint 7 OUT Direction
  1066. * 0b0..Enable
  1067. * 0b1..Disable
  1068. */
  1069. #define USB_STALL_OL_DIS_STALL_O_DIS7(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OL_DIS_STALL_O_DIS7_SHIFT)) & USB_STALL_OL_DIS_STALL_O_DIS7_MASK)
  1070. /*! @} */
  1071. /*! @name STALL_OH_DIS - Peripheral Mode Stall Disable for Endpoints 15 to 8 in OUT Direction */
  1072. /*! @{ */
  1073. #define USB_STALL_OH_DIS_STALL_O_DIS8_MASK (0x1U)
  1074. #define USB_STALL_OH_DIS_STALL_O_DIS8_SHIFT (0U)
  1075. /*! STALL_O_DIS8 - Disable Endpoint 8 OUT Direction
  1076. * 0b0..Enable
  1077. * 0b1..Disable
  1078. */
  1079. #define USB_STALL_OH_DIS_STALL_O_DIS8(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS8_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS8_MASK)
  1080. #define USB_STALL_OH_DIS_STALL_O_DIS9_MASK (0x2U)
  1081. #define USB_STALL_OH_DIS_STALL_O_DIS9_SHIFT (1U)
  1082. /*! STALL_O_DIS9 - Disable Endpoint 9 OUT Direction
  1083. * 0b0..Enable
  1084. * 0b1..Disable
  1085. */
  1086. #define USB_STALL_OH_DIS_STALL_O_DIS9(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS9_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS9_MASK)
  1087. #define USB_STALL_OH_DIS_STALL_O_DIS10_MASK (0x4U)
  1088. #define USB_STALL_OH_DIS_STALL_O_DIS10_SHIFT (2U)
  1089. /*! STALL_O_DIS10 - Disable Endpoint 10 OUT Direction
  1090. * 0b0..Enable
  1091. * 0b1..Disable
  1092. */
  1093. #define USB_STALL_OH_DIS_STALL_O_DIS10(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS10_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS10_MASK)
  1094. #define USB_STALL_OH_DIS_STALL_O_DIS11_MASK (0x8U)
  1095. #define USB_STALL_OH_DIS_STALL_O_DIS11_SHIFT (3U)
  1096. /*! STALL_O_DIS11 - Disable Endpoint 11 OUT Direction
  1097. * 0b0..Enable
  1098. * 0b1..Disable
  1099. */
  1100. #define USB_STALL_OH_DIS_STALL_O_DIS11(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS11_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS11_MASK)
  1101. #define USB_STALL_OH_DIS_STALL_O_DIS12_MASK (0x10U)
  1102. #define USB_STALL_OH_DIS_STALL_O_DIS12_SHIFT (4U)
  1103. /*! STALL_O_DIS12 - Disable endpoint 12 OUT direction
  1104. * 0b0..Enable
  1105. * 0b1..Disable
  1106. */
  1107. #define USB_STALL_OH_DIS_STALL_O_DIS12(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS12_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS12_MASK)
  1108. #define USB_STALL_OH_DIS_STALL_O_DIS13_MASK (0x20U)
  1109. #define USB_STALL_OH_DIS_STALL_O_DIS13_SHIFT (5U)
  1110. /*! STALL_O_DIS13 - Disable Endpoint 13 OUT Direction
  1111. * 0b0..Enable
  1112. * 0b1..Disable
  1113. */
  1114. #define USB_STALL_OH_DIS_STALL_O_DIS13(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS13_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS13_MASK)
  1115. #define USB_STALL_OH_DIS_STALL_O_DIS14_MASK (0x40U)
  1116. #define USB_STALL_OH_DIS_STALL_O_DIS14_SHIFT (6U)
  1117. /*! STALL_O_DIS14 - Disable Endpoint 14 OUT Direction
  1118. * 0b0..Enable
  1119. * 0b1..Disable
  1120. */
  1121. #define USB_STALL_OH_DIS_STALL_O_DIS14(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS14_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS14_MASK)
  1122. #define USB_STALL_OH_DIS_STALL_O_DIS15_MASK (0x80U)
  1123. #define USB_STALL_OH_DIS_STALL_O_DIS15_SHIFT (7U)
  1124. /*! STALL_O_DIS15 - Disable Endpoint 15 OUT Direction
  1125. * 0b0..Enable
  1126. * 0b1..Disable
  1127. */
  1128. #define USB_STALL_OH_DIS_STALL_O_DIS15(x) (((uint8_t)(((uint8_t)(x)) << USB_STALL_OH_DIS_STALL_O_DIS15_SHIFT)) & USB_STALL_OH_DIS_STALL_O_DIS15_MASK)
  1129. /*! @} */
  1130. /*! @name CLK_RECOVER_CTRL - USB Clock Recovery Control */
  1131. /*! @{ */
  1132. #define USB_CLK_RECOVER_CTRL_TRIM_INIT_VAL_SEL_MASK (0x8U)
  1133. #define USB_CLK_RECOVER_CTRL_TRIM_INIT_VAL_SEL_SHIFT (3U)
  1134. /*! TRIM_INIT_VAL_SEL - Selects the source for the initial FIRC trim fine value used after a reset.
  1135. * 0b0..Mid-scale
  1136. * 0b1..IFR
  1137. */
  1138. #define USB_CLK_RECOVER_CTRL_TRIM_INIT_VAL_SEL(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_TRIM_INIT_VAL_SEL_SHIFT)) & USB_CLK_RECOVER_CTRL_TRIM_INIT_VAL_SEL_MASK)
  1139. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK (0x20U)
  1140. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT (5U)
  1141. /*! RESTART_IFRTRIM_EN - Restart from IFR Trim Value
  1142. * 0b0..Trim fine adjustment always works based on the previous updated trim fine value.
  1143. * 0b1..Trim fine restarts from the IFR trim value whenever you detect bus_reset or bus_resume or deassert module enable.
  1144. */
  1145. #define USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESTART_IFRTRIM_EN_MASK)
  1146. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK (0x40U)
  1147. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT (6U)
  1148. /*! RESET_RESUME_ROUGH_EN - Reset or Resume to Rough Phase Enable
  1149. * 0b0..Always works in tracking phase after the first time rough phase, to track transition.
  1150. * 0b1..Go back to rough stage whenever a bus reset or bus resume occurs.
  1151. */
  1152. #define USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_RESET_RESUME_ROUGH_EN_MASK)
  1153. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK (0x80U)
  1154. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT (7U)
  1155. /*! CLOCK_RECOVER_EN - Crystal-Less USB Enable
  1156. * 0b0..Disable
  1157. * 0b1..Enable
  1158. */
  1159. #define USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_SHIFT)) & USB_CLK_RECOVER_CTRL_CLOCK_RECOVER_EN_MASK)
  1160. /*! @} */
  1161. /*! @name CLK_RECOVER_IRC_EN - FIRC Oscillator Enable */
  1162. /*! @{ */
  1163. #define USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK (0x2U)
  1164. #define USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT (1U)
  1165. /*! IRC_EN - Fast IRC enable
  1166. * 0b0..Disable
  1167. * 0b1..Enable
  1168. */
  1169. #define USB_CLK_RECOVER_IRC_EN_IRC_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_IRC_EN_IRC_EN_SHIFT)) & USB_CLK_RECOVER_IRC_EN_IRC_EN_MASK)
  1170. /*! @} */
  1171. /*! @name CLK_RECOVER_INT_EN - Clock Recovery Combined Interrupt Enable */
  1172. /*! @{ */
  1173. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_MASK (0x10U)
  1174. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_SHIFT (4U)
  1175. /*! OVF_ERROR_EN - Overflow error interrupt enable
  1176. * 0b0..The interrupt is masked
  1177. * 0b1..The interrupt is enabled
  1178. */
  1179. #define USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_SHIFT)) & USB_CLK_RECOVER_INT_EN_OVF_ERROR_EN_MASK)
  1180. /*! @} */
  1181. /*! @name CLK_RECOVER_INT_STATUS - Clock Recovery Separated Interrupt Status */
  1182. /*! @{ */
  1183. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK (0x10U)
  1184. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT (4U)
  1185. /*! OVF_ERROR - Overflow Error Interrupt Status Flag
  1186. * 0b0..Interrupt did not occur
  1187. * 0b1..Unmasked interrupt occurred
  1188. * 0b0..No effect
  1189. * 0b1..Clear the flag
  1190. */
  1191. #define USB_CLK_RECOVER_INT_STATUS_OVF_ERROR(x) (((uint8_t)(((uint8_t)(x)) << USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_SHIFT)) & USB_CLK_RECOVER_INT_STATUS_OVF_ERROR_MASK)
  1192. /*! @} */
  1193. /*!
  1194. * @}
  1195. */
  1196. /* end of group USB_Register_Masks */
  1197. /*!
  1198. * @brief This type of structure instance is used to implement the buffer descriptor for USB.
  1199. */
  1200. typedef struct
  1201. {
  1202. union {
  1203. uint32_t head; /*!< Head. */
  1204. struct
  1205. {
  1206. uint32_t reserved0 : 2; /*!< RESEVED. */
  1207. uint32_t bdt_stall : 1; /*!< Stall. */
  1208. uint32_t dts : 1; /*!< Data shift sync. */
  1209. uint32_t ninc : 1; /*!< DMA addr cannot increasing. */
  1210. uint32_t keep : 1; /*!< Keep BD held by USB. */
  1211. uint32_t data : 1; /*!< DATA0 or DATA1. */
  1212. uint32_t own : 1; /*!< Owner, 0 is CPU, 1 is USB. */
  1213. uint32_t reserved1 : 8; /*!< RESEVED. */
  1214. uint32_t bc : 10; /*!< Packet size. */
  1215. uint32_t reserved2 : 6; /*!< RESEVED. */
  1216. };
  1217. struct
  1218. {
  1219. uint32_t reserved3 : 2; /*!< RESEVED. */
  1220. uint32_t tok_pid : 4; /*!< Token pid. */
  1221. uint32_t reserved4 : 26; /*!< RESEVED. */
  1222. };
  1223. };
  1224. uint32_t addr; /*!< Buffer addr. */
  1225. } kinetis_bd_t;
  1226. /*!
  1227. * @brief This type of structure instance is used to implement the buffer descriptor table for USB.
  1228. */
  1229. typedef union {
  1230. kinetis_bd_t table[16][2][2]; /*!< [EndPoint] [Direction] [Odd_Even]. */
  1231. uint8_t buffer[512]; /*!< buffer. */
  1232. } kinetis_bd_table_t;
  1233. /**
  1234. * @brief USBFS TokenPid type.
  1235. */
  1236. typedef enum {
  1237. USB_TOKEN_PID_OUT = 0x1u, /*!< USB Token Pid: OUT. */
  1238. USB_TOKEN_PID_IN = 0x9u, /*!< USB Token Pid: IN. */
  1239. USB_TOKEN_PID_SETUP = 0xDu, /*!< USB Token Pid: SETUP. */
  1240. USB_TOKEN_PID_DATA0 = 0x03, /*!< USB Token Pid: DATA0. */
  1241. USB_TOKEN_PID_DATA1 = 0x0B, /*!< USB Token Pid: DATA1. */
  1242. USB_TOKEN_PID_ACK = 0x02, /*!< USB Token Pid: ACK. */
  1243. USB_TOKEN_PID_STALL = 0x0E, /*!< USB Token Pid: STALL. */
  1244. USB_TOKEN_PID_NAK = 0x0A, /*!< USB Token Pid: NAK. */
  1245. USB_TOKEN_PID_BUSTIMEOUT = 0x00, /*!< USB Token Pid: BUSTO. */
  1246. USB_TOKEN_PID_ERR = 0x0f, /*!< USB Token Pid: ERR. */
  1247. } USB_TOKEN_PID_Type;
  1248. typedef struct {
  1249. KINETIS_TypeDef base;
  1250. __IO uint8_t USBCTRL; /**< USB Control, offset: 0x100 */
  1251. uint8_t RESERVED_22[3];
  1252. __I uint8_t OBSERVE; /**< USB OTG Observe, offset: 0x104 */
  1253. uint8_t RESERVED_23[3];
  1254. __IO uint8_t CONTROL; /**< USB OTG Control, offset: 0x108 */
  1255. uint8_t RESERVED_24[3];
  1256. __IO uint8_t USBTRC0; /**< USB Transceiver Control 0, offset: 0x10C */
  1257. uint8_t RESERVED_25[7];
  1258. __IO uint8_t USBFRMADJUST; /**< Frame Adjust, offset: 0x114 */
  1259. uint8_t RESERVED_26[15];
  1260. __IO uint8_t KEEP_ALIVE_CTRL; /**< Keep Alive Mode Control, offset: 0x124 */
  1261. uint8_t RESERVED_27[3];
  1262. __IO uint8_t KEEP_ALIVE_WKCTRL; /**< Keep Alive Mode Wakeup Control, offset: 0x128 */
  1263. uint8_t RESERVED_28[3];
  1264. __IO uint8_t MISCCTRL; /**< Miscellaneous Control, offset: 0x12C */
  1265. uint8_t RESERVED_29[3];
  1266. __IO uint8_t STALL_IL_DIS; /**< Peripheral Mode Stall Disable for Endpoints 7 to 0 in IN Direction, offset: 0x130 */
  1267. uint8_t RESERVED_30[3];
  1268. __IO uint8_t STALL_IH_DIS; /**< Peripheral Mode Stall Disable for Endpoints 15 to 8 in IN Direction, offset: 0x134 */
  1269. uint8_t RESERVED_31[3];
  1270. __IO uint8_t STALL_OL_DIS; /**< Peripheral Mode Stall Disable for Endpoints 7 to 0 in OUT Direction, offset: 0x138 */
  1271. uint8_t RESERVED_32[3];
  1272. __IO uint8_t STALL_OH_DIS; /**< Peripheral Mode Stall Disable for Endpoints 15 to 8 in OUT Direction, offset: 0x13C */
  1273. uint8_t RESERVED_33[3];
  1274. __IO uint8_t CLK_RECOVER_CTRL; /**< USB Clock Recovery Control, offset: 0x140 */
  1275. uint8_t RESERVED_34[3];
  1276. __IO uint8_t CLK_RECOVER_IRC_EN; /**< FIRC Oscillator Enable, offset: 0x144 */
  1277. uint8_t RESERVED_35[15];
  1278. __IO uint8_t CLK_RECOVER_INT_EN; /**< Clock Recovery Combined Interrupt Enable, offset: 0x154 */
  1279. uint8_t RESERVED_36[7];
  1280. __IO uint8_t CLK_RECOVER_INT_STATUS; /**< Clock Recovery Separated Interrupt Status, offset: 0x15C */
  1281. } KINETIS_MCX_TypeDef;
  1282. void usb_dc_low_level_init(uint8_t busid);
  1283. void usb_dc_low_level_deinit(uint8_t busid);
  1284. void usbd_kinetis_delay_ms(uint8_t ms);
  1285. #endif