hsusbh_reg.h 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653
  1. /**************************************************************************//**
  2. * @file hsusbh_reg.h
  3. * @version V1.00
  4. * @brief HSUSBH register definition header file
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. * @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved.
  8. *****************************************************************************/
  9. #ifndef __HSUSBH_REG_H__
  10. #define __HSUSBH_REG_H__
  11. #if defined ( __CC_ARM )
  12. #pragma anon_unions
  13. #endif
  14. /**
  15. @addtogroup REGISTER Control Register
  16. @{
  17. */
  18. /**
  19. @addtogroup HSUSBH High Speed USB Host Controller (HSUSBH)
  20. Memory Mapped Structure for HSUSBH Controller
  21. @{ */
  22. typedef struct
  23. {
  24. /**
  25. * @var HSUSBH_T::EHCVNR
  26. * Offset: 0x00 EHCI Version Number Register
  27. * ---------------------------------------------------------------------------------------------------
  28. * |Bits |Field |Descriptions
  29. * | :----: | :----: | :---- |
  30. * |[7:0] |CRLEN |Capability Registers Length
  31. * | | |This register is used as an offset to add to register base to find the beginning of the Operational Register Space.
  32. * |[31:16] |VERSION |Host Controller Interface Version Number
  33. * | | |This is a two-byte register containing a BCD encoding of the EHCI revision number supported by this host controller
  34. * | | |The most significant byte of this register represents a major revision and the least significant byte is the minor revision.
  35. * @var HSUSBH_T::EHCSPR
  36. * Offset: 0x04 EHCI Structural Parameters Register
  37. * ---------------------------------------------------------------------------------------------------
  38. * |Bits |Field |Descriptions
  39. * | :----: | :----: | :---- |
  40. * |[3:0] |N_PORTS |Number of Physical Downstream Ports
  41. * | | |This field specifies the number of physical downstream ports implemented on this host controller
  42. * | | |The value of this field determines how many port registers are addressable in the Operational Register Space (see Table 2-8)
  43. * | | |Valid values are in the range of 1H to FH.
  44. * | | |A zero in this field is undefined.
  45. * |[4] |PPC |Port Power Control
  46. * | | |This field indicates whether the host controller implementation includes port power control
  47. * | | |A one in this bit indicates the ports have port power switches
  48. * | | |A zero in this bit indicates the port do not have port power stitches
  49. * | | |The value of this field affects the functionality of the Port Power field in each port status and control register.
  50. * |[11:8] |N_PCC |Number of Ports Per Companion Controller
  51. * | | |This field indicates the number of ports supported per companion host controller
  52. * | | |It is used to indicate the port routing configuration to system software.
  53. * | | |For example, if N_PORTS has a value of 6 and N_CC has a value of 2 then N_PCC could have a value of 3
  54. * | | |The convention is that the first N_PCC ports are assumed to be routed to companion controller 1, the next N_PCC ports to companion controller 2, etc
  55. * | | |In the previous example, the N_PCC could have been 4, where the first 4 are routed to companion controller 1 and the last two are routed to companion controller 2.
  56. * | | |The number in this field must be consistent with N_PORTS and N_CC.
  57. * |[15:12] |N_CC |Number of Companion Controller
  58. * | | |This field indicates the number of companion controllers associated with this USB 2.0 host controller.
  59. * | | |A zero in this field indicates there are no companion host controllers
  60. * | | |Port-ownership hand-off is not supported
  61. * | | |Only high-speed devices are supported on the host controller root ports.
  62. * | | |A value larger than zero in this field indicates there are companion USB 1.1 host controller(s)
  63. * | | |Port-ownership hand-offs are supported
  64. * | | |High, Full- and Low-speed devices are supported on the host controller root ports.
  65. * @var HSUSBH_T::EHCCPR
  66. * Offset: 0x08 EHCI Capability Parameters Register
  67. * ---------------------------------------------------------------------------------------------------
  68. * |Bits |Field |Descriptions
  69. * | :----: | :----: | :---- |
  70. * |[0] |AC64 |64-bit Addressing Capability
  71. * | | |0 = Data structure using 32-bit address memory pointers.
  72. * |[1] |PFLF |Programmable Frame List Flag
  73. * | | |0 = System software must use a frame list length of 1024 elements with this EHCI host controller.
  74. * |[2] |ASPC |Asynchronous Schedule Park Capability
  75. * | | |0 = This EHCI host controller doesn't support park feature of high-speed queue heads in the Asynchronous Schedule.
  76. * |[7:4] |IST |Isochronous Scheduling Threshold
  77. * | | |This field indicates, relative to the current position of the executing host controller, where software can reliably update the isochronous schedule.
  78. * | | |When bit [7] is zero, the value of the least significant 3 bits indicates the number of micro-frames a host controller can hold a set of isochronous data structures (one or more) before flushing the state.
  79. * |[15:8] |EECP |EHCI Extended Capabilities Pointer (EECP)
  80. * | | |0 = No extended capabilities are implemented.
  81. * @var HSUSBH_T::UCMDR
  82. * Offset: 0x20 USB Command Register
  83. * ---------------------------------------------------------------------------------------------------
  84. * |Bits |Field |Descriptions
  85. * | :----: | :----: | :---- |
  86. * |[0] |RUN |Run/Stop (R/W)
  87. * | | |When set to a 1, the Host Controller proceeds with execution of the schedule
  88. * | | |The Host Controller continues execution as long as this bit is set to a 1
  89. * | | |When this bit is set to 0, the Host Controller completes the current and any actively pipelined transactions on the USB and then halts
  90. * | | |The Host Controller must halt within 16 micro-frames after software clears the Run bit
  91. * | | |The HC Halted bit in the status register indicates when the Host Controller has finished its pending pipelined transactions and has entered the stopped state
  92. * | | |Software must not write a one to this field unless the host controller is in the Halted state (i.e.
  93. * | | |HCHalted in the USBSTS register is a one)
  94. * | | |Doing so will yield undefined results.
  95. * | | |0 = Stop.
  96. * | | |1 = Run.
  97. * |[1] |HCRST |Host Controller Reset (HCRESET) (R/W)
  98. * | | |This control bit is used by software to reset the host controller
  99. * | | |The effects of this on Root Hub registers are similar to a Chip Hardware Reset.
  100. * | | |When software writes a one to this bit, the Host Controller resets its internal pipelines, timers, counters, state machines, etc
  101. * | | |to their initial value
  102. * | | |Any transaction currently in progress on USB is immediately terminated
  103. * | | |A USB reset is not driven on downstream ports.
  104. * | | |All operational registers, including port registers and port state machines are set to their initial values
  105. * | | |Port ownership reverts to the companion host controller(s), with the side effects
  106. * | | |Software must reinitialize the host controller in order to return the host controller to an operational state.
  107. * | | |This bit is set to zero by the Host Controller when the reset process is complete
  108. * | | |Software cannot terminate the reset process early by writing a zero to this register.
  109. * | | |Software should not set this bit to a one when the HCHalted bit in the USBSTS register is a zero
  110. * | | |Attempting to reset an actively running host controller will result in undefined behavior.
  111. * |[3:2] |FLSZ |Frame List Size (R/W or RO)
  112. * | | |This field is R/W only if Programmable Frame List Flag in the HCCPARAMS registers is set to a one
  113. * | | |This field specifies the size of the frame list
  114. * | | |The size the frame list controls which bits in the Frame Index Register should be used for the Frame List Current index
  115. * | | |Values mean:
  116. * | | |00 = 1024 elements (4096 bytes) Default value.
  117. * | | |01 = 512 elements (2048 bytes).
  118. * | | |10 = 256 elements (1024 bytes) u2013 for resource-constrained environment.
  119. * | | |11 = Reserved.
  120. * |[4] |PSEN |Periodic Schedule Enable (R/W)
  121. * | | |This bit controls whether the host controller skips processing the Periodic Schedule. Values mean:
  122. * | | |0 = Do not process the Periodic Schedule.
  123. * | | |1 = Use the PERIODICLISTBASE register to access the Periodic Schedule.
  124. * |[5] |ASEN |Asynchronous Schedule Enable (R/W)
  125. * | | |This bit controls whether the host controller skips processing the Asynchronous Schedule. Values mean:
  126. * | | |0 = Do not process the Asynchronous Schedule.
  127. * | | |1 = Use the ASYNCLISTADDR register to access the Asynchronous Schedule.
  128. * |[6] |IAAD |Interrupt on Asynchronous Advance Doorbell (R/W)
  129. * | | |This bit is used as a doorbell by software to tell the host controller to issue an interrupt the next time it advances asynchronous schedule
  130. * | | |Software must write a 1 to this bit to ring the doorbell.
  131. * | | |When the host controller has evicted all appropriate cached schedule state, it sets the Interrupt on Asynchronous Advance status bit in the USBSTS register
  132. * | | |If the Interrupt on Asynchronous Advance Enable bit in the USBINTR register is a one then the host controller will assert an interrupt at the next interrupt threshold.
  133. * | | |The host controller sets this bit to a zero after it has set the Interrupt on Asynchronous Advance status bit in the USBSTS register to a one.
  134. * | | |Software should not write a one to this bit when the asynchronous schedule is disabled
  135. * | | |Doing so will yield undefined results.
  136. * |[23:16] |ITC |Interrupt Threshold Control (R/W)
  137. * | | |This field is used by system software to select the maximum rate at which the host controller will issue interrupts
  138. * | | |The only valid values are defined below
  139. * | | |If software writes an invalid value to this register, the results are undefined
  140. * | | |Value Maximum Interrupt Interval
  141. * | | |0x00 = Reserved.
  142. * | | |0x01 = 1 micro-frame.
  143. * | | |0x02 = 2 micro-frames.
  144. * | | |0x04 = 4 micro-frames.
  145. * | | |0x08 = 8 micro-frames (default, equates to 1 ms).
  146. * | | |0x10 = 16 micro-frames (2 ms).
  147. * | | |0x20 = 32 micro-frames (4 ms).
  148. * | | |0x40 = 64 micro-frames (8 ms).
  149. * | | |Any other value in this register yields undefined results.
  150. * | | |Software modifications to this bit while HCHalted bit is equal to zero results in undefined behavior.
  151. * @var HSUSBH_T::USTSR
  152. * Offset: 0x24 USB Status Register
  153. * ---------------------------------------------------------------------------------------------------
  154. * |Bits |Field |Descriptions
  155. * | :----: | :----: | :---- |
  156. * |[0] |USBINT |USB Interrupt (USBINT) (R/WC)
  157. * | | |The Host Controller sets this bit to 1 on the completion of a USB transaction, which results in the retirement of a Transfer Descriptor that had its IOC bit set.
  158. * | | |The Host Controller also sets this bit to 1 when a short packet is detected (actual number of bytes received was less than the expected number of bytes).
  159. * |[1] |UERRINT |USB Error Interrupt (USBERRINT) (R/WC)
  160. * | | |The Host Controller sets this bit to 1 when completion of a USB transaction results in an error condition (e.g., error counter underflow)
  161. * | | |If the TD on which the error interrupt occurred also had its IOC bit set, both this bit and USBINT bit are set.
  162. * |[2] |PCD |Port Change Detect (R/WC)
  163. * | | |The Host Controller sets this bit to a one when any port for which the Port Owner bit is set to zero has a change bit transition from a zero to a one or a Force Port Resume bit transition from a zero to a one as a result of a J-K transition detected on a suspended port
  164. * | | |This bit will also be set as a result of the Connect Status Change being set to a one after system software has relinquished ownership of a connected port by writing a one to a port's Port Owner bit.
  165. * | | |This bit is allowed to be maintained in the Auxiliary power well
  166. * | | |Alternatively, it is also acceptable that on a D3 to D0 transition of the EHCI HC device, this bit is loaded with the OR of all of the PORTSC change bits (including: Force port resume, over-current change, enable/disable change and connect status change).
  167. * |[3] |FLR |Frame List Rollover (R/WC)
  168. * | | |The Host Controller sets this bit to a one when the Frame List Index rolls over from its maximum value to zero
  169. * | | |The exact value at which the rollover occurs depends on the frame list size
  170. * | | |For example, if the frame list size (as programmed in the Frame List Size field of the USBCMD register) is 1024, the Frame Index Register rolls over every time FRINDEX[13] toggles
  171. * | | |Similarly, if the size is 512, the Host Controller sets this bit to a one every time FRINDEX[12] toggles.
  172. * |[4] |HSERR |Host System Error (R/WC)
  173. * | | |The Host Controller sets this bit to 1 when a serious error occurs during a host system access involving the Host Controller module.
  174. * |[5] |IAA |Interrupt on Asynchronous Advance (R/WC)
  175. * | | |System software can force the host controller to issue an interrupt the next time the host controller advances the asynchronous schedule by writing a one to the Interrupt on Asynchronous Advance Doorbell bit in the USBCMD register
  176. * | | |This status bit indicates the assertion of that interrupt source.
  177. * |[12] |HCHalted |HCHalted (RO)
  178. * | | |This bit is a zero whenever the Run/Stop bit is a one
  179. * | | |The Host Controller sets this bit to one after it has stopped executing as a result of the Run/Stop bit being set to 0, either by software or by the Host Controller hardware (e.g.
  180. * | | |internal error).
  181. * |[13] |RECLA |Reclamation (RO)
  182. * | | |This is a read-only status bit, which is used to detect an empty asynchronous schedule.
  183. * |[14] |PSS |Periodic Schedule Status (RO)
  184. * | | |The bit reports the current real status of the Periodic Schedule
  185. * | | |If this bit is a zero then the status of the Periodic Schedule is disabled
  186. * | | |If this bit is a one then the status of the Periodic Schedule is enabled
  187. * | | |The Host Controller is not required to immediately disable or enable the Periodic Schedule when software transitions the Periodic Schedule Enable bit in the USBCMD register
  188. * | | |When this bit and the Periodic Schedule Enable bit are the same value, the Periodic Schedule is either enabled (1) or disabled (0).
  189. * |[15] |ASS |Asynchronous Schedule Status (RO)
  190. * | | |The bit reports the current real status of the Asynchronous Schedule
  191. * | | |If this bit is a zero then the status of them Asynchronous Schedule is disabled
  192. * | | |If this bit is a one then the status of the Asynchronous Schedule is enabled
  193. * | | |The Host Controller is not required to immediately disable or enable the Asynchronous Schedule when software transitions the Asynchronous Schedule Enable bit in the USBCMD register
  194. * | | |When this bit and the Asynchronous Schedule Enable bit are the same value, the Asynchronous Schedule is either enabled (1) or disabled (0).
  195. * @var HSUSBH_T::UIENR
  196. * Offset: 0x28 USB Interrupt Enable Register
  197. * ---------------------------------------------------------------------------------------------------
  198. * |Bits |Field |Descriptions
  199. * | :----: | :----: | :---- |
  200. * |[0] |USBIEN |USB Interrupt Enable or Disable Bit
  201. * | | |When this bit is a one, and the USBINT bit in the USBSTS register is a one, the host controller will issue an interrupt at the next interrupt threshold
  202. * | | |The interrupt is acknowledged by software clearing the USBINT bit.
  203. * | | |0 = USB interrupt Disabled.
  204. * | | |1 = USB interrupt Enabled.
  205. * |[1] |UERRIEN |USB Error Interrupt Enable or Disable Bit
  206. * | | |When this bit is a one, and the USBERRINT bit in the USBSTS register is a one, the host t controller will issue an interrupt at the next interrupt threshold
  207. * | | |The interrupt is acknowledged by software clearing the USBERRINT bit.
  208. * | | |0 = USB Error interrupt Disabled.
  209. * | | |1 = USB Error interrupt Enabled.
  210. * |[2] |PCIEN |Port Change Interrupt Enable or Disable Bit
  211. * | | |When this bit is a one, and the Port Change Detect bit in the USBSTS register is a one, the host controller will issue an interrupt
  212. * | | |The interrupt is acknowledged by software clearing the Port Change Detect bit.
  213. * | | |0 = Port Change interrupt Disabled.
  214. * | | |1 = Port Change interrupt Enabled.
  215. * |[3] |FLREN |Frame List Rollover Enable or Disable Bit
  216. * | | |When this bit is a one, and the Frame List Rollover bit in the USBSTS register is a one, the host controller will issue an interrupt
  217. * | | |The interrupt is acknowledged by software clearing the Frame List Rollover bit.
  218. * | | |0 = Frame List Rollover interrupt Disabled.
  219. * | | |1 = Frame List Rollover interrupt Enabled.
  220. * |[4] |HSERREN |Host System Error Enable or Disable Bit
  221. * | | |When this bit is a one, and the Host System Error Status bit in the USBSTS register is a one, the host controller will issue an interrupt
  222. * | | |The interrupt is acknowledged by software clearing the Host System Error bit.
  223. * | | |0 = Host System Error interrupt Disabled.
  224. * | | |1 = Host System Error interrupt Enabled.
  225. * |[5] |IAAEN |Interrupt on Asynchronous Advance Enable or Disable Bit
  226. * | | |When this bit is a one, and the Interrupt on Asynchronous Advance bit in the USBSTS register is a one, the host controller will issue an interrupt at the next interrupt threshold
  227. * | | |The interrupt is acknowledged by software clearing the Interrupt on Asynchronous Advance bit.
  228. * | | |0 = Interrupt on Asynchronous Advance Disabled.
  229. * | | |1 = Interrupt on Asynchronous Advance Enabled.
  230. * @var HSUSBH_T::UFINDR
  231. * Offset: 0x2C USB Frame Index Register
  232. * ---------------------------------------------------------------------------------------------------
  233. * |Bits |Field |Descriptions
  234. * | :----: | :----: | :---- |
  235. * |[13:0] |FI |Frame Index
  236. * | | |The value in this register increment at the end of each time frame (e.g.
  237. * | | |micro-frame)
  238. * | | |Bits [N:3] are used for the Frame List current index
  239. * | | |This means that each location of the frame list is accessed 8 times (frames or micro-frames) before moving to the next index
  240. * | | |The following illustrates values of N based on the value of the Frame List Size field in the USBCMD register.
  241. * | | |FLSZ (UCMDR[3:2] Number Elements N
  242. * | | |0x0 1024 12
  243. * | | |0x1 512 11
  244. * | | |0x2 256 10
  245. * | | |0x3 Reserved
  246. * @var HSUSBH_T::UPFLBAR
  247. * Offset: 0x34 USB Periodic Frame List Base Address Register
  248. * ---------------------------------------------------------------------------------------------------
  249. * |Bits |Field |Descriptions
  250. * | :----: | :----: | :---- |
  251. * |[31:12] |BADDR |Base Address
  252. * | | |These bits correspond to memory address signals [31:12], respectively.
  253. * @var HSUSBH_T::UCALAR
  254. * Offset: 0x38 USB Current Asynchronous List Address Register
  255. * ---------------------------------------------------------------------------------------------------
  256. * |Bits |Field |Descriptions
  257. * | :----: | :----: | :---- |
  258. * |[31:5] |LPL |Link Pointer Low (LPL)
  259. * | | |These bits correspond to memory address signals [31:5], respectively
  260. * | | |This field may only reference a Queue Head (QH).
  261. * @var HSUSBH_T::UASSTR
  262. * Offset: 0x3C USB Asynchronous Schedule Sleep Timer Register
  263. * ---------------------------------------------------------------------------------------------------
  264. * |Bits |Field |Descriptions
  265. * | :----: | :----: | :---- |
  266. * |[11:0] |ASSTMR |Asynchronous Schedule Sleep Timer
  267. * | | |This field defines the AsyncSchedSleepTime of EHCI spec.
  268. * | | |The asynchronous schedule sleep timer is used to control how often the host controller fetches asynchronous schedule list from system memory while the asynchronous schedule is empty.
  269. * | | |The default value of this timer is 12'hBD6
  270. * | | |Because this timer is implemented in UTMI clock (30MHz) domain, the default sleeping time will be about 100us.
  271. * @var HSUSBH_T::UCFGR
  272. * Offset: 0x60 USB Configure Flag Register
  273. * ---------------------------------------------------------------------------------------------------
  274. * |Bits |Field |Descriptions
  275. * | :----: | :----: | :---- |
  276. * |[0] |CF |Configure Flag (CF)
  277. * | | |Host software sets this bit as the last action in its process of configuring the Host Controller
  278. * | | |This bit controls the default port-routing control logic
  279. * | | |Bit values and side-effects are listed below.
  280. * | | |0 = Port routing control logic default-routes each port to an implementation dependent classic host controller.
  281. * | | |1 = Port routing control logic default-routes all ports to this host controller.
  282. * @var HSUSBH_T::UPSCR[2]
  283. * Offset: 0x64~0x68 USB Port 0~1 Status and Control Register
  284. * ---------------------------------------------------------------------------------------------------
  285. * |Bits |Field |Descriptions
  286. * | :----: | :----: | :---- |
  287. * |[0] |CCS |Current Connect Status (RO)
  288. * | | |This value reflects the current state of the port, and may not correspond directly to the event that caused the Connect Status Change bit (Bit 1) to be set.
  289. * | | |This field is zero if Port Power is zero.
  290. * | | |0 = No device is present.
  291. * | | |1 = Device is present on port.
  292. * |[1] |CSC |Connect Status Change (R/W)
  293. * | | |Indicates a change has occurred in the port's Current Connect Status
  294. * | | |The host controller sets this bit for all changes to the port device connect status, even if system software has not cleared an existing connect status change
  295. * | | |For example, the insertion status changes twice before system software has cleared the changed condition, hub hardware will be "setting" an already-set bit (i.e., the bit will remain set).Software sets this bit to 0 by writing a 1 to it.
  296. * | | |This field is zero if Port Power is zero.
  297. * | | |0 = No change.
  298. * | | |1 = Change in Current Connect Status.
  299. * |[2] |PE |Port Enabled/Disabled (R/W)
  300. * | | |Ports can only be enabled by the host controller as a part of the reset and enable
  301. * | | |Software cannot enable a port by writing a one to this field
  302. * | | |The host controller will only set this bit to a one when the reset sequence determines that the attached device is a high-speed device.
  303. * | | |Ports can be disabled by either a fault condition (disconnect event or other fault condition) or by host software
  304. * | | |Note that the bit status does not change until the port state actually changes
  305. * | | |There may be a delay in disabling or enabling a port due to other host controller and bus events.
  306. * | | |When the port is disabled (0b) downstream propagation of data is blocked on this port, except for reset.
  307. * | | |This field is zero if Port Power is zero.
  308. * | | |0 = Port Disabled.
  309. * | | |1 = Port Enabled.
  310. * |[3] |PEC |Port Enable/Disable Change (R/WC)
  311. * | | |For the root hub, this bit gets set to a one only when a port is disabled due to the appropriate conditions existing at the EOF2 point (See Chapter 11 of the USB Specification for the definition of a Port Error)
  312. * | | |Software clears this bit by writing a 1 to it.
  313. * | | |This field is zero if Port Power is zero.
  314. * | | |0 = No change.
  315. * | | |1 = Port enabled/disabled status has changed.
  316. * |[4] |OCA |Over-current Active (RO)
  317. * | | |This bit will automatically transition from a one to a zero when the over current condition is removed.
  318. * | | |0 = This port does not have an over-current condition.
  319. * | | |1 = This port currently has an over-current condition.
  320. * |[5] |OCC |Over-current Change (R/WC)
  321. * | | |1 = This bit gets set to a one when there is a change to Over-current Active
  322. * | | |Software clears this bit by writing a one to this bit position.
  323. * |[6] |FPR |Force Port Resume (R/W)
  324. * | | |This functionality defined for manipulating this bit depends on the value of the Suspend bit
  325. * | | |For example, if the port is not suspended (Suspend and Enabled bits are a one) and software transitions this bit to a one, then the effects on the bus are undefined.
  326. * | | |Software sets this bit to a 1 to drive resume signaling
  327. * | | |The Host Controller sets this bit to a 1 if a J-to-K transition is detected while the port is in the Suspend state
  328. * | | |When this bit transitions to a one because a J-to-K transition is detected, the Port Change Detect bit in the USBSTS register is also set to a one
  329. * | | |If software sets this bit to a one, the host controller must not set the Port Change Detect bit.
  330. * | | |Note that when the EHCI controller owns the port, the resume sequence follows the defined sequence documented in the USB Specification Revision 2.0
  331. * | | |The resume signaling (Full-speed 'K') is driven on the port as long as this bit remains a one
  332. * | | |Software must appropriately time the Resume and set this bit to a zero when the appropriate amount of time has elapsed
  333. * | | |Writing a zero (from one) causes the port to return to high-speed mode (forcing the bus below the port into a high-speed idle)
  334. * | | |This bit will remain a one until the port has switched to the high-speed idle
  335. * | | |The host controller must complete this transition within 2 milliseconds of software setting this bit to a zero.
  336. * | | |This field is zero if Port Power is zero.
  337. * | | |0 = No resume (K-state) detected/driven on port.
  338. * | | |1 = Resume detected/driven on port.
  339. * |[7] |SUSPEND |Suspend (R/W)
  340. * | | |Port Enabled Bit and Suspend bit of this register define the port states as follows:
  341. * | | |Port enable is 0 and suspend is 0 = Disable.
  342. * | | |Port enable is 0 and suspend is 1 = Disable.
  343. * | | |Port enable is 1 and suspend is 0 = Enable.
  344. * | | |Port enable is 1 and suspend is 1 = Suspend.
  345. * | | |When in suspend state, downstream propagation of data is blocked on this port, except for port reset
  346. * | | |The blocking occurs at the end of the current transaction, if a transaction was in progress when this bit was written to 1
  347. * | | |In the suspend state, the port is sensitive to resume detection
  348. * | | |Note that the bit status does not change until the port is suspended and that there may be a delay in suspending a port if there is a transaction currently in progress on the USB.
  349. * | | |A write of zero to this bit is ignored by the host controller
  350. * | | |The host controller will unconditionally set this bit to a zero when:
  351. * | | |Software sets the Force Port Resume bit to a zero (from a one).
  352. * | | |Software sets the Port Reset bit to a one (from a zero).
  353. * | | |If host software sets this bit to a one when the port is not enabled (i.e.
  354. * | | |Port enabled bit is a zero) the results are undefined.
  355. * | | |This field is zero if Port Power is zero.
  356. * | | |0 = Port not in suspend state.
  357. * | | |1 = Port in suspend state.
  358. * |[8] |PRST |Port Reset (R/W)
  359. * | | |When software writes a one to this bit (from a zero), the bus reset sequence as defined in the USB Specification Revision 2.0 is started
  360. * | | |Software writes a zero to this bit to terminate the bus reset sequence
  361. * | | |Software must keep this bit at a one long enough to ensure the reset sequence, as specified in the USB Specification Revision 2.0, completes
  362. * | | |Note: when software writes this bit to a one, it must also write a zero to the Port Enable bit.
  363. * | | |Note that when software writes a zero to this bit there may be a delay before the bit status changes to a zero
  364. * | | |The bit status will not read as a zero until after the reset has completed
  365. * | | |If the port is in high-speed mode after reset is complete, the host controller will automatically enable this port (e.g.
  366. * | | |set the Port Enable bit to a one)
  367. * | | |A host controller must terminate the reset and stabilize the state of the port within 2 milliseconds of software transitioning this bit from a one to a zero
  368. * | | |For example: if the port detects that the attached device is high-speed during reset, then the host controller must have the port in the enabled state within 2ms of software writing this bit to a zero.
  369. * | | |The HCHalted bit in the USBSTS register should be a zero before software attempts to use this bit
  370. * | | |The host controller may hold Port Reset asserted to a one when the HCHalted bit is a one.
  371. * | | |This field is zero if Port Power is zero.
  372. * | | |0 = Port is not in Reset.
  373. * | | |1 = Port is in Reset.
  374. * |[11:10] |LSTS |Line Status (RO)
  375. * | | |These bits reflect the current logical levels of the D+ (bit 11) and D- (bit 10) signal lines
  376. * | | |These bits are used for detection of low-speed USB devices prior to the port reset and enable sequence
  377. * | | |This field is valid only when the port enable bit is zero and the current connect status bit is set to a one.
  378. * | | |The encoding of the bits are:
  379. * | | |Bits[11:10] USB State Interpretation
  380. * | | |00 = SE0 Not Low-speed device, perform EHCI reset.
  381. * | | |01 = K-state Low-speed device, release ownership of port.
  382. * | | |10 = J-state Not Low-speed device, perform EHCI reset.
  383. * | | |11 = Undefined Not Low-speed device, perform EHCI reset.
  384. * | | |This value of this field is undefined if Port Power is zero.
  385. * |[12] |PP |Port Power (PP)
  386. * | | |Host controller has port power control switches
  387. * | | |This bit represents the Current setting of the switch (0 = off, 1 = on)
  388. * | | |When power is not available on a port (i.e.
  389. * | | |PP equals a 0), the port is nonfunctional and will not report attaches, detaches, etc.
  390. * | | |When an over-current condition is detected on a powered port and PPC is a one, the PP bit in each affected port may be transitioned by the host controller from a 1 to 0 (removing power from the port).
  391. * |[13] |PO |Port Owner (R/W)
  392. * | | |This bit unconditionally goes to a 0b when the Configured bit in the CONFIGFLAG register makes a 0 to 1 transition
  393. * | | |This bit unconditionally goes to 1 whenever the Configured bit is zero.
  394. * | | |System software uses this field to release ownership of the port to a selected host controller (in the event that the attached device is not a high-speed device)
  395. * | | |Software writes a one to this bit when the attached device is not a high-speed device
  396. * | | |A one in this bit means that a companion host controller owns and controls the port.
  397. * |[19:16] |PTC |Port Test Control (R/W)
  398. * | | |When this field is zero, the port is NOT operating in a test mode
  399. * | | |A non-zero value indicates that it is operating in test mode and the specific test mode is indicated by the specific value
  400. * | | |The encoding of the test mode bits are (0x6 ~ 0xF are reserved):
  401. * | | |Bits Test Mode
  402. * | | |0x0 = Test mode not enabled.
  403. * | | |0x1 = Test J_STATE.
  404. * | | |0x2 = Test K_STATE.
  405. * | | |0x3 = Test SE0_NAK.
  406. * | | |0x4 = Test Packet.
  407. * | | |0x5 = Test FORCE_ENABLE.
  408. * @var HSUSBH_T::USBPCR0
  409. * Offset: 0xC4 USB PHY 0 Control Register
  410. * ---------------------------------------------------------------------------------------------------
  411. * |Bits |Field |Descriptions
  412. * | :----: | :----: | :---- |
  413. * |[8] |SUSPEND |Suspend Assertion
  414. * | | |This bit controls the suspend mode of USB PHY 0.
  415. * | | |While PHY was suspended, all circuits of PHY were powered down and outputs are tri-state.
  416. * | | |This bit is 1'b0 in default
  417. * | | |This means the USB PHY 0 is suspended in default
  418. * | | |It is necessary to set this bit 1'b1 to make USB PHY 0 leave suspend mode before doing configuration of USB host.
  419. * | | |0 = USB PHY 0 was suspended.
  420. * | | |1 = USB PHY 0 was not suspended.
  421. * |[11] |CLKVALID |UTMI Clock Valid
  422. * | | |This bit is a flag to indicate if the UTMI clock from USB 2.0 PHY is ready
  423. * | | |S/W program must prevent to write other control registers before this UTMI clock valid flag is active.
  424. * | | |0 = UTMI clock is not valid.
  425. * | | |1 = UTMI clock is valid.
  426. * @var HSUSBH_T::USBPCR1
  427. * Offset: 0xC8 USB PHY 1 Control Register
  428. * ---------------------------------------------------------------------------------------------------
  429. * |Bits |Field |Descriptions
  430. * | :----: | :----: | :---- |
  431. * |[8] |SUSPEND |Suspend Assertion
  432. * | | |This bit controls the suspend mode of USB PHY 1.
  433. * | | |While PHY was suspended, all circuits of PHY were powered down and outputs are tri-state.
  434. * | | |This bit is 1'b0 in default
  435. * | | |This means the USB PHY 0 is suspended in default
  436. * | | |It is necessary to set this bit 1'b1 to make USB PHY 0 leave suspend mode before doing configuration of USB host.
  437. * | | |0 = USB PHY 1 was suspended.
  438. * | | |1 = USB PHY 1 was not suspended.
  439. */
  440. __I uint32_t EHCVNR; /*!< [0x0000] EHCI Version Number Register */
  441. __I uint32_t EHCSPR; /*!< [0x0004] EHCI Structural Parameters Register */
  442. __I uint32_t EHCCPR; /*!< [0x0008] EHCI Capability Parameters Register */
  443. /// @cond HIDDEN_SYMBOLS
  444. __I uint32_t RESERVE0[5];
  445. /// @endcond //HIDDEN_SYMBOLS
  446. __IO uint32_t UCMDR; /*!< [0x0020] USB Command Register */
  447. __IO uint32_t USTSR; /*!< [0x0024] USB Status Register */
  448. __IO uint32_t UIENR; /*!< [0x0028] USB Interrupt Enable Register */
  449. __IO uint32_t UFINDR; /*!< [0x002c] USB Frame Index Register */
  450. /// @cond HIDDEN_SYMBOLS
  451. __I uint32_t RESERVE1[1];
  452. /// @endcond //HIDDEN_SYMBOLS
  453. __IO uint32_t UPFLBAR; /*!< [0x0034] USB Periodic Frame List Base Address Register */
  454. __IO uint32_t UCALAR; /*!< [0x0038] USB Current Asynchronous List Address Register */
  455. __IO uint32_t UASSTR; /*!< [0x003c] USB Asynchronous Schedule Sleep Timer Register */
  456. /// @cond HIDDEN_SYMBOLS
  457. __I uint32_t RESERVE2[8];
  458. /// @endcond //HIDDEN_SYMBOLS
  459. __IO uint32_t UCFGR; /*!< [0x0060] USB Configure Flag Register */
  460. __IO uint32_t UPSCR[2]; /*!< [0x0064] ~ [0x0068] USB Port 0 & 1 Status and Control Register */
  461. /// @cond HIDDEN_SYMBOLS
  462. __I uint32_t RESERVE3[22];
  463. /// @endcond //HIDDEN_SYMBOLS
  464. __IO uint32_t USBPCR0; /*!< [0x00c4] USB PHY 0 Control Register */
  465. __IO uint32_t USBPCR1; /*!< [0x00c8] USB PHY 1 Control Register */
  466. } HSUSBH_T;
  467. /**
  468. @addtogroup HSUSBH_CONST HSUSBH Bit Field Definition
  469. Constant Definitions for HSUSBH Controller
  470. @{ */
  471. #define HSUSBH_EHCVNR_CRLEN_Pos (0) /*!< HSUSBH_T::EHCVNR: CRLEN Position */
  472. #define HSUSBH_EHCVNR_CRLEN_Msk (0xfful << HSUSBH_EHCVNR_CRLEN_Pos) /*!< HSUSBH_T::EHCVNR: CRLEN Mask */
  473. #define HSUSBH_EHCVNR_VERSION_Pos (16) /*!< HSUSBH_T::EHCVNR: VERSION Position */
  474. #define HSUSBH_EHCVNR_VERSION_Msk (0xfffful << HSUSBH_EHCVNR_VERSION_Pos) /*!< HSUSBH_T::EHCVNR: VERSION Mask */
  475. #define HSUSBH_EHCSPR_N_PORTS_Pos (0) /*!< HSUSBH_T::EHCSPR: N_PORTS Position */
  476. #define HSUSBH_EHCSPR_N_PORTS_Msk (0xful << HSUSBH_EHCSPR_N_PORTS_Pos) /*!< HSUSBH_T::EHCSPR: N_PORTS Mask */
  477. #define HSUSBH_EHCSPR_PPC_Pos (4) /*!< HSUSBH_T::EHCSPR: PPC Position */
  478. #define HSUSBH_EHCSPR_PPC_Msk (0x1ul << HSUSBH_EHCSPR_PPC_Pos) /*!< HSUSBH_T::EHCSPR: PPC Mask */
  479. #define HSUSBH_EHCSPR_N_PCC_Pos (8) /*!< HSUSBH_T::EHCSPR: N_PCC Position */
  480. #define HSUSBH_EHCSPR_N_PCC_Msk (0xful << HSUSBH_EHCSPR_N_PCC_Pos) /*!< HSUSBH_T::EHCSPR: N_PCC Mask */
  481. #define HSUSBH_EHCSPR_N_CC_Pos (12) /*!< HSUSBH_T::EHCSPR: N_CC Position */
  482. #define HSUSBH_EHCSPR_N_CC_Msk (0xful << HSUSBH_EHCSPR_N_CC_Pos) /*!< HSUSBH_T::EHCSPR: N_CC Mask */
  483. #define HSUSBH_EHCCPR_AC64_Pos (0) /*!< HSUSBH_T::EHCCPR: AC64 Position */
  484. #define HSUSBH_EHCCPR_AC64_Msk (0x1ul << HSUSBH_EHCCPR_AC64_Pos) /*!< HSUSBH_T::EHCCPR: AC64 Mask */
  485. #define HSUSBH_EHCCPR_PFLF_Pos (1) /*!< HSUSBH_T::EHCCPR: PFLF Position */
  486. #define HSUSBH_EHCCPR_PFLF_Msk (0x1ul << HSUSBH_EHCCPR_PFLF_Pos) /*!< HSUSBH_T::EHCCPR: PFLF Mask */
  487. #define HSUSBH_EHCCPR_ASPC_Pos (2) /*!< HSUSBH_T::EHCCPR: ASPC Position */
  488. #define HSUSBH_EHCCPR_ASPC_Msk (0x1ul << HSUSBH_EHCCPR_ASPC_Pos) /*!< HSUSBH_T::EHCCPR: ASPC Mask */
  489. #define HSUSBH_EHCCPR_IST_Pos (4) /*!< HSUSBH_T::EHCCPR: IST Position */
  490. #define HSUSBH_EHCCPR_IST_Msk (0xful << HSUSBH_EHCCPR_IST_Pos) /*!< HSUSBH_T::EHCCPR: IST Mask */
  491. #define HSUSBH_EHCCPR_EECP_Pos (8) /*!< HSUSBH_T::EHCCPR: EECP Position */
  492. #define HSUSBH_EHCCPR_EECP_Msk (0xfful << HSUSBH_EHCCPR_EECP_Pos) /*!< HSUSBH_T::EHCCPR: EECP Mask */
  493. #define HSUSBH_UCMDR_RUN_Pos (0) /*!< HSUSBH_T::UCMDR: RUN Position */
  494. #define HSUSBH_UCMDR_RUN_Msk (0x1ul << HSUSBH_UCMDR_RUN_Pos) /*!< HSUSBH_T::UCMDR: RUN Mask */
  495. #define HSUSBH_UCMDR_HCRST_Pos (1) /*!< HSUSBH_T::UCMDR: HCRST Position */
  496. #define HSUSBH_UCMDR_HCRST_Msk (0x1ul << HSUSBH_UCMDR_HCRST_Pos) /*!< HSUSBH_T::UCMDR: HCRST Mask */
  497. #define HSUSBH_UCMDR_FLSZ_Pos (2) /*!< HSUSBH_T::UCMDR: FLSZ Position */
  498. #define HSUSBH_UCMDR_FLSZ_Msk (0x3ul << HSUSBH_UCMDR_FLSZ_Pos) /*!< HSUSBH_T::UCMDR: FLSZ Mask */
  499. #define HSUSBH_UCMDR_PSEN_Pos (4) /*!< HSUSBH_T::UCMDR: PSEN Position */
  500. #define HSUSBH_UCMDR_PSEN_Msk (0x1ul << HSUSBH_UCMDR_PSEN_Pos) /*!< HSUSBH_T::UCMDR: PSEN Mask */
  501. #define HSUSBH_UCMDR_ASEN_Pos (5) /*!< HSUSBH_T::UCMDR: ASEN Position */
  502. #define HSUSBH_UCMDR_ASEN_Msk (0x1ul << HSUSBH_UCMDR_ASEN_Pos) /*!< HSUSBH_T::UCMDR: ASEN Mask */
  503. #define HSUSBH_UCMDR_IAAD_Pos (6) /*!< HSUSBH_T::UCMDR: IAAD Position */
  504. #define HSUSBH_UCMDR_IAAD_Msk (0x1ul << HSUSBH_UCMDR_IAAD_Pos) /*!< HSUSBH_T::UCMDR: IAAD Mask */
  505. #define HSUSBH_UCMDR_ITC_Pos (16) /*!< HSUSBH_T::UCMDR: ITC Position */
  506. #define HSUSBH_UCMDR_ITC_Msk (0xfful << HSUSBH_UCMDR_ITC_Pos) /*!< HSUSBH_T::UCMDR: ITC Mask */
  507. #define HSUSBH_USTSR_USBINT_Pos (0) /*!< HSUSBH_T::USTSR: USBINT Position */
  508. #define HSUSBH_USTSR_USBINT_Msk (0x1ul << HSUSBH_USTSR_USBINT_Pos) /*!< HSUSBH_T::USTSR: USBINT Mask */
  509. #define HSUSBH_USTSR_UERRINT_Pos (1) /*!< HSUSBH_T::USTSR: UERRINT Position */
  510. #define HSUSBH_USTSR_UERRINT_Msk (0x1ul << HSUSBH_USTSR_UERRINT_Pos) /*!< HSUSBH_T::USTSR: UERRINT Mask */
  511. #define HSUSBH_USTSR_PCD_Pos (2) /*!< HSUSBH_T::USTSR: PCD Position */
  512. #define HSUSBH_USTSR_PCD_Msk (0x1ul << HSUSBH_USTSR_PCD_Pos) /*!< HSUSBH_T::USTSR: PCD Mask */
  513. #define HSUSBH_USTSR_FLR_Pos (3) /*!< HSUSBH_T::USTSR: FLR Position */
  514. #define HSUSBH_USTSR_FLR_Msk (0x1ul << HSUSBH_USTSR_FLR_Pos) /*!< HSUSBH_T::USTSR: FLR Mask */
  515. #define HSUSBH_USTSR_HSERR_Pos (4) /*!< HSUSBH_T::USTSR: HSERR Position */
  516. #define HSUSBH_USTSR_HSERR_Msk (0x1ul << HSUSBH_USTSR_HSERR_Pos) /*!< HSUSBH_T::USTSR: HSERR Mask */
  517. #define HSUSBH_USTSR_IAA_Pos (5) /*!< HSUSBH_T::USTSR: IAA Position */
  518. #define HSUSBH_USTSR_IAA_Msk (0x1ul << HSUSBH_USTSR_IAA_Pos) /*!< HSUSBH_T::USTSR: IAA Mask */
  519. #define HSUSBH_USTSR_HCHalted_Pos (12) /*!< HSUSBH_T::USTSR: HCHalted Position */
  520. #define HSUSBH_USTSR_HCHalted_Msk (0x1ul << HSUSBH_USTSR_HCHalted_Pos) /*!< HSUSBH_T::USTSR: HCHalted Mask */
  521. #define HSUSBH_USTSR_RECLA_Pos (13) /*!< HSUSBH_T::USTSR: RECLA Position */
  522. #define HSUSBH_USTSR_RECLA_Msk (0x1ul << HSUSBH_USTSR_RECLA_Pos) /*!< HSUSBH_T::USTSR: RECLA Mask */
  523. #define HSUSBH_USTSR_PSS_Pos (14) /*!< HSUSBH_T::USTSR: PSS Position */
  524. #define HSUSBH_USTSR_PSS_Msk (0x1ul << HSUSBH_USTSR_PSS_Pos) /*!< HSUSBH_T::USTSR: PSS Mask */
  525. #define HSUSBH_USTSR_ASS_Pos (15) /*!< HSUSBH_T::USTSR: ASS Position */
  526. #define HSUSBH_USTSR_ASS_Msk (0x1ul << HSUSBH_USTSR_ASS_Pos) /*!< HSUSBH_T::USTSR: ASS Mask */
  527. #define HSUSBH_UIENR_USBIEN_Pos (0) /*!< HSUSBH_T::UIENR: USBIEN Position */
  528. #define HSUSBH_UIENR_USBIEN_Msk (0x1ul << HSUSBH_UIENR_USBIEN_Pos) /*!< HSUSBH_T::UIENR: USBIEN Mask */
  529. #define HSUSBH_UIENR_UERRIEN_Pos (1) /*!< HSUSBH_T::UIENR: UERRIEN Position */
  530. #define HSUSBH_UIENR_UERRIEN_Msk (0x1ul << HSUSBH_UIENR_UERRIEN_Pos) /*!< HSUSBH_T::UIENR: UERRIEN Mask */
  531. #define HSUSBH_UIENR_PCIEN_Pos (2) /*!< HSUSBH_T::UIENR: PCIEN Position */
  532. #define HSUSBH_UIENR_PCIEN_Msk (0x1ul << HSUSBH_UIENR_PCIEN_Pos) /*!< HSUSBH_T::UIENR: PCIEN Mask */
  533. #define HSUSBH_UIENR_FLREN_Pos (3) /*!< HSUSBH_T::UIENR: FLREN Position */
  534. #define HSUSBH_UIENR_FLREN_Msk (0x1ul << HSUSBH_UIENR_FLREN_Pos) /*!< HSUSBH_T::UIENR: FLREN Mask */
  535. #define HSUSBH_UIENR_HSERREN_Pos (4) /*!< HSUSBH_T::UIENR: HSERREN Position */
  536. #define HSUSBH_UIENR_HSERREN_Msk (0x1ul << HSUSBH_UIENR_HSERREN_Pos) /*!< HSUSBH_T::UIENR: HSERREN Mask */
  537. #define HSUSBH_UIENR_IAAEN_Pos (5) /*!< HSUSBH_T::UIENR: IAAEN Position */
  538. #define HSUSBH_UIENR_IAAEN_Msk (0x1ul << HSUSBH_UIENR_IAAEN_Pos) /*!< HSUSBH_T::UIENR: IAAEN Mask */
  539. #define HSUSBH_UFINDR_FI_Pos (0) /*!< HSUSBH_T::UFINDR: FI Position */
  540. #define HSUSBH_UFINDR_FI_Msk (0x3ffful << HSUSBH_UFINDR_FI_Pos) /*!< HSUSBH_T::UFINDR: FI Mask */
  541. #define HSUSBH_UPFLBAR_BADDR_Pos (12) /*!< HSUSBH_T::UPFLBAR: BADDR Position */
  542. #define HSUSBH_UPFLBAR_BADDR_Msk (0xffffful << HSUSBH_UPFLBAR_BADDR_Pos) /*!< HSUSBH_T::UPFLBAR: BADDR Mask */
  543. #define HSUSBH_UCALAR_LPL_Pos (5) /*!< HSUSBH_T::UCALAR: LPL Position */
  544. #define HSUSBH_UCALAR_LPL_Msk (0x7fffffful << HSUSBH_UCALAR_LPL_Pos) /*!< HSUSBH_T::UCALAR: LPL Mask */
  545. #define HSUSBH_UASSTR_ASSTMR_Pos (0) /*!< HSUSBH_T::UASSTR: ASSTMR Position */
  546. #define HSUSBH_UASSTR_ASSTMR_Msk (0xffful << HSUSBH_UASSTR_ASSTMR_Pos) /*!< HSUSBH_T::UASSTR: ASSTMR Mask */
  547. #define HSUSBH_UCFGR_CF_Pos (0) /*!< HSUSBH_T::UCFGR: CF Position */
  548. #define HSUSBH_UCFGR_CF_Msk (0x1ul << HSUSBH_UCFGR_CF_Pos) /*!< HSUSBH_T::UCFGR: CF Mask */
  549. #define HSUSBH_UPSCR_CCS_Pos (0) /*!< HSUSBH_T::UPSCR[2]: CCS Position */
  550. #define HSUSBH_UPSCR_CCS_Msk (0x1ul << HSUSBH_UPSCR_CCS_Pos) /*!< HSUSBH_T::UPSCR[2]: CCS Mask */
  551. #define HSUSBH_UPSCR_CSC_Pos (1) /*!< HSUSBH_T::UPSCR[2]: CSC Position */
  552. #define HSUSBH_UPSCR_CSC_Msk (0x1ul << HSUSBH_UPSCR_CSC_Pos) /*!< HSUSBH_T::UPSCR[2]: CSC Mask */
  553. #define HSUSBH_UPSCR_PE_Pos (2) /*!< HSUSBH_T::UPSCR[2]: PE Position */
  554. #define HSUSBH_UPSCR_PE_Msk (0x1ul << HSUSBH_UPSCR_PE_Pos) /*!< HSUSBH_T::UPSCR[2]: PE Mask */
  555. #define HSUSBH_UPSCR_PEC_Pos (3) /*!< HSUSBH_T::UPSCR[2]: PEC Position */
  556. #define HSUSBH_UPSCR_PEC_Msk (0x1ul << HSUSBH_UPSCR_PEC_Pos) /*!< HSUSBH_T::UPSCR[2]: PEC Mask */
  557. #define HSUSBH_UPSCR_OCA_Pos (4) /*!< HSUSBH_T::UPSCR[2]: OCA Position */
  558. #define HSUSBH_UPSCR_OCA_Msk (0x1ul << HSUSBH_UPSCR_OCA_Pos) /*!< HSUSBH_T::UPSCR[2]: OCA Mask */
  559. #define HSUSBH_UPSCR_OCC_Pos (5) /*!< HSUSBH_T::UPSCR[2]: OCC Position */
  560. #define HSUSBH_UPSCR_OCC_Msk (0x1ul << HSUSBH_UPSCR_OCC_Pos) /*!< HSUSBH_T::UPSCR[2]: OCC Mask */
  561. #define HSUSBH_UPSCR_FPR_Pos (6) /*!< HSUSBH_T::UPSCR[2]: FPR Position */
  562. #define HSUSBH_UPSCR_FPR_Msk (0x1ul << HSUSBH_UPSCR_FPR_Pos) /*!< HSUSBH_T::UPSCR[2]: FPR Mask */
  563. #define HSUSBH_UPSCR_SUSPEND_Pos (7) /*!< HSUSBH_T::UPSCR[2]: SUSPEND Position */
  564. #define HSUSBH_UPSCR_SUSPEND_Msk (0x1ul << HSUSBH_UPSCR_SUSPEND_Pos) /*!< HSUSBH_T::UPSCR[2]: SUSPEND Mask */
  565. #define HSUSBH_UPSCR_PRST_Pos (8) /*!< HSUSBH_T::UPSCR[2]: PRST Position */
  566. #define HSUSBH_UPSCR_PRST_Msk (0x1ul << HSUSBH_UPSCR_PRST_Pos) /*!< HSUSBH_T::UPSCR[2]: PRST Mask */
  567. #define HSUSBH_UPSCR_LSTS_Pos (10) /*!< HSUSBH_T::UPSCR[2]: LSTS Position */
  568. #define HSUSBH_UPSCR_LSTS_Msk (0x3ul << HSUSBH_UPSCR_LSTS_Pos) /*!< HSUSBH_T::UPSCR[2]: LSTS Mask */
  569. #define HSUSBH_UPSCR_PP_Pos (12) /*!< HSUSBH_T::UPSCR[2]: PP Position */
  570. #define HSUSBH_UPSCR_PP_Msk (0x1ul << HSUSBH_UPSCR_PP_Pos) /*!< HSUSBH_T::UPSCR[2]: PP Mask */
  571. #define HSUSBH_UPSCR_PO_Pos (13) /*!< HSUSBH_T::UPSCR[2]: PO Position */
  572. #define HSUSBH_UPSCR_PO_Msk (0x1ul << HSUSBH_UPSCR_PO_Pos) /*!< HSUSBH_T::UPSCR[2]: PO Mask */
  573. #define HSUSBH_UPSCR_PTC_Pos (16) /*!< HSUSBH_T::UPSCR[2]: PTC Position */
  574. #define HSUSBH_UPSCR_PTC_Msk (0xful << HSUSBH_UPSCR_PTC_Pos) /*!< HSUSBH_T::UPSCR[2]: PTC Mask */
  575. #define HSUSBH_USBPCR0_SUSPEND_Pos (8) /*!< HSUSBH_T::USBPCR0: SUSPEND Position */
  576. #define HSUSBH_USBPCR0_SUSPEND_Msk (0x1ul << HSUSBH_USBPCR0_SUSPEND_Pos) /*!< HSUSBH_T::USBPCR0: SUSPEND Mask */
  577. #define HSUSBH_USBPCR0_CLKVALID_Pos (11) /*!< HSUSBH_T::USBPCR0: CLKVALID Position */
  578. #define HSUSBH_USBPCR0_CLKVALID_Msk (0x1ul << HSUSBH_USBPCR0_CLKVALID_Pos) /*!< HSUSBH_T::USBPCR0: CLKVALID Mask */
  579. #define HSUSBH_USBPCR1_SUSPEND_Pos (8) /*!< HSUSBH_T::USBPCR1: SUSPEND Position */
  580. #define HSUSBH_USBPCR1_SUSPEND_Msk (0x1ul << HSUSBH_USBPCR1_SUSPEND_Pos) /*!< HSUSBH_T::USBPCR1: SUSPEND Mask */
  581. /**@}*/ /* HSUSBH_CONST */
  582. /**@}*/ /* end of HSUSBH register group */
  583. /**@}*/ /* end of REGISTER group */
  584. #if defined ( __CC_ARM )
  585. #pragma no_anon_unions
  586. #endif
  587. #endif /* __HSUSBH_REG_H__ */