block/USB: description: USB FS/LS controller device registers. items: - name: ADDR_ENDP description: Device address and endpoint control. byte_offset: 0 fieldset: ADDR_ENDP - name: ADDR_ENDP1 description: Interrupt endpoint 1. Only valid for HOST mode. byte_offset: 4 fieldset: ADDR_ENDP1 - name: ADDR_ENDP2 description: Interrupt endpoint 2. Only valid for HOST mode. byte_offset: 8 fieldset: ADDR_ENDP2 - name: ADDR_ENDP3 description: Interrupt endpoint 3. Only valid for HOST mode. byte_offset: 12 fieldset: ADDR_ENDP3 - name: ADDR_ENDP4 description: Interrupt endpoint 4. Only valid for HOST mode. byte_offset: 16 fieldset: ADDR_ENDP4 - name: ADDR_ENDP5 description: Interrupt endpoint 5. Only valid for HOST mode. byte_offset: 20 fieldset: ADDR_ENDP5 - name: ADDR_ENDP6 description: Interrupt endpoint 6. Only valid for HOST mode. byte_offset: 24 fieldset: ADDR_ENDP6 - name: ADDR_ENDP7 description: Interrupt endpoint 7. Only valid for HOST mode. byte_offset: 28 fieldset: ADDR_ENDP7 - name: ADDR_ENDP8 description: Interrupt endpoint 8. Only valid for HOST mode. byte_offset: 32 fieldset: ADDR_ENDP8 - name: ADDR_ENDP9 description: Interrupt endpoint 9. Only valid for HOST mode. byte_offset: 36 fieldset: ADDR_ENDP9 - name: ADDR_ENDP10 description: Interrupt endpoint 10. Only valid for HOST mode. byte_offset: 40 fieldset: ADDR_ENDP10 - name: ADDR_ENDP11 description: Interrupt endpoint 11. Only valid for HOST mode. byte_offset: 44 fieldset: ADDR_ENDP11 - name: ADDR_ENDP12 description: Interrupt endpoint 12. Only valid for HOST mode. byte_offset: 48 fieldset: ADDR_ENDP12 - name: ADDR_ENDP13 description: Interrupt endpoint 13. Only valid for HOST mode. byte_offset: 52 fieldset: ADDR_ENDP13 - name: ADDR_ENDP14 description: Interrupt endpoint 14. Only valid for HOST mode. byte_offset: 56 fieldset: ADDR_ENDP14 - name: ADDR_ENDP15 description: Interrupt endpoint 15. Only valid for HOST mode. byte_offset: 60 fieldset: ADDR_ENDP15 - name: MAIN_CTRL description: Main control register. byte_offset: 64 fieldset: MAIN_CTRL - name: SOF_WR description: Set the SOF (Start of Frame) frame number in the host controller. The SOF packet is sent every 1ms and the host will increment the frame number by 1 each time. byte_offset: 68 fieldset: SOF_WR - name: SOF_RD description: Read the last SOF (Start of Frame) frame number seen. In device mode the last SOF received from the host. In host mode the last SOF sent by the host. byte_offset: 72 fieldset: SOF_RD - name: SIE_CTRL description: SIE control register. byte_offset: 76 fieldset: SIE_CTRL - name: SIE_STATUS description: SIE status register. byte_offset: 80 fieldset: SIE_STATUS - name: INT_EP_CTRL description: interrupt endpoint control register. byte_offset: 84 fieldset: INT_EP_CTRL - name: BUFF_STATUS description: Buffer status register. A bit set here indicates that a buffer has completed on the endpoint (if the buffer interrupt is enabled). It is possible for 2 buffers to be completed, so clearing the buffer status bit may instantly re set it on the next clock cycle. byte_offset: 88 fieldset: BUFF_STATUS - name: BUFF_CPU_SHOULD_HANDLE description: Which of the double buffers should be handled. Only valid if using an interrupt per buffer (i.e. not per 2 buffers). Not valid for host interrupt endpoint polling because they are only single buffered. byte_offset: 92 fieldset: BUFF_CPU_SHOULD_HANDLE - name: EP_ABORT description: 'Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer. A NAK will be sent for every access to the endpoint until this bit is cleared. A corresponding bit in `EP_ABORT_DONE` is set when it is safe to modify the buffer control register.' byte_offset: 96 fieldset: EP_ABORT - name: EP_ABORT_DONE description: 'Device only: Used in conjunction with `EP_ABORT`. Set once an endpoint is idle so the programmer knows it is safe to modify the buffer control register.' byte_offset: 100 fieldset: EP_ABORT_DONE - name: EP_STALL_ARM description: 'Device: this bit must be set in conjunction with the `STALL` bit in the buffer control register to send a STALL on EP0. The device controller clears these bits when a SETUP packet is received because the USB spec requires that a STALL condition is cleared when a SETUP packet is received.' byte_offset: 104 fieldset: EP_STALL_ARM - name: NAK_POLL description: Used by the host controller. Sets the wait time in microseconds before trying again if the device replies with a NAK. byte_offset: 108 fieldset: NAK_POLL - name: EP_STATUS_STALL_NAK description: 'Device: bits are set when the `IRQ_ON_NAK` or `IRQ_ON_STALL` bits are set. For EP0 this comes from `SIE_CTRL`. For all other endpoints it comes from the endpoint control register.' byte_offset: 112 fieldset: EP_STATUS_STALL_NAK - name: USB_MUXING description: Where to connect the USB controller. Should be to_phy by default. byte_offset: 116 fieldset: USB_MUXING - name: USB_PWR description: Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO. Set the value of the override and then the override enable to switch over to the override value. byte_offset: 120 fieldset: USB_PWR - name: USBPHY_DIRECT description: This register allows for direct control of the USB phy. Use in conjunction with usbphy_direct_override register to enable each override bit. byte_offset: 124 fieldset: USBPHY_DIRECT - name: USBPHY_DIRECT_OVERRIDE description: Override enable for each control in usbphy_direct. byte_offset: 128 fieldset: USBPHY_DIRECT_OVERRIDE - name: USBPHY_TRIM description: Used to adjust trim values of USB phy pull down resistors. byte_offset: 132 fieldset: USBPHY_TRIM - name: LINESTATE_TUNING description: Used for debug only. byte_offset: 136 fieldset: LINESTATE_TUNING - name: INTR description: Raw Interrupts. byte_offset: 140 fieldset: INTR - name: INTE description: Interrupt Enable. byte_offset: 144 fieldset: INTE - name: INTF description: Interrupt Force. byte_offset: 148 fieldset: INTF - name: INTS description: Interrupt status after masking & forcing. byte_offset: 152 fieldset: INTS - name: SOF_TIMESTAMP_RAW description: Device only. Raw value of free-running PHY clock counter @48MHz. Used to calculate time between SOF events. byte_offset: 256 fieldset: SOF_TIMESTAMP_RAW - name: SOF_TIMESTAMP_LAST description: Device only. Value of free-running PHY clock counter @48MHz when last SOF event occurred. byte_offset: 260 fieldset: SOF_TIMESTAMP_LAST - name: SM_STATE byte_offset: 264 fieldset: SM_STATE - name: EP_TX_ERROR description: TX error count for each endpoint. Write to each field to reset the counter to 0. byte_offset: 268 fieldset: EP_TX_ERROR - name: EP_RX_ERROR description: RX error count for each endpoint. Write to each field to reset the counter to 0. byte_offset: 272 fieldset: EP_RX_ERROR - name: DEV_SM_WATCHDOG description: Watchdog that forces the device state machine to idle and raises an interrupt if the device stays in a state that isn't idle for the configured limit. The counter is reset on every state transition. Set limit while enable is low and then set the enable. byte_offset: 276 fieldset: DEV_SM_WATCHDOG fieldset/ADDR_ENDP: description: Device address and endpoint control. fields: - name: ADDRESS description: In device mode, the address that the device should respond to. Set in response to a SET_ADDR setup packet from the host. In host mode set to the address of the device to communicate with. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Device endpoint to send data to. Only valid for HOST mode. bit_offset: 16 bit_size: 4 fieldset/ADDR_ENDP1: description: Interrupt endpoint 1. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP10: description: Interrupt endpoint 10. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP11: description: Interrupt endpoint 11. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP12: description: Interrupt endpoint 12. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP13: description: Interrupt endpoint 13. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP14: description: Interrupt endpoint 14. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP15: description: Interrupt endpoint 15. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP2: description: Interrupt endpoint 2. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP3: description: Interrupt endpoint 3. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP4: description: Interrupt endpoint 4. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP5: description: Interrupt endpoint 5. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP6: description: Interrupt endpoint 6. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP7: description: Interrupt endpoint 7. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP8: description: Interrupt endpoint 8. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/ADDR_ENDP9: description: Interrupt endpoint 9. Only valid for HOST mode. fields: - name: ADDRESS description: Device address. bit_offset: 0 bit_size: 7 - name: ENDPOINT description: Endpoint number of the interrupt endpoint. bit_offset: 16 bit_size: 4 - name: INTEP_DIR description: Direction of the interrupt endpoint. In=0, Out=1. bit_offset: 25 bit_size: 1 - name: INTEP_PREAMBLE description: Interrupt EP requires preamble (is a low speed device on a full speed hub). bit_offset: 26 bit_size: 1 fieldset/BUFF_CPU_SHOULD_HANDLE: description: Which of the double buffers should be handled. Only valid if using an interrupt per buffer (i.e. not per 2 buffers). Not valid for host interrupt endpoint polling because they are only single buffered. fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 - name: EP1_IN bit_offset: 2 bit_size: 1 - name: EP1_OUT bit_offset: 3 bit_size: 1 - name: EP2_IN bit_offset: 4 bit_size: 1 - name: EP2_OUT bit_offset: 5 bit_size: 1 - name: EP3_IN bit_offset: 6 bit_size: 1 - name: EP3_OUT bit_offset: 7 bit_size: 1 - name: EP4_IN bit_offset: 8 bit_size: 1 - name: EP4_OUT bit_offset: 9 bit_size: 1 - name: EP5_IN bit_offset: 10 bit_size: 1 - name: EP5_OUT bit_offset: 11 bit_size: 1 - name: EP6_IN bit_offset: 12 bit_size: 1 - name: EP6_OUT bit_offset: 13 bit_size: 1 - name: EP7_IN bit_offset: 14 bit_size: 1 - name: EP7_OUT bit_offset: 15 bit_size: 1 - name: EP8_IN bit_offset: 16 bit_size: 1 - name: EP8_OUT bit_offset: 17 bit_size: 1 - name: EP9_IN bit_offset: 18 bit_size: 1 - name: EP9_OUT bit_offset: 19 bit_size: 1 - name: EP10_IN bit_offset: 20 bit_size: 1 - name: EP10_OUT bit_offset: 21 bit_size: 1 - name: EP11_IN bit_offset: 22 bit_size: 1 - name: EP11_OUT bit_offset: 23 bit_size: 1 - name: EP12_IN bit_offset: 24 bit_size: 1 - name: EP12_OUT bit_offset: 25 bit_size: 1 - name: EP13_IN bit_offset: 26 bit_size: 1 - name: EP13_OUT bit_offset: 27 bit_size: 1 - name: EP14_IN bit_offset: 28 bit_size: 1 - name: EP14_OUT bit_offset: 29 bit_size: 1 - name: EP15_IN bit_offset: 30 bit_size: 1 - name: EP15_OUT bit_offset: 31 bit_size: 1 fieldset/BUFF_STATUS: description: Buffer status register. A bit set here indicates that a buffer has completed on the endpoint (if the buffer interrupt is enabled). It is possible for 2 buffers to be completed, so clearing the buffer status bit may instantly re set it on the next clock cycle. fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 - name: EP1_IN bit_offset: 2 bit_size: 1 - name: EP1_OUT bit_offset: 3 bit_size: 1 - name: EP2_IN bit_offset: 4 bit_size: 1 - name: EP2_OUT bit_offset: 5 bit_size: 1 - name: EP3_IN bit_offset: 6 bit_size: 1 - name: EP3_OUT bit_offset: 7 bit_size: 1 - name: EP4_IN bit_offset: 8 bit_size: 1 - name: EP4_OUT bit_offset: 9 bit_size: 1 - name: EP5_IN bit_offset: 10 bit_size: 1 - name: EP5_OUT bit_offset: 11 bit_size: 1 - name: EP6_IN bit_offset: 12 bit_size: 1 - name: EP6_OUT bit_offset: 13 bit_size: 1 - name: EP7_IN bit_offset: 14 bit_size: 1 - name: EP7_OUT bit_offset: 15 bit_size: 1 - name: EP8_IN bit_offset: 16 bit_size: 1 - name: EP8_OUT bit_offset: 17 bit_size: 1 - name: EP9_IN bit_offset: 18 bit_size: 1 - name: EP9_OUT bit_offset: 19 bit_size: 1 - name: EP10_IN bit_offset: 20 bit_size: 1 - name: EP10_OUT bit_offset: 21 bit_size: 1 - name: EP11_IN bit_offset: 22 bit_size: 1 - name: EP11_OUT bit_offset: 23 bit_size: 1 - name: EP12_IN bit_offset: 24 bit_size: 1 - name: EP12_OUT bit_offset: 25 bit_size: 1 - name: EP13_IN bit_offset: 26 bit_size: 1 - name: EP13_OUT bit_offset: 27 bit_size: 1 - name: EP14_IN bit_offset: 28 bit_size: 1 - name: EP14_OUT bit_offset: 29 bit_size: 1 - name: EP15_IN bit_offset: 30 bit_size: 1 - name: EP15_OUT bit_offset: 31 bit_size: 1 fieldset/DEV_SM_WATCHDOG: description: Watchdog that forces the device state machine to idle and raises an interrupt if the device stays in a state that isn't idle for the configured limit. The counter is reset on every state transition. Set limit while enable is low and then set the enable. fields: - name: LIMIT bit_offset: 0 bit_size: 18 - name: ENABLE bit_offset: 18 bit_size: 1 - name: RESET description: Set to 1 to forcibly reset the device state machine on watchdog expiry. bit_offset: 19 bit_size: 1 - name: FIRED bit_offset: 20 bit_size: 1 fieldset/EP_ABORT: description: 'Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer. A NAK will be sent for every access to the endpoint until this bit is cleared. A corresponding bit in `EP_ABORT_DONE` is set when it is safe to modify the buffer control register.' fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 - name: EP1_IN bit_offset: 2 bit_size: 1 - name: EP1_OUT bit_offset: 3 bit_size: 1 - name: EP2_IN bit_offset: 4 bit_size: 1 - name: EP2_OUT bit_offset: 5 bit_size: 1 - name: EP3_IN bit_offset: 6 bit_size: 1 - name: EP3_OUT bit_offset: 7 bit_size: 1 - name: EP4_IN bit_offset: 8 bit_size: 1 - name: EP4_OUT bit_offset: 9 bit_size: 1 - name: EP5_IN bit_offset: 10 bit_size: 1 - name: EP5_OUT bit_offset: 11 bit_size: 1 - name: EP6_IN bit_offset: 12 bit_size: 1 - name: EP6_OUT bit_offset: 13 bit_size: 1 - name: EP7_IN bit_offset: 14 bit_size: 1 - name: EP7_OUT bit_offset: 15 bit_size: 1 - name: EP8_IN bit_offset: 16 bit_size: 1 - name: EP8_OUT bit_offset: 17 bit_size: 1 - name: EP9_IN bit_offset: 18 bit_size: 1 - name: EP9_OUT bit_offset: 19 bit_size: 1 - name: EP10_IN bit_offset: 20 bit_size: 1 - name: EP10_OUT bit_offset: 21 bit_size: 1 - name: EP11_IN bit_offset: 22 bit_size: 1 - name: EP11_OUT bit_offset: 23 bit_size: 1 - name: EP12_IN bit_offset: 24 bit_size: 1 - name: EP12_OUT bit_offset: 25 bit_size: 1 - name: EP13_IN bit_offset: 26 bit_size: 1 - name: EP13_OUT bit_offset: 27 bit_size: 1 - name: EP14_IN bit_offset: 28 bit_size: 1 - name: EP14_OUT bit_offset: 29 bit_size: 1 - name: EP15_IN bit_offset: 30 bit_size: 1 - name: EP15_OUT bit_offset: 31 bit_size: 1 fieldset/EP_ABORT_DONE: description: 'Device only: Used in conjunction with `EP_ABORT`. Set once an endpoint is idle so the programmer knows it is safe to modify the buffer control register.' fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 - name: EP1_IN bit_offset: 2 bit_size: 1 - name: EP1_OUT bit_offset: 3 bit_size: 1 - name: EP2_IN bit_offset: 4 bit_size: 1 - name: EP2_OUT bit_offset: 5 bit_size: 1 - name: EP3_IN bit_offset: 6 bit_size: 1 - name: EP3_OUT bit_offset: 7 bit_size: 1 - name: EP4_IN bit_offset: 8 bit_size: 1 - name: EP4_OUT bit_offset: 9 bit_size: 1 - name: EP5_IN bit_offset: 10 bit_size: 1 - name: EP5_OUT bit_offset: 11 bit_size: 1 - name: EP6_IN bit_offset: 12 bit_size: 1 - name: EP6_OUT bit_offset: 13 bit_size: 1 - name: EP7_IN bit_offset: 14 bit_size: 1 - name: EP7_OUT bit_offset: 15 bit_size: 1 - name: EP8_IN bit_offset: 16 bit_size: 1 - name: EP8_OUT bit_offset: 17 bit_size: 1 - name: EP9_IN bit_offset: 18 bit_size: 1 - name: EP9_OUT bit_offset: 19 bit_size: 1 - name: EP10_IN bit_offset: 20 bit_size: 1 - name: EP10_OUT bit_offset: 21 bit_size: 1 - name: EP11_IN bit_offset: 22 bit_size: 1 - name: EP11_OUT bit_offset: 23 bit_size: 1 - name: EP12_IN bit_offset: 24 bit_size: 1 - name: EP12_OUT bit_offset: 25 bit_size: 1 - name: EP13_IN bit_offset: 26 bit_size: 1 - name: EP13_OUT bit_offset: 27 bit_size: 1 - name: EP14_IN bit_offset: 28 bit_size: 1 - name: EP14_OUT bit_offset: 29 bit_size: 1 - name: EP15_IN bit_offset: 30 bit_size: 1 - name: EP15_OUT bit_offset: 31 bit_size: 1 fieldset/EP_RX_ERROR: description: RX error count for each endpoint. Write to each field to reset the counter to 0. fields: - name: EP0_TRANSACTION bit_offset: 0 bit_size: 1 - name: EP0_SEQ bit_offset: 1 bit_size: 1 - name: EP1_TRANSACTION bit_offset: 2 bit_size: 1 - name: EP1_SEQ bit_offset: 3 bit_size: 1 - name: EP2_TRANSACTION bit_offset: 4 bit_size: 1 - name: EP2_SEQ bit_offset: 5 bit_size: 1 - name: EP3_TRANSACTION bit_offset: 6 bit_size: 1 - name: EP3_SEQ bit_offset: 7 bit_size: 1 - name: EP4_TRANSACTION bit_offset: 8 bit_size: 1 - name: EP4_SEQ bit_offset: 9 bit_size: 1 - name: EP5_TRANSACTION bit_offset: 10 bit_size: 1 - name: EP5_SEQ bit_offset: 11 bit_size: 1 - name: EP6_TRANSACTION bit_offset: 12 bit_size: 1 - name: EP6_SEQ bit_offset: 13 bit_size: 1 - name: EP7_TRANSACTION bit_offset: 14 bit_size: 1 - name: EP7_SEQ bit_offset: 15 bit_size: 1 - name: EP8_TRANSACTION bit_offset: 16 bit_size: 1 - name: EP8_SEQ bit_offset: 17 bit_size: 1 - name: EP9_TRANSACTION bit_offset: 18 bit_size: 1 - name: EP9_SEQ bit_offset: 19 bit_size: 1 - name: EP10_TRANSACTION bit_offset: 20 bit_size: 1 - name: EP10_SEQ bit_offset: 21 bit_size: 1 - name: EP11_TRANSACTION bit_offset: 22 bit_size: 1 - name: EP11_SEQ bit_offset: 23 bit_size: 1 - name: EP12_TRANSACTION bit_offset: 24 bit_size: 1 - name: EP12_SEQ bit_offset: 25 bit_size: 1 - name: EP13_TRANSACTION bit_offset: 26 bit_size: 1 - name: EP13_SEQ bit_offset: 27 bit_size: 1 - name: EP14_TRANSACTION bit_offset: 28 bit_size: 1 - name: EP14_SEQ bit_offset: 29 bit_size: 1 - name: EP15_TRANSACTION bit_offset: 30 bit_size: 1 - name: EP15_SEQ bit_offset: 31 bit_size: 1 fieldset/EP_STALL_ARM: description: 'Device: this bit must be set in conjunction with the `STALL` bit in the buffer control register to send a STALL on EP0. The device controller clears these bits when a SETUP packet is received because the USB spec requires that a STALL condition is cleared when a SETUP packet is received.' fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 fieldset/EP_STATUS_STALL_NAK: description: 'Device: bits are set when the `IRQ_ON_NAK` or `IRQ_ON_STALL` bits are set. For EP0 this comes from `SIE_CTRL`. For all other endpoints it comes from the endpoint control register.' fields: - name: EP0_IN bit_offset: 0 bit_size: 1 - name: EP0_OUT bit_offset: 1 bit_size: 1 - name: EP1_IN bit_offset: 2 bit_size: 1 - name: EP1_OUT bit_offset: 3 bit_size: 1 - name: EP2_IN bit_offset: 4 bit_size: 1 - name: EP2_OUT bit_offset: 5 bit_size: 1 - name: EP3_IN bit_offset: 6 bit_size: 1 - name: EP3_OUT bit_offset: 7 bit_size: 1 - name: EP4_IN bit_offset: 8 bit_size: 1 - name: EP4_OUT bit_offset: 9 bit_size: 1 - name: EP5_IN bit_offset: 10 bit_size: 1 - name: EP5_OUT bit_offset: 11 bit_size: 1 - name: EP6_IN bit_offset: 12 bit_size: 1 - name: EP6_OUT bit_offset: 13 bit_size: 1 - name: EP7_IN bit_offset: 14 bit_size: 1 - name: EP7_OUT bit_offset: 15 bit_size: 1 - name: EP8_IN bit_offset: 16 bit_size: 1 - name: EP8_OUT bit_offset: 17 bit_size: 1 - name: EP9_IN bit_offset: 18 bit_size: 1 - name: EP9_OUT bit_offset: 19 bit_size: 1 - name: EP10_IN bit_offset: 20 bit_size: 1 - name: EP10_OUT bit_offset: 21 bit_size: 1 - name: EP11_IN bit_offset: 22 bit_size: 1 - name: EP11_OUT bit_offset: 23 bit_size: 1 - name: EP12_IN bit_offset: 24 bit_size: 1 - name: EP12_OUT bit_offset: 25 bit_size: 1 - name: EP13_IN bit_offset: 26 bit_size: 1 - name: EP13_OUT bit_offset: 27 bit_size: 1 - name: EP14_IN bit_offset: 28 bit_size: 1 - name: EP14_OUT bit_offset: 29 bit_size: 1 - name: EP15_IN bit_offset: 30 bit_size: 1 - name: EP15_OUT bit_offset: 31 bit_size: 1 fieldset/EP_TX_ERROR: description: TX error count for each endpoint. Write to each field to reset the counter to 0. fields: - name: EP0 bit_offset: 0 bit_size: 2 - name: EP1 bit_offset: 2 bit_size: 2 - name: EP2 bit_offset: 4 bit_size: 2 - name: EP3 bit_offset: 6 bit_size: 2 - name: EP4 bit_offset: 8 bit_size: 2 - name: EP5 bit_offset: 10 bit_size: 2 - name: EP6 bit_offset: 12 bit_size: 2 - name: EP7 bit_offset: 14 bit_size: 2 - name: EP8 bit_offset: 16 bit_size: 2 - name: EP9 bit_offset: 18 bit_size: 2 - name: EP10 bit_offset: 20 bit_size: 2 - name: EP11 bit_offset: 22 bit_size: 2 - name: EP12 bit_offset: 24 bit_size: 2 - name: EP13 bit_offset: 26 bit_size: 2 - name: EP14 bit_offset: 28 bit_size: 2 - name: EP15 bit_offset: 30 bit_size: 2 fieldset/INTE: description: Interrupt Enable. fields: - name: HOST_CONN_DIS description: 'Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED.' bit_offset: 0 bit_size: 1 - name: HOST_RESUME description: 'Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME.' bit_offset: 1 bit_size: 1 - name: HOST_SOF description: 'Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD.' bit_offset: 2 bit_size: 1 - name: TRANS_COMPLETE description: Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. bit_offset: 3 bit_size: 1 - name: BUFF_STATUS description: Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. bit_offset: 4 bit_size: 1 - name: ERROR_DATA_SEQ description: 'Source: SIE_STATUS.DATA_SEQ_ERROR.' bit_offset: 5 bit_size: 1 - name: ERROR_RX_TIMEOUT description: 'Source: SIE_STATUS.RX_TIMEOUT.' bit_offset: 6 bit_size: 1 - name: ERROR_RX_OVERFLOW description: 'Source: SIE_STATUS.RX_OVERFLOW.' bit_offset: 7 bit_size: 1 - name: ERROR_BIT_STUFF description: 'Source: SIE_STATUS.BIT_STUFF_ERROR.' bit_offset: 8 bit_size: 1 - name: ERROR_CRC description: 'Source: SIE_STATUS.CRC_ERROR.' bit_offset: 9 bit_size: 1 - name: STALL description: 'Source: SIE_STATUS.STALL_REC.' bit_offset: 10 bit_size: 1 - name: VBUS_DETECT description: 'Source: SIE_STATUS.VBUS_DETECTED.' bit_offset: 11 bit_size: 1 - name: BUS_RESET description: 'Source: SIE_STATUS.BUS_RESET.' bit_offset: 12 bit_size: 1 - name: DEV_CONN_DIS description: Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED. bit_offset: 13 bit_size: 1 - name: DEV_SUSPEND description: Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED. bit_offset: 14 bit_size: 1 - name: DEV_RESUME_FROM_HOST description: Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME. bit_offset: 15 bit_size: 1 - name: SETUP_REQ description: 'Device. Source: SIE_STATUS.SETUP_REC.' bit_offset: 16 bit_size: 1 - name: DEV_SOF description: Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD. bit_offset: 17 bit_size: 1 - name: ABORT_DONE description: Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. bit_offset: 18 bit_size: 1 - name: EP_STALL_NAK description: Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. bit_offset: 19 bit_size: 1 - name: RX_SHORT_PACKET description: 'Source: SIE_STATUS.RX_SHORT_PACKET.' bit_offset: 20 bit_size: 1 - name: ENDPOINT_ERROR description: 'Source: SIE_STATUS.ENDPOINT_ERROR.' bit_offset: 21 bit_size: 1 - name: DEV_SM_WATCHDOG_FIRED description: 'Source: DEV_SM_WATCHDOG.FIRED.' bit_offset: 22 bit_size: 1 - name: EPX_STOPPED_ON_NAK description: 'Source: NAK_POLL.EPX_STOPPED_ON_NAK.' bit_offset: 23 bit_size: 1 fieldset/INTF: description: Interrupt Force. fields: - name: HOST_CONN_DIS description: 'Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED.' bit_offset: 0 bit_size: 1 - name: HOST_RESUME description: 'Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME.' bit_offset: 1 bit_size: 1 - name: HOST_SOF description: 'Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD.' bit_offset: 2 bit_size: 1 - name: TRANS_COMPLETE description: Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. bit_offset: 3 bit_size: 1 - name: BUFF_STATUS description: Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. bit_offset: 4 bit_size: 1 - name: ERROR_DATA_SEQ description: 'Source: SIE_STATUS.DATA_SEQ_ERROR.' bit_offset: 5 bit_size: 1 - name: ERROR_RX_TIMEOUT description: 'Source: SIE_STATUS.RX_TIMEOUT.' bit_offset: 6 bit_size: 1 - name: ERROR_RX_OVERFLOW description: 'Source: SIE_STATUS.RX_OVERFLOW.' bit_offset: 7 bit_size: 1 - name: ERROR_BIT_STUFF description: 'Source: SIE_STATUS.BIT_STUFF_ERROR.' bit_offset: 8 bit_size: 1 - name: ERROR_CRC description: 'Source: SIE_STATUS.CRC_ERROR.' bit_offset: 9 bit_size: 1 - name: STALL description: 'Source: SIE_STATUS.STALL_REC.' bit_offset: 10 bit_size: 1 - name: VBUS_DETECT description: 'Source: SIE_STATUS.VBUS_DETECTED.' bit_offset: 11 bit_size: 1 - name: BUS_RESET description: 'Source: SIE_STATUS.BUS_RESET.' bit_offset: 12 bit_size: 1 - name: DEV_CONN_DIS description: Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED. bit_offset: 13 bit_size: 1 - name: DEV_SUSPEND description: Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED. bit_offset: 14 bit_size: 1 - name: DEV_RESUME_FROM_HOST description: Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME. bit_offset: 15 bit_size: 1 - name: SETUP_REQ description: 'Device. Source: SIE_STATUS.SETUP_REC.' bit_offset: 16 bit_size: 1 - name: DEV_SOF description: Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD. bit_offset: 17 bit_size: 1 - name: ABORT_DONE description: Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. bit_offset: 18 bit_size: 1 - name: EP_STALL_NAK description: Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. bit_offset: 19 bit_size: 1 - name: RX_SHORT_PACKET description: 'Source: SIE_STATUS.RX_SHORT_PACKET.' bit_offset: 20 bit_size: 1 - name: ENDPOINT_ERROR description: 'Source: SIE_STATUS.ENDPOINT_ERROR.' bit_offset: 21 bit_size: 1 - name: DEV_SM_WATCHDOG_FIRED description: 'Source: DEV_SM_WATCHDOG.FIRED.' bit_offset: 22 bit_size: 1 - name: EPX_STOPPED_ON_NAK description: 'Source: NAK_POLL.EPX_STOPPED_ON_NAK.' bit_offset: 23 bit_size: 1 fieldset/INTR: description: Raw Interrupts. fields: - name: HOST_CONN_DIS description: 'Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED.' bit_offset: 0 bit_size: 1 - name: HOST_RESUME description: 'Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME.' bit_offset: 1 bit_size: 1 - name: HOST_SOF description: 'Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD.' bit_offset: 2 bit_size: 1 - name: TRANS_COMPLETE description: Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. bit_offset: 3 bit_size: 1 - name: BUFF_STATUS description: Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. bit_offset: 4 bit_size: 1 - name: ERROR_DATA_SEQ description: 'Source: SIE_STATUS.DATA_SEQ_ERROR.' bit_offset: 5 bit_size: 1 - name: ERROR_RX_TIMEOUT description: 'Source: SIE_STATUS.RX_TIMEOUT.' bit_offset: 6 bit_size: 1 - name: ERROR_RX_OVERFLOW description: 'Source: SIE_STATUS.RX_OVERFLOW.' bit_offset: 7 bit_size: 1 - name: ERROR_BIT_STUFF description: 'Source: SIE_STATUS.BIT_STUFF_ERROR.' bit_offset: 8 bit_size: 1 - name: ERROR_CRC description: 'Source: SIE_STATUS.CRC_ERROR.' bit_offset: 9 bit_size: 1 - name: STALL description: 'Source: SIE_STATUS.STALL_REC.' bit_offset: 10 bit_size: 1 - name: VBUS_DETECT description: 'Source: SIE_STATUS.VBUS_DETECTED.' bit_offset: 11 bit_size: 1 - name: BUS_RESET description: 'Source: SIE_STATUS.BUS_RESET.' bit_offset: 12 bit_size: 1 - name: DEV_CONN_DIS description: Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED. bit_offset: 13 bit_size: 1 - name: DEV_SUSPEND description: Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED. bit_offset: 14 bit_size: 1 - name: DEV_RESUME_FROM_HOST description: Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME. bit_offset: 15 bit_size: 1 - name: SETUP_REQ description: 'Device. Source: SIE_STATUS.SETUP_REC.' bit_offset: 16 bit_size: 1 - name: DEV_SOF description: Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD. bit_offset: 17 bit_size: 1 - name: ABORT_DONE description: Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. bit_offset: 18 bit_size: 1 - name: EP_STALL_NAK description: Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. bit_offset: 19 bit_size: 1 - name: RX_SHORT_PACKET description: 'Source: SIE_STATUS.RX_SHORT_PACKET.' bit_offset: 20 bit_size: 1 - name: ENDPOINT_ERROR description: 'Source: SIE_STATUS.ENDPOINT_ERROR.' bit_offset: 21 bit_size: 1 - name: DEV_SM_WATCHDOG_FIRED description: 'Source: DEV_SM_WATCHDOG.FIRED.' bit_offset: 22 bit_size: 1 - name: EPX_STOPPED_ON_NAK description: 'Source: NAK_POLL.EPX_STOPPED_ON_NAK.' bit_offset: 23 bit_size: 1 fieldset/INTS: description: Interrupt status after masking & forcing. fields: - name: HOST_CONN_DIS description: 'Host: raised when a device is connected or disconnected (i.e. when SIE_STATUS.SPEED changes). Cleared by writing to SIE_STATUS.SPEED.' bit_offset: 0 bit_size: 1 - name: HOST_RESUME description: 'Host: raised when a device wakes up the host. Cleared by writing to SIE_STATUS.RESUME.' bit_offset: 1 bit_size: 1 - name: HOST_SOF description: 'Host: raised every time the host sends a SOF (Start of Frame). Cleared by reading SOF_RD.' bit_offset: 2 bit_size: 1 - name: TRANS_COMPLETE description: Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by writing to this bit. bit_offset: 3 bit_size: 1 - name: BUFF_STATUS description: Raised when any bit in BUFF_STATUS is set. Clear by clearing all bits in BUFF_STATUS. bit_offset: 4 bit_size: 1 - name: ERROR_DATA_SEQ description: 'Source: SIE_STATUS.DATA_SEQ_ERROR.' bit_offset: 5 bit_size: 1 - name: ERROR_RX_TIMEOUT description: 'Source: SIE_STATUS.RX_TIMEOUT.' bit_offset: 6 bit_size: 1 - name: ERROR_RX_OVERFLOW description: 'Source: SIE_STATUS.RX_OVERFLOW.' bit_offset: 7 bit_size: 1 - name: ERROR_BIT_STUFF description: 'Source: SIE_STATUS.BIT_STUFF_ERROR.' bit_offset: 8 bit_size: 1 - name: ERROR_CRC description: 'Source: SIE_STATUS.CRC_ERROR.' bit_offset: 9 bit_size: 1 - name: STALL description: 'Source: SIE_STATUS.STALL_REC.' bit_offset: 10 bit_size: 1 - name: VBUS_DETECT description: 'Source: SIE_STATUS.VBUS_DETECTED.' bit_offset: 11 bit_size: 1 - name: BUS_RESET description: 'Source: SIE_STATUS.BUS_RESET.' bit_offset: 12 bit_size: 1 - name: DEV_CONN_DIS description: Set when the device connection state changes. Cleared by writing to SIE_STATUS.CONNECTED. bit_offset: 13 bit_size: 1 - name: DEV_SUSPEND description: Set when the device suspend state changes. Cleared by writing to SIE_STATUS.SUSPENDED. bit_offset: 14 bit_size: 1 - name: DEV_RESUME_FROM_HOST description: Set when the device receives a resume from the host. Cleared by writing to SIE_STATUS.RESUME. bit_offset: 15 bit_size: 1 - name: SETUP_REQ description: 'Device. Source: SIE_STATUS.SETUP_REC.' bit_offset: 16 bit_size: 1 - name: DEV_SOF description: Set every time the device receives a SOF (Start of Frame) packet. Cleared by reading SOF_RD. bit_offset: 17 bit_size: 1 - name: ABORT_DONE description: Raised when any bit in ABORT_DONE is set. Clear by clearing all bits in ABORT_DONE. bit_offset: 18 bit_size: 1 - name: EP_STALL_NAK description: Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by clearing all bits in EP_STATUS_STALL_NAK. bit_offset: 19 bit_size: 1 - name: RX_SHORT_PACKET description: 'Source: SIE_STATUS.RX_SHORT_PACKET.' bit_offset: 20 bit_size: 1 - name: ENDPOINT_ERROR description: 'Source: SIE_STATUS.ENDPOINT_ERROR.' bit_offset: 21 bit_size: 1 - name: DEV_SM_WATCHDOG_FIRED description: 'Source: DEV_SM_WATCHDOG.FIRED.' bit_offset: 22 bit_size: 1 - name: EPX_STOPPED_ON_NAK description: 'Source: NAK_POLL.EPX_STOPPED_ON_NAK.' bit_offset: 23 bit_size: 1 fieldset/INT_EP_CTRL: description: interrupt endpoint control register. fields: - name: INT_EP_ACTIVE description: 'Host: Enable interrupt endpoint 1 -> 15.' bit_offset: 1 bit_size: 15 fieldset/LINESTATE_TUNING: description: Used for debug only. fields: - name: RCV_DELAY description: Device - register the received data to account for hub bit dribble before EOP. Only affects certain hubs. bit_offset: 0 bit_size: 1 - name: LINESTATE_DELAY description: Device/Host - add an extra 1-bit debounce of linestate sampling. bit_offset: 1 bit_size: 1 - name: MULTI_HUB_FIX description: Host - increase inter-packet and turnaround timeouts to accommodate worst-case hub delays. bit_offset: 2 bit_size: 1 - name: DEV_BUFF_CONTROL_DOUBLE_READ_FIX description: Device - the controller FSM performs two reads of the buffer status memory address to avoid sampling metastable data. An enabled buffer is only used if both reads match. bit_offset: 3 bit_size: 1 - name: SIE_RX_BITSTUFF_FIX description: RX - when a bitstuff error is signalled by rx_dasm, unconditionally terminate RX decode to avoid a hang during certain packet phases. bit_offset: 4 bit_size: 1 - name: SIE_RX_CHATTER_SE0_FIX description: RX - when recovering from line chatter or bitstuff errors, treat SE0 as the end of chatter as well as 8 consecutive idle bits. bit_offset: 5 bit_size: 1 - name: DEV_RX_ERR_QUIESCE description: Device - suppress repeated errors until the device FSM is next in the process of decoding an inbound packet. bit_offset: 6 bit_size: 1 - name: DEV_LS_WAKE_FIX description: Device - exit suspend on any non-idle signalling, not qualified with a 1ms timer. bit_offset: 7 bit_size: 1 - name: SPARE_FIX bit_offset: 8 bit_size: 4 fieldset/MAIN_CTRL: description: Main control register. fields: - name: CONTROLLER_EN description: Enable controller. bit_offset: 0 bit_size: 1 - name: HOST_NDEVICE description: Device mode = 0, Host mode = 1. bit_offset: 1 bit_size: 1 - name: PHY_ISO description: Isolates USB phy after controller power-up Remove isolation once software has configured the controller Not isolated = 0, Isolated = 1. bit_offset: 2 bit_size: 1 - name: SIM_TIMING description: Reduced timings for simulation. bit_offset: 31 bit_size: 1 fieldset/NAK_POLL: description: Used by the host controller. Sets the wait time in microseconds before trying again if the device replies with a NAK. fields: - name: DELAY_LS description: NAK polling interval for a low speed device. bit_offset: 0 bit_size: 10 - name: RETRY_COUNT_LO description: Bits 5:0 of nak_retry_count. bit_offset: 10 bit_size: 6 - name: DELAY_FS description: NAK polling interval for a full speed device. bit_offset: 16 bit_size: 10 - name: STOP_EPX_ON_NAK description: Stop polling epx when a nak is received. bit_offset: 26 bit_size: 1 - name: EPX_STOPPED_ON_NAK description: EPX polling has stopped because a nak was received. bit_offset: 27 bit_size: 1 - name: RETRY_COUNT_HI description: Bits 9:6 of nak_retry count. bit_offset: 28 bit_size: 4 fieldset/SIE_CTRL: description: SIE control register. fields: - name: START_TRANS description: 'Host: Start transaction.' bit_offset: 0 bit_size: 1 - name: SEND_SETUP description: 'Host: Send Setup packet.' bit_offset: 1 bit_size: 1 - name: SEND_DATA description: 'Host: Send transaction (OUT from host).' bit_offset: 2 bit_size: 1 - name: RECEIVE_DATA description: 'Host: Receive transaction (IN to host).' bit_offset: 3 bit_size: 1 - name: STOP_TRANS description: 'Host: Stop transaction.' bit_offset: 4 bit_size: 1 - name: PREAMBLE_EN description: 'Host: Preable enable for LS device on FS hub.' bit_offset: 6 bit_size: 1 - name: SOF_SYNC description: 'Host: Delay packet(s) until after SOF.' bit_offset: 8 bit_size: 1 - name: SOF_EN description: 'Host: Enable SOF generation (for full speed bus).' bit_offset: 9 bit_size: 1 - name: KEEP_ALIVE_EN description: 'Host: Enable keep alive packet (for low speed bus).' bit_offset: 10 bit_size: 1 - name: VBUS_EN description: 'Host: Enable VBUS.' bit_offset: 11 bit_size: 1 - name: RESUME description: 'Device: Remote wakeup. Device can initiate its own resume after suspend.' bit_offset: 12 bit_size: 1 - name: RESET_BUS description: 'Host: Reset bus.' bit_offset: 13 bit_size: 1 - name: PULLDOWN_EN description: 'Host: Enable pull down resistors.' bit_offset: 15 bit_size: 1 - name: PULLUP_EN description: 'Device: Enable pull up resistor.' bit_offset: 16 bit_size: 1 - name: RPU_OPT description: 'Device: Pull-up strength (0=1K2, 1=2k3).' bit_offset: 17 bit_size: 1 - name: TRANSCEIVER_PD description: Power down bus transceiver. bit_offset: 18 bit_size: 1 - name: EP0_STOP_ON_SHORT_PACKET description: 'Device: Stop EP0 on a short packet.' bit_offset: 19 bit_size: 1 - name: DIRECT_DM description: Direct control of DM. bit_offset: 24 bit_size: 1 - name: DIRECT_DP description: Direct control of DP. bit_offset: 25 bit_size: 1 - name: DIRECT_EN description: Direct bus drive enable. bit_offset: 26 bit_size: 1 - name: EP0_INT_NAK description: 'Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a NAK.' bit_offset: 27 bit_size: 1 - name: EP0_INT_2BUF description: 'Device: Set bit in BUFF_STATUS for every 2 buffers completed on EP0.' bit_offset: 28 bit_size: 1 - name: EP0_INT_1BUF description: 'Device: Set bit in BUFF_STATUS for every buffer completed on EP0.' bit_offset: 29 bit_size: 1 - name: EP0_DOUBLE_BUF description: 'Device: EP0 single buffered = 0, double buffered = 1.' bit_offset: 30 bit_size: 1 - name: EP0_INT_STALL description: 'Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a STALL.' bit_offset: 31 bit_size: 1 fieldset/SIE_STATUS: description: SIE status register. fields: - name: VBUS_DETECTED description: 'Device: VBUS Detected.' bit_offset: 0 bit_size: 1 - name: LINE_STATE description: USB bus line state. bit_offset: 2 bit_size: 2 - name: SUSPENDED description: Bus in suspended state. Valid for device. Device will go into suspend if neither Keep Alive / SOF frames are enabled. bit_offset: 4 bit_size: 1 - name: SPEED description: 'Host: device speed. Disconnected = 00, LS = 01, FS = 10.' bit_offset: 8 bit_size: 2 - name: VBUS_OVER_CURR description: VBUS over current detected. bit_offset: 10 bit_size: 1 - name: RESUME description: 'Host: Device has initiated a remote resume. Device: host has initiated a resume.' bit_offset: 11 bit_size: 1 - name: RX_SHORT_PACKET description: 'Device or Host has received a short packet. This is when the data received is less than configured in the buffer control register. Device: If using double buffered mode on device the buffer select will not be toggled after writing status back to the buffer control register. This is to prevent any further transactions on that endpoint until the user has reset the buffer control registers. Host: the current transfer will be stopped early.' bit_offset: 12 bit_size: 1 - name: CONNECTED description: 'Device: connected.' bit_offset: 16 bit_size: 1 - name: SETUP_REC description: 'Device: Setup packet received.' bit_offset: 17 bit_size: 1 - name: TRANS_COMPLETE description: 'Transaction complete. Raised by device if: * An IN or OUT packet is sent with the `LAST_BUFF` bit set in the buffer control register Raised by host if: * A setup packet is sent when no data in or data out transaction follows * An IN packet is received and the `LAST_BUFF` bit is set in the buffer control register * An IN packet is received with zero length * An OUT packet is sent and the `LAST_BUFF` bit is set.' bit_offset: 18 bit_size: 1 - name: BUS_RESET description: 'Device: bus reset received.' bit_offset: 19 bit_size: 1 - name: ENDPOINT_ERROR description: An endpoint has encountered an error. Read the ep_rx_error and ep_tx_error registers to find out which endpoint had an error. bit_offset: 23 bit_size: 1 - name: CRC_ERROR description: CRC Error. Raised by the Serial RX engine. bit_offset: 24 bit_size: 1 - name: BIT_STUFF_ERROR description: Bit Stuff Error. Raised by the Serial RX engine. bit_offset: 25 bit_size: 1 - name: RX_OVERFLOW description: RX overflow is raised by the Serial RX engine if the incoming data is too fast. bit_offset: 26 bit_size: 1 - name: RX_TIMEOUT description: RX timeout is raised by both the host and device if an ACK is not received in the maximum time specified by the USB spec. bit_offset: 27 bit_size: 1 - name: NAK_REC description: 'Host: NAK received.' bit_offset: 28 bit_size: 1 - name: STALL_REC description: 'Host: STALL received.' bit_offset: 29 bit_size: 1 - name: ACK_REC description: ACK received. Raised by both host and device. bit_offset: 30 bit_size: 1 - name: DATA_SEQ_ERROR description: 'Data Sequence Error. The device can raise a sequence error in the following conditions: * A SETUP packet is received followed by a DATA1 packet (data phase should always be DATA0) * An OUT packet is received from the host but doesn''t match the data pid in the buffer control register read from DPSRAM The host can raise a data sequence error in the following conditions: * An IN packet from the device has the wrong data PID.' bit_offset: 31 bit_size: 1 fieldset/SM_STATE: fields: - name: STATE bit_offset: 0 bit_size: 5 - name: BC_STATE bit_offset: 5 bit_size: 3 - name: RX_DASM bit_offset: 8 bit_size: 4 fieldset/SOF_RD: description: Read the last SOF (Start of Frame) frame number seen. In device mode the last SOF received from the host. In host mode the last SOF sent by the host. fields: - name: COUNT bit_offset: 0 bit_size: 11 fieldset/SOF_TIMESTAMP_LAST: description: Device only. Value of free-running PHY clock counter @48MHz when last SOF event occurred. fields: - name: SOF_TIMESTAMP_LAST bit_offset: 0 bit_size: 21 fieldset/SOF_TIMESTAMP_RAW: description: Device only. Raw value of free-running PHY clock counter @48MHz. Used to calculate time between SOF events. fields: - name: SOF_TIMESTAMP_RAW bit_offset: 0 bit_size: 21 fieldset/SOF_WR: description: Set the SOF (Start of Frame) frame number in the host controller. The SOF packet is sent every 1ms and the host will increment the frame number by 1 each time. fields: - name: COUNT bit_offset: 0 bit_size: 11 fieldset/USBPHY_DIRECT: description: This register allows for direct control of the USB phy. Use in conjunction with usbphy_direct_override register to enable each override bit. fields: - name: DP_PULLUP_HISEL description: Enable the second DP pull up resistor. 0 - Pull = Rpu2; 1 - Pull = Rpu1 + Rpu2. bit_offset: 0 bit_size: 1 - name: DP_PULLUP_EN description: DP pull up enable. bit_offset: 1 bit_size: 1 - name: DP_PULLDN_EN description: DP pull down enable. bit_offset: 2 bit_size: 1 - name: DM_PULLUP_HISEL description: Enable the second DM pull up resistor. 0 - Pull = Rpu2; 1 - Pull = Rpu1 + Rpu2. bit_offset: 4 bit_size: 1 - name: DM_PULLUP_EN description: DM pull up enable. bit_offset: 5 bit_size: 1 - name: DM_PULLDN_EN description: DM pull down enable. bit_offset: 6 bit_size: 1 - name: TX_DP_OE description: Output enable. If TX_DIFFMODE=1, OE for DPP/DPM diff pair. 0 - DPP/DPM in Hi-Z state; 1 - DPP/DPM driving If TX_DIFFMODE=0, OE for DPP only. 0 - DPP in Hi-Z state; 1 - DPP driving. bit_offset: 8 bit_size: 1 - name: TX_DM_OE description: Output enable. If TX_DIFFMODE=1, Ignored. If TX_DIFFMODE=0, OE for DPM only. 0 - DPM in Hi-Z state; 1 - DPM driving. bit_offset: 9 bit_size: 1 - name: TX_DP description: Output data. If TX_DIFFMODE=1, Drives DPP/DPM diff pair. TX_DP_OE=1 to enable drive. DPP=TX_DP, DPM=~TX_DP If TX_DIFFMODE=0, Drives DPP only. TX_DP_OE=1 to enable drive. DPP=TX_DP. bit_offset: 10 bit_size: 1 - name: TX_DM description: Output data. TX_DIFFMODE=1, Ignored TX_DIFFMODE=0, Drives DPM only. TX_DM_OE=1 to enable drive. DPM=TX_DM. bit_offset: 11 bit_size: 1 - name: RX_PD description: RX power down override (if override enable is set). 1 = powered down. bit_offset: 12 bit_size: 1 - name: TX_PD description: TX power down override (if override enable is set). 1 = powered down. bit_offset: 13 bit_size: 1 - name: TX_FSSLEW description: 'TX_FSSLEW=0: Low speed slew rate TX_FSSLEW=1: Full speed slew rate.' bit_offset: 14 bit_size: 1 - name: TX_DIFFMODE description: 'TX_DIFFMODE=0: Single ended mode TX_DIFFMODE=1: Differential drive mode (TX_DM, TX_DM_OE ignored).' bit_offset: 15 bit_size: 1 - name: RX_DD description: Differential RX. bit_offset: 16 bit_size: 1 - name: RX_DP description: DPP pin state. bit_offset: 17 bit_size: 1 - name: RX_DM description: DPM pin state. bit_offset: 18 bit_size: 1 - name: DP_OVCN description: DP overcurrent. bit_offset: 19 bit_size: 1 - name: DM_OVCN description: DM overcurrent. bit_offset: 20 bit_size: 1 - name: DP_OVV description: DP over voltage. bit_offset: 21 bit_size: 1 - name: DM_OVV description: DM over voltage. bit_offset: 22 bit_size: 1 - name: RX_DD_OVERRIDE description: Override rx_dd value into controller. bit_offset: 23 bit_size: 1 - name: RX_DP_OVERRIDE description: Override rx_dp value into controller. bit_offset: 24 bit_size: 1 - name: RX_DM_OVERRIDE description: Override rx_dm value into controller. bit_offset: 25 bit_size: 1 fieldset/USBPHY_DIRECT_OVERRIDE: description: Override enable for each control in usbphy_direct. fields: - name: DP_PULLUP_HISEL_OVERRIDE_EN bit_offset: 0 bit_size: 1 - name: DM_PULLUP_HISEL_OVERRIDE_EN bit_offset: 1 bit_size: 1 - name: DP_PULLUP_EN_OVERRIDE_EN bit_offset: 2 bit_size: 1 - name: DP_PULLDN_EN_OVERRIDE_EN bit_offset: 3 bit_size: 1 - name: DM_PULLDN_EN_OVERRIDE_EN bit_offset: 4 bit_size: 1 - name: TX_DP_OE_OVERRIDE_EN bit_offset: 5 bit_size: 1 - name: TX_DM_OE_OVERRIDE_EN bit_offset: 6 bit_size: 1 - name: TX_DP_OVERRIDE_EN bit_offset: 7 bit_size: 1 - name: TX_DM_OVERRIDE_EN bit_offset: 8 bit_size: 1 - name: RX_PD_OVERRIDE_EN bit_offset: 9 bit_size: 1 - name: TX_PD_OVERRIDE_EN bit_offset: 10 bit_size: 1 - name: TX_FSSLEW_OVERRIDE_EN bit_offset: 11 bit_size: 1 - name: DM_PULLUP_OVERRIDE_EN bit_offset: 12 bit_size: 1 - name: TX_DIFFMODE_OVERRIDE_EN bit_offset: 15 bit_size: 1 - name: RX_DD_OVERRIDE_EN bit_offset: 16 bit_size: 1 - name: RX_DP_OVERRIDE_EN bit_offset: 17 bit_size: 1 - name: RX_DM_OVERRIDE_EN bit_offset: 18 bit_size: 1 fieldset/USBPHY_TRIM: description: Used to adjust trim values of USB phy pull down resistors. fields: - name: DP_PULLDN_TRIM description: Value to drive to USB PHY DP pulldown resistor trim control Experimental data suggests that the reset value will work, but this register allows adjustment if required. bit_offset: 0 bit_size: 5 - name: DM_PULLDN_TRIM description: Value to drive to USB PHY DM pulldown resistor trim control Experimental data suggests that the reset value will work, but this register allows adjustment if required. bit_offset: 8 bit_size: 5 fieldset/USB_MUXING: description: Where to connect the USB controller. Should be to_phy by default. fields: - name: TO_PHY bit_offset: 0 bit_size: 1 - name: TO_EXTPHY bit_offset: 1 bit_size: 1 - name: TO_DIGITAL_PAD bit_offset: 2 bit_size: 1 - name: SOFTCON bit_offset: 3 bit_size: 1 - name: USBPHY_AS_GPIO description: Use the usb DP and DM pins as GPIO pins instead of connecting them to the USB controller. bit_offset: 4 bit_size: 1 - name: SWAP_DPDM description: Swap the USB PHY DP and DM pins and all related controls and flip receive differential data. Can be used to switch USB DP/DP on the PCB. This is done at a low level so overrides all other controls. bit_offset: 31 bit_size: 1 fieldset/USB_PWR: description: Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO. Set the value of the override and then the override enable to switch over to the override value. fields: - name: VBUS_EN bit_offset: 0 bit_size: 1 - name: VBUS_EN_OVERRIDE_EN bit_offset: 1 bit_size: 1 - name: VBUS_DETECT bit_offset: 2 bit_size: 1 - name: VBUS_DETECT_OVERRIDE_EN bit_offset: 3 bit_size: 1 - name: OVERCURR_DETECT bit_offset: 4 bit_size: 1 - name: OVERCURR_DETECT_EN bit_offset: 5 bit_size: 1