Hardware Interfaces

Referring to the Comportable guideline for peripheral device functionality, the module usbdev has the following hardware interfaces defined

  • Primary Clock: clk_i
  • Other Clocks: clk_aon_i
  • Bus Device Interfaces (TL-UL): tl
  • Bus Host Interfaces (TL-UL): none

Peripheral Pins for Chip IO

Pin nameDirectionDescription
senseinputUSB host VBUS sense
usb_dpinoutUSB data D+
usb_dninoutUSB data D-

Inter-Module Signals

Port NamePackage::StructTypeActWidthDescription
usb_rx_dlogicunircv1USB RX data from an external differential receiver, if available
usb_tx_dlogicunireq1USB transmit data value (not used if usb_tx_se0 is set)
usb_tx_se0logicunireq1Force transmission of a USB single-ended zero (i.e. both D+ and D- are low) regardless of usb_tx_d
usb_tx_use_d_se0logicunireq1Use the usb_tx_d and usb_tx_se0 TX interface, instead of usb_dp_o and usb_dn_o
usb_dp_pulluplogicunireq1USB D+ pullup control
usb_dn_pulluplogicunireq1USB D- pullup control
usb_rx_enablelogicunireq1USB differential receiver enable
usb_ref_vallogicunireq1
usb_ref_pulselogicunireq1
usb_aon_suspend_reqlogicunireq1
usb_aon_wake_acklogicunireq1
usb_aon_bus_resetlogicunircv1
usb_aon_sense_lostlogicunircv1
usb_aon_wake_detect_activelogicunircv1
ram_cfgprim_ram_2p_pkg::ram_2p_cfgunircv1
tltlul_pkg::tlreq_rsprsp1

Interrupts

Interrupt NameTypeDescription
pkt_receivedEventRaised if a packet was received using an OUT or SETUP transaction. This interrupt is directly tied to whether the RX FIFO is empty, so it should be cleared only after handling the FIFO entry.
pkt_sentEventRaised if a packet was sent as part of an IN transaction. This interrupt is directly tied to whether a sent packet has not been acknowledged in the in_sent register. It should be cleared only after clearing all bits in the in_sent register.
disconnectedEventRaised if VBUS is lost thus the link is disconnected.
host_lostEventRaised if link is active but SOF was not received from host for 4.096 ms. The SOF should be every 1 ms.
link_resetEventRaised if the link is at SE0 longer than 3 us indicating a link reset (host asserts for min 10 ms, device can react after 2.5 us).
link_suspendEventRaised if the line has signaled J for longer than 3ms and is therefore in suspend state.
link_resumeEventRaised when the link becomes active again after being suspended.
av_emptyEventRaised when the AV FIFO is empty and the device interface is enabled. This interrupt is directly tied to the FIFO status, so the AV FIFO must be provided a free buffer before the interrupt is cleared. If the condition is not cleared, the interrupt can re-assert.
rx_fullEventRaised when the RX FIFO is full and the device interface is enabled. This interrupt is directly tied to the FIFO status, so the RX FIFO must have an entry removed before the interrupt is cleared. If the condition is not cleared, the interrupt can re-assert.
av_overflowEventRaised if a write was done to the Available Buffer FIFO when the FIFO was full.
link_in_errEventRaised if a packet to an IN endpoint started to be received but was then dropped due to an error. After transmitting the IN payload, the USB device expects a valid ACK handshake packet. This error is raised if either the packet or CRC is invalid or a different token was received.
rx_crc_errEventRaised if a CRC error occured.
rx_pid_errEventRaised if an invalid packed identifier (PID) was received.
rx_bitstuff_errEventRaised if an invalid bitstuffing was received.
frameEventRaised when the USB frame number is updated with a valid SOF.
poweredEventRaised if VBUS is applied.
link_out_errEventRaised if a packet to an OUT endpoint started to be received but was then dropped due to an error. This error is raised if the data toggle, token, packet and/or CRC are invalid, if the Available Buffer FIFO is empty or if the Received Buffer FIFO is full.

Security Alerts

Alert NameDescription
fatal_faultThis fatal alert is triggered when a fatal TL-UL bus integrity fault is detected.

Security Countermeasures

Countermeasure IDDescription
USBDEV.BUS.INTEGRITYEnd-to-end bus integrity scheme.

Registers

Summary

NameOffsetLengthDescription
usbdev.INTR_STATE0x04Interrupt State Register
usbdev.INTR_ENABLE0x44Interrupt Enable Register
usbdev.INTR_TEST0x84Interrupt Test Register
usbdev.ALERT_TEST0xc4Alert Test Register
usbdev.usbctrl0x104USB Control
usbdev.ep_out_enable0x144Enable an endpoint to respond to transactions in the downstream direction.
usbdev.ep_in_enable0x184Enable an endpoint to respond to transactions in the upstream direction.
usbdev.usbstat0x1c4USB Status
usbdev.avbuffer0x204Available Buffer FIFO
usbdev.rxfifo0x244Received Buffer FIFO
usbdev.rxenable_setup0x284Receive SETUP transaction enable
usbdev.rxenable_out0x2c4Receive OUT transaction enable
usbdev.set_nak_out0x304Set NAK after OUT transactions
usbdev.in_sent0x344IN Transaction Sent
usbdev.out_stall0x384OUT Endpoint STALL control
usbdev.in_stall0x3c4IN Endpoint STALL control
usbdev.configin_00x404Configure IN Transaction
usbdev.configin_10x444Configure IN Transaction
usbdev.configin_20x484Configure IN Transaction
usbdev.configin_30x4c4Configure IN Transaction
usbdev.configin_40x504Configure IN Transaction
usbdev.configin_50x544Configure IN Transaction
usbdev.configin_60x584Configure IN Transaction
usbdev.configin_70x5c4Configure IN Transaction
usbdev.configin_80x604Configure IN Transaction
usbdev.configin_90x644Configure IN Transaction
usbdev.configin_100x684Configure IN Transaction
usbdev.configin_110x6c4Configure IN Transaction
usbdev.out_iso0x704OUT Endpoint isochronous setting
usbdev.in_iso0x744IN Endpoint isochronous setting
usbdev.data_toggle_clear0x784Clear the data toggle flag
usbdev.phy_pins_sense0x7c4USB PHY pins sense.
usbdev.phy_pins_drive0x804USB PHY pins drive.
usbdev.phy_config0x844USB PHY Configuration
usbdev.wake_control0x884USB wake module control for suspend / resume
usbdev.wake_events0x8c4USB wake module events and debug
usbdev.buffer0x80020482 kB packet buffer. Divided into 32 64-byte buffers.

INTR_STATE

Interrupt State Register

  • Offset: 0x0
  • Reset default: 0x0
  • Reset mask: 0x1ffff

Fields

BitsTypeResetName
31:17Reserved
16rw1c0x0link_out_err
15rw1c0x0powered
14rw1c0x0frame
13rw1c0x0rx_bitstuff_err
12rw1c0x0rx_pid_err
11rw1c0x0rx_crc_err
10rw1c0x0link_in_err
9rw1c0x0av_overflow
8rw1c0x0rx_full
7rw1c0x0av_empty
6rw1c0x0link_resume
5rw1c0x0link_suspend
4rw1c0x0link_reset
3rw1c0x0host_lost
2rw1c0x0disconnected
1rw1c0x0pkt_sent
0rw1c0x0pkt_received

Raised if a packet to an OUT endpoint started to be received but was then dropped due to an error. This error is raised if the data toggle, token, packet and/or CRC are invalid, if the Available Buffer FIFO is empty or if the Received Buffer FIFO is full.

INTR_STATE . powered

Raised if VBUS is applied.

INTR_STATE . frame

Raised when the USB frame number is updated with a valid SOF.

INTR_STATE . rx_bitstuff_err

Raised if an invalid bitstuffing was received.

INTR_STATE . rx_pid_err

Raised if an invalid packed identifier (PID) was received.

INTR_STATE . rx_crc_err

Raised if a CRC error occured.

Raised if a packet to an IN endpoint started to be received but was then dropped due to an error. After transmitting the IN payload, the USB device expects a valid ACK handshake packet. This error is raised if either the packet or CRC is invalid or a different token was received.

INTR_STATE . av_overflow

Raised if a write was done to the Available Buffer FIFO when the FIFO was full.

INTR_STATE . rx_full

Raised when the RX FIFO is full and the device interface is enabled. This interrupt is directly tied to the FIFO status, so the RX FIFO must have an entry removed before the interrupt is cleared. If the condition is not cleared, the interrupt can re-assert.

INTR_STATE . av_empty

Raised when the AV FIFO is empty and the device interface is enabled. This interrupt is directly tied to the FIFO status, so the AV FIFO must be provided a free buffer before the interrupt is cleared. If the condition is not cleared, the interrupt can re-assert.

Raised when the link becomes active again after being suspended.

Raised if the line has signaled J for longer than 3ms and is therefore in suspend state.

Raised if the link is at SE0 longer than 3 us indicating a link reset (host asserts for min 10 ms, device can react after 2.5 us).

INTR_STATE . host_lost

Raised if link is active but SOF was not received from host for 4.096 ms. The SOF should be every 1 ms.

INTR_STATE . disconnected

Raised if VBUS is lost thus the link is disconnected.

INTR_STATE . pkt_sent

Raised if a packet was sent as part of an IN transaction. This interrupt is directly tied to whether a sent packet has not been acknowledged in the in_sent register. It should be cleared only after clearing all bits in the in_sent register.

INTR_STATE . pkt_received

Raised if a packet was received using an OUT or SETUP transaction. This interrupt is directly tied to whether the RX FIFO is empty, so it should be cleared only after handling the FIFO entry.

INTR_ENABLE

Interrupt Enable Register

  • Offset: 0x4
  • Reset default: 0x0
  • Reset mask: 0x1ffff

Fields

BitsTypeResetNameDescription
31:17Reserved
16rw0x0link_out_errEnable interrupt when INTR_STATE.link_out_err is set.
15rw0x0poweredEnable interrupt when INTR_STATE.powered is set.
14rw0x0frameEnable interrupt when INTR_STATE.frame is set.
13rw0x0rx_bitstuff_errEnable interrupt when INTR_STATE.rx_bitstuff_err is set.
12rw0x0rx_pid_errEnable interrupt when INTR_STATE.rx_pid_err is set.
11rw0x0rx_crc_errEnable interrupt when INTR_STATE.rx_crc_err is set.
10rw0x0link_in_errEnable interrupt when INTR_STATE.link_in_err is set.
9rw0x0av_overflowEnable interrupt when INTR_STATE.av_overflow is set.
8rw0x0rx_fullEnable interrupt when INTR_STATE.rx_full is set.
7rw0x0av_emptyEnable interrupt when INTR_STATE.av_empty is set.
6rw0x0link_resumeEnable interrupt when INTR_STATE.link_resume is set.
5rw0x0link_suspendEnable interrupt when INTR_STATE.link_suspend is set.
4rw0x0link_resetEnable interrupt when INTR_STATE.link_reset is set.
3rw0x0host_lostEnable interrupt when INTR_STATE.host_lost is set.
2rw0x0disconnectedEnable interrupt when INTR_STATE.disconnected is set.
1rw0x0pkt_sentEnable interrupt when INTR_STATE.pkt_sent is set.
0rw0x0pkt_receivedEnable interrupt when INTR_STATE.pkt_received is set.

INTR_TEST

Interrupt Test Register

  • Offset: 0x8
  • Reset default: 0x0
  • Reset mask: 0x1ffff

Fields

BitsTypeResetNameDescription
31:17Reserved
16wo0x0link_out_errWrite 1 to force INTR_STATE.link_out_err to 1.
15wo0x0poweredWrite 1 to force INTR_STATE.powered to 1.
14wo0x0frameWrite 1 to force INTR_STATE.frame to 1.
13wo0x0rx_bitstuff_errWrite 1 to force INTR_STATE.rx_bitstuff_err to 1.
12wo0x0rx_pid_errWrite 1 to force INTR_STATE.rx_pid_err to 1.
11wo0x0rx_crc_errWrite 1 to force INTR_STATE.rx_crc_err to 1.
10wo0x0link_in_errWrite 1 to force INTR_STATE.link_in_err to 1.
9wo0x0av_overflowWrite 1 to force INTR_STATE.av_overflow to 1.
8wo0x0rx_fullWrite 1 to force INTR_STATE.rx_full to 1.
7wo0x0av_emptyWrite 1 to force INTR_STATE.av_empty to 1.
6wo0x0link_resumeWrite 1 to force INTR_STATE.link_resume to 1.
5wo0x0link_suspendWrite 1 to force INTR_STATE.link_suspend to 1.
4wo0x0link_resetWrite 1 to force INTR_STATE.link_reset to 1.
3wo0x0host_lostWrite 1 to force INTR_STATE.host_lost to 1.
2wo0x0disconnectedWrite 1 to force INTR_STATE.disconnected to 1.
1wo0x0pkt_sentWrite 1 to force INTR_STATE.pkt_sent to 1.
0wo0x0pkt_receivedWrite 1 to force INTR_STATE.pkt_received to 1.

ALERT_TEST

Alert Test Register

  • Offset: 0xc
  • Reset default: 0x0
  • Reset mask: 0x1

Fields

BitsTypeResetNameDescription
31:1Reserved
0wo0x0fatal_faultWrite 1 to trigger one alert event of this kind.

usbctrl

USB Control

  • Offset: 0x10
  • Reset default: 0x0
  • Reset mask: 0x7f0003

Fields

BitsTypeResetNameDescription
31:23Reserved
22:16rw0x0device_addressDevice address set by host (this should be copied from the Set Device ID SETUP packet). This will be zeroed by the hardware when the link resets.
15:2Reserved
1wo0x0resume_link_activeWrite a 1 to this bit to instruct usbdev to jump to the LinkResuming state. The write will only have an effect when the device is in the LinkPowered state. Its intention is to handle a resume-from-suspend event after the IP has been powered down.
0rw0x0enableSet to connect the USB interface (i.e. assert the pullup).

ep_out_enable

Enable an endpoint to respond to transactions in the downstream direction. Note that as the default endpoint, endpoint 0 must be enabled in both the IN and OUT directions before enabling the USB interface to connect.

  • Offset: 0x14
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11rw0x0enable_11This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
10rw0x0enable_10This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
9rw0x0enable_9This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
8rw0x0enable_8This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
7rw0x0enable_7This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
6rw0x0enable_6This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
5rw0x0enable_5This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
4rw0x0enable_4This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
3rw0x0enable_3This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
2rw0x0enable_2This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
1rw0x0enable_1This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.
0rw0x0enable_0This bit must be set to enable downstream transactions to be received on the endpoint and elicit responses. If the bit is clear, any SETUP or OUT packets sent to the endpoint will be ignored.

ep_in_enable

Enable an endpoint to respond to transactions in the upstream direction. Note that as the default endpoint, endpoint 0 must be enabled in both the IN and OUT directions before enabling the USB interface to connect.

  • Offset: 0x18
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11rw0x0enable_11This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
10rw0x0enable_10This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
9rw0x0enable_9This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
8rw0x0enable_8This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
7rw0x0enable_7This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
6rw0x0enable_6This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
5rw0x0enable_5This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
4rw0x0enable_4This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
3rw0x0enable_3This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
2rw0x0enable_2This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
1rw0x0enable_1This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.
0rw0x0enable_0This bit must be set to enable upstream transactions to be received on the endpoint and elicit responses. If the bit is clear then any IN packets sent to the endpoint will be ignored.

usbstat

USB Status

  • Offset: 0x1c
  • Reset default: 0x80000000
  • Reset mask: 0x8f8fffff

Fields

BitsTypeResetName
31ro0x1rx_empty
30:28Reserved
27:24roxrx_depth
23roxav_full
22:20Reserved
19:16roxav_depth
15roxsense
14:12roxlink_state
11roxhost_lost
10:0roxframe

usbstat . rx_empty

Received Buffer FIFO is empty.

usbstat . rx_depth

Number of buffers in the Received Buffer FIFO.

These buffers have packets that have been received and should be popped from the FIFO and processed.

usbstat . av_full

Available Buffer FIFO is full.

usbstat . av_depth

Number of buffers in the Available Buffer FIFO.

These buffers are available for receiving packets.

usbstat . sense

Reflects the state of the sense pin. 1 indicates that the host is providing VBUS. Note that this bit always shows the state of the actual pin and does not take account of the override control.

State of USB link, decoded from line.

ValueNameDescription
0x0disconnectedLink disconnected (no VBUS or no pull-up connected)
0x1poweredLink powered and connected, but not reset yet
0x2powered_suspendedLink suspended (constant idle/J for > 3 ms), but not reset yet
0x3activeLink active
0x4suspendedLink suspended (constant idle for > 3 ms), was active before becoming suspended
0x5active_nosofLink active but no SOF has been received since the last reset.
0x6resumingLink resuming to an active state, pending the end of resume signaling

Other values are reserved.

usbstat . host_lost

Start of frame not received from host for 4.096 ms and the line is active.

usbstat . frame

Frame index received from host. On an active link, this will increment every milisecond.

avbuffer

Available Buffer FIFO

  • Offset: 0x20
  • Reset default: 0x0
  • Reset mask: 0x1f

Fields

BitsTypeResetNameDescription
31:5Reserved
4:0wo0x0bufferThis field contains the buffer ID being passed to the USB receive engine. If the Available Buffer FIFO is full, any write operations are discarded.

rxfifo

Received Buffer FIFO

  • Offset: 0x24
  • Reset default: 0x0
  • Reset mask: 0xf87f1f

Fields

BitsTypeResetNameDescription
31:24Reserved
23:20roxepThis field contains the endpoint ID to which the packet was directed.
19roxsetupThis bit indicates if the received transaction is of type SETUP (1) or OUT (0).
18:15Reserved
14:8roxsizeThis field contains the data length in bytes of the packet written to the buffer.
7:5Reserved
4:0roxbufferThis field contains the buffer ID that data was received into. On read the buffer ID is popped from the Received Buffer FIFO and returned to software.

rxenable_setup

Receive SETUP transaction enable

  • Offset: 0x28
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11rw0x0setup_11This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
10rw0x0setup_10This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
9rw0x0setup_9This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
8rw0x0setup_8This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
7rw0x0setup_7This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
6rw0x0setup_6This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
5rw0x0setup_5This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
4rw0x0setup_4This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
3rw0x0setup_3This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
2rw0x0setup_2This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
1rw0x0setup_1This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).
0rw0x0setup_0This bit must be set to enable SETUP transactions to be received on the endpoint. If the bit is clear then a SETUP packet will be ignored. The bit should be set for control endpoints (and only control endpoints).

rxenable_out

Receive OUT transaction enable

  • Offset: 0x2c
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetName
31:12Reserved
11rw0x0out_11
10rw0x0out_10
9rw0x0out_9
8rw0x0out_8
7rw0x0out_7
6rw0x0out_6
5rw0x0out_5
4rw0x0out_4
3rw0x0out_3
2rw0x0out_2
1rw0x0out_1
0rw0x0out_0

rxenable_out . out_11

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_10

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_9

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_8

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_7

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_6

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_5

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_4

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_3

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_2

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_1

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

rxenable_out . out_0

This bit must be set to enable OUT transactions to be received on the endpoint. If the bit is clear then an OUT request will be responded to with a NAK, if the endpoint is enabled. If set_nak_out for this endpoint is set, hardware will clear this bit whenever an OUT transaction is received on this endpoint. Software must set this bit again to receive the next OUT transaction. Until that happens, hardware will continue to NAK any OUT transaction to this endpoint.

set_nak_out

Set NAK after OUT transactions

  • Offset: 0x30
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11rw0x0enable_11When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
10rw0x0enable_10When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
9rw0x0enable_9When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
8rw0x0enable_8When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
7rw0x0enable_7When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
6rw0x0enable_6When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
5rw0x0enable_5When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
4rw0x0enable_4When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
3rw0x0enable_3When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
2rw0x0enable_2When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
1rw0x0enable_1When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.
0rw0x0enable_0When this bit is set, hardware will clear this endpoint’s rxenable_out bit whenever an OUT transaction is received on this endpoint. This bit should not be changed while the endpoint is active.

in_sent

IN Transaction Sent

  • Offset: 0x34
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11rw1c0x0sent_11This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
10rw1c0x0sent_10This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
9rw1c0x0sent_9This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
8rw1c0x0sent_8This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
7rw1c0x0sent_7This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
6rw1c0x0sent_6This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
5rw1c0x0sent_5This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
4rw1c0x0sent_4This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
3rw1c0x0sent_3This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
2rw1c0x0sent_2This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
1rw1c0x0sent_1This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.
0rw1c0x0sent_0This bit will be set when the ACK is received from the host to indicate successful packet delivery as part of an IN transaction.

out_stall

OUT Endpoint STALL control

  • Offset: 0x38
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetName
31:12Reserved
11rw0x0endpoint_11
10rw0x0endpoint_10
9rw0x0endpoint_9
8rw0x0endpoint_8
7rw0x0endpoint_7
6rw0x0endpoint_6
5rw0x0endpoint_5
4rw0x0endpoint_4
3rw0x0endpoint_3
2rw0x0endpoint_2
1rw0x0endpoint_1
0rw0x0endpoint_0

out_stall . endpoint_11

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_10

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_9

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_8

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_7

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_6

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_5

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_4

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_3

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_2

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_1

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

out_stall . endpoint_0

If this bit is set then an OUT transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall

IN Endpoint STALL control

  • Offset: 0x3c
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetName
31:12Reserved
11rw0x0endpoint_11
10rw0x0endpoint_10
9rw0x0endpoint_9
8rw0x0endpoint_8
7rw0x0endpoint_7
6rw0x0endpoint_6
5rw0x0endpoint_5
4rw0x0endpoint_4
3rw0x0endpoint_3
2rw0x0endpoint_2
1rw0x0endpoint_1
0rw0x0endpoint_0

in_stall . endpoint_11

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_10

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_9

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_8

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_7

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_6

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_5

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_4

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_3

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_2

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_1

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

in_stall . endpoint_0

If this bit is set then an IN transaction to this endpoint will elicit a STALL handshake, when a non-isochronous endpoint is enabled. If the configuration has both STALL and NAK enabled, the STALL handshake will take priority.

Note that SETUP transactions are always either accepted or ignored. For endpoints that accept SETUP transactions, a SETUP packet will clear the STALL flag on endpoints for both the IN and OUT directions.

configin

Configure IN Transaction

  • Reset default: 0x0
  • Reset mask: 0xc0007f1f

Instances

NameOffset
configin_00x40
configin_10x44
configin_20x48
configin_30x4c
configin_40x50
configin_50x54
configin_60x58
configin_70x5c
configin_80x60
configin_90x64
configin_100x68
configin_110x6c

Fields

BitsTypeResetName
31rw0x0rdy
30rw1c0x0pend
29:15Reserved
14:8rw0x0size
7:5Reserved
4:0rw0x0buffer

configin . rdy

This bit should be set to indicate the buffer is ready for sending. It will be cleared when the ACK is received indicating the host has accepted the data.

This bit will also be cleared if an enabled SETUP transaction is received on the endpoint. This allows use of the IN channel for transfer of SETUP information. The original buffer must be resubmitted after the SETUP sequence is complete. A link reset also clears the bit. In either of the cases where the hardware cancels the transaction it will also set the pend bit.

configin . pend

This bit indicates a pending transaction was canceled by the hardware.

The bit is set when the rdy bit is cleared by hardware because of a SETUP packet being received or a link reset being detected.

The bit remains set until cleared by being written with a 1.

configin . size

The number of bytes to send from the buffer.

If this is 0 then a CRC only packet is sent.

If this is greater than 64 then 64 bytes are sent.

configin . buffer

The buffer ID containing the data to send when an IN transaction is received on the endpoint.

out_iso

OUT Endpoint isochronous setting

  • Offset: 0x70
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetName
31:12Reserved
11rw0x0iso_11
10rw0x0iso_10
9rw0x0iso_9
8rw0x0iso_8
7rw0x0iso_7
6rw0x0iso_6
5rw0x0iso_5
4rw0x0iso_4
3rw0x0iso_3
2rw0x0iso_2
1rw0x0iso_1
0rw0x0iso_0

out_iso . iso_11

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_10

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_9

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_8

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_7

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_6

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_5

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_4

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_3

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_2

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_1

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

out_iso . iso_0

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be sent for an OUT transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso

IN Endpoint isochronous setting

  • Offset: 0x74
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetName
31:12Reserved
11rw0x0iso_11
10rw0x0iso_10
9rw0x0iso_9
8rw0x0iso_8
7rw0x0iso_7
6rw0x0iso_6
5rw0x0iso_5
4rw0x0iso_4
3rw0x0iso_3
2rw0x0iso_2
1rw0x0iso_1
0rw0x0iso_0

in_iso . iso_11

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_10

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_9

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_8

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_7

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_6

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_5

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_4

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_3

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_2

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_1

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

in_iso . iso_0

If this bit is set then the endpoint will be treated as an isochronous endpoint. No handshake packet will be expected for an IN transaction. Note that if a rxenable_setup is set for this endpoint’s number, this bit will not take effect. Control endpoint configuration trumps isochronous endpoint configuration.

data_toggle_clear

Clear the data toggle flag

  • Offset: 0x78
  • Reset default: 0x0
  • Reset mask: 0xfff

Fields

BitsTypeResetNameDescription
31:12Reserved
11wo0x0clear_11Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
10wo0x0clear_10Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
9wo0x0clear_9Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
8wo0x0clear_8Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
7wo0x0clear_7Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
6wo0x0clear_6Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
5wo0x0clear_5Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
4wo0x0clear_4Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
3wo0x0clear_3Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
2wo0x0clear_2Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
1wo0x0clear_1Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.
0wo0x0clear_0Writing 1 to this bit will clear the data toggle bit for this endpoint to Data0 in both IN and OUT directions. The register must no be written again within 200 ns.

phy_pins_sense

USB PHY pins sense. This register can be used to read out the state of the USB device inputs and outputs from software. This is designed to be used for debugging purposes or during chip testing.

  • Offset: 0x7c
  • Reset default: 0x0
  • Reset mask: 0x11f07

Fields

BitsTypeResetNameDescription
31:17Reserved
16roxpwr_senseUSB power sense signal.
15:13Reserved
12roxtx_oe_oUSB OE output (readback).
11roxtx_se0_oUSB single-ended zero output (readback).
10roxtx_d_oUSB transmit data value (readback).
9roxtx_dn_oUSB transmit D- output (readback).
8roxtx_dp_oUSB transmit D+ output (readback).
7:3Reserved
2roxrx_d_iUSB data input from an external differential receiver, if available.
1roxrx_dn_iUSB D- input.
0roxrx_dp_iUSB D+ input.

phy_pins_drive

USB PHY pins drive. This register can be used to control the USB device inputs and outputs from software. This is designed to be used for debugging purposes or during chip testing.

  • Offset: 0x80
  • Reset default: 0x0
  • Reset mask: 0x100ff

Fields

BitsTypeResetNameDescription
31:17Reserved
16rw0x0en0: Outputs are controlled by the hardware block. 1: Outputs are controlled with this register.
15:8Reserved
7rw0x0dn_pullup_en_oUSB D- pullup enable output.
6rw0x0dp_pullup_en_oUSB D+ pullup enable output.
5rw0x0rx_enable_oEnable differential receiver.
4rw0x0oe_oUSB OE output.
3rw0x0se0_oUSB single-ended zero output.
2rw0x0d_oUSB transmit data output, encoding K and J when se0_o is 0.
1rw0x0dn_oUSB transmit D- output, used with dp_o.
0rw0x0dp_oUSB transmit D+ output, used with dn_o.

phy_config

USB PHY Configuration

  • Offset: 0x84
  • Reset default: 0x4
  • Reset mask: 0xe7

Fields

BitsTypeResetName
31:8Reserved
7rw0x0tx_osc_test_mode
6rw0x0usb_ref_disable
5rw0x0pinflip
4:3Reserved
2rw0x1eop_single_bit
1rw0x0tx_use_d_se0
0rw0x0use_diff_rcvr

phy_config . tx_osc_test_mode

Disable (0) or enable (1) oscillator test mode. If enabled, the device constantly transmits a J/K pattern, which is useful for testing the USB clock. Note that while in oscillator test mode, the device no longer receives SOFs and consequently does not generate the reference signal for clock synchronization. The clock might drift off.

phy_config . usb_ref_disable

0: Enable reference signal generation for clock synchronization, 1: disable it by forcing the associated signals to zero.

phy_config . pinflip

Flip the D+/D- pins. Particularly useful if D+/D- are mapped to SBU1/SBU2 pins of USB-C.

phy_config . eop_single_bit

Recognize a single SE0 bit as an end of packet, otherwise two successive bits are required.

phy_config . tx_use_d_se0

If 1, select the d and se0 TX interface. If 0, select the dp and dn TX interface. This directly controls the output pin of the same name. It is intended to be used to enable the use of a variety of external transceivers, to select an encoding that matches the transceiver.

phy_config . use_diff_rcvr

Detect received K and J symbols from the usb_rx_d signal, which must be driven from an external differential receiver. If 1, make use of the usb_rx_d input. If 0, the usb_rx_d input is ignored and the usb_rx_dp and usb_rx_dn pair are used to detect K and J (useful for some environments, but will be unlikely to pass full USB compliance). Regardless of the state of this field usb_rx_dp and usb_rx_dn are always used to detect SE0. This bit also feeds the rx_enable pin, activating the receiver when the device is not suspended.

wake_control

USB wake module control for suspend / resume

  • Offset: 0x88
  • Reset default: 0x0
  • Reset mask: 0x3

Fields

BitsTypeResetName
31:2Reserved
1wo0x0wake_ack
0wo0x0suspend_req

wake_control . wake_ack

Wake acknowledgement.

Signal to the wake detection module that it may release control of the pull-ups back to the main block and return to an inactive state. The release back to normal state may not happen immediately. The status can be confirmed via wake_events.module_active.

Note that this bit can also be used without powering down, such as when usbdev detects resume signaling before transitions to low power states have begun.

wake_control . suspend_req

Suspend request to the wake detection module.

Trigger the wake detection module to begin monitoring for wake-from-suspend events. When written with a 1, the wake detection module will activate. Activation may not happen immediately, and its status can be verified by checking wake_events.module_active.

wake_events

USB wake module events and debug

  • Offset: 0x8c
  • Reset default: 0x0
  • Reset mask: 0x301

Fields

BitsTypeResetNameDescription
31:10Reserved
9ro0x0bus_resetUSB aon wake module detected a bus reset while monitoring events.
8ro0x0disconnectedUSB aon wake module detected VBUS was interrupted while monitoring events.
7:1Reserved
0ro0x0module_activeUSB aon wake module is active, monitoring events and controlling the pull-ups.

buffer

2 kB packet buffer. Divided into 32 64-byte buffers.

The packet buffer is used for sending and receiveing packets.

  • Word Aligned Offset Range: 0x800to0xffc
  • Size (words): 512
  • Access: rw
  • Byte writes are not supported.