GUCTL (USB3_XHCI) Register

Zynq UltraScale+ Devices Register Reference (UG1087)

Document ID
UG1087
Release Date
2024-03-13
Revision
1.10

GUCTL (USB3_XHCI) Register Description

Register NameGUCTL
Offset Address0x000000C12C
Absolute Address 0x00FE20C12C (USB3_0_XHCI)
0x00FE30C12C (USB3_1_XHCI)
Width32
TypemixedMixed types. See bit-field details.
Reset Value0x00000000
DescriptionGlobal User Control Register:
This register provides a few options for the software to control the core behavior in the Host mode. Most of the options are used to improve host inter-operability with different devices.

GUCTL (USB3_XHCI) Register Bit-Field Summary

Field NameBitsTypeReset ValueDescription
REFCLKPER31:22rwNormal read/write0REFCLKPER
This field indicates in terms of nano seconds the period of ref_clk. The default value of this register is set to h8 (8ns/125 MHz).
This field needs to be updated during power-on initialization, if GCTL.SOFITPSYNC or GFLADJ.GFLADJ_REFCLK_LPM_SEL is set to 1. The programmable maximum value is 62ns, and the minimum value is 8ns.
You must use a reference clock with a period that is an integer multiple, so that ITP can meet the jitter margin of 32ns. The allowable ref_clk frequencies whose period is not integer multiples are 16/17/19.2/24/39.7MHz.
This field must not be set to 0 at any time. If you never plan to use this feature, then set this field to h8, the default value.
NoExtrDl21rwNormal read/write0No Extra Delay Between SOF and the First Packet(NoExtrDl)
Some HS devices misbehave when the host sends a packet immediately after a SOF. However, adding an extra delay between a SOF and the first packet can reduce the USB data rate and performance.
This bit is used to control whether the host must wait for 2 microseconds before it sends the first packet after a SOF, or not. User can set this bit to one to improve the performance if those problematic devices are not a concern in the users host environment.
- 1b0: Host waits for 2 microseconds after a SOF before it sends the first USB packet.
- 1b1: Host doesnt wait after a SOF before it sends the first USB packet.
Reserved20:18roRead-only0x0Reserved
SprsCtrlTransEn17rwNormal read/write0Sparse Control Transaction Enable
Some devices are slow in responding to Control transfers. Scheduling multiple transactions in one microframe/frame can cause these devices to misbehave.
If this bit is set to 1b1, the host controller schedules transactions for a Control transfer in different microframes/frames.
ResBwHSEPS16rwNormal read/write0Reserving 85% Bandwidth for HS Periodic EPs (ResBwHSEPS)
By default, HC reserves 80% of the bandwidth for periodic EPs. If this bit is set, the bandwidth is relaxed to 85% to accommodate two high speed, high bandwidth ISOC EPs.
USB 2.0 required 80% bandwidth allocated for ISOC traffic. If two High-bandwidth ISOC devices (HD Webcams) are connected, and if each requires 1024-bytes X 3 packets per Micro-Frame, then the bandwidth required is around 82%. If this bit is set, then it is possible to connect two Webcams of 1024bytes X 3 paylod per Micro-Frame each. Otherwise, you may have to reduce the resolution of the Webcams.
This bit is valid in Host and DRD configuration and is used in host mode operation only. Ignore this bit in device mode.
CMdevAddr15rwNormal read/write0Compliance Mode for Device Address (CMdevAddr)
When this bit is 1b1, Slot ID may have different value than Device Address if max_slot_enabled < 128.
- 1b1: Increment Device Address on each Address Device command.
- 1b0: Device Address is equal to Slot ID.
The xHCI compliance requires this bit to be set to 1. The 0 mode is for debug purpose only. This allows you to easily identify a device connected to a port in the Lecroy or Eliisys trace during hardware debug.
This bit is valid in Host and DRD configuration and is used in host mode operation only. Ignore this bit in device mode.
USBHstInAutoRetryEn14rwNormal read/write0Host IN Auto Retry (USBHstInAutoRetryEn)
When set, this field enables the Auto Retry feature. For IN transfers (non-isochronous) that encounter data packets with CRC errors or internal overrun scenarios, the auto retry feature causes the Host core to reply to the device with a non-terminating retry ACK (that is, an ACK transaction packet with Retry = 1 and NumP != 0).
If the Auto Retry feature is disabled (default), the core will respond with a terminating retry ACK (that is, an ACK transaction packet with Retry = 1 and NumP = 0).
- 1b0: Auto Retry Disabled
- 1b1: Auto Retry Enabled
Note: This bit is also applicable to the device mode.
EnOverlapChk13rwNormal read/write0Enable Check for LFPS Overlap During Remote Ux Exit:
If this bit is set to,
- 1b1: The SuperSpeed link when exiting U1/U2/U3 waits for either the remote link LFPS or TS1/TS2 training symbols before it confirms that the LFPS handshake is complete. This is done to handle the case where the LFPS glitch causes the link to start exiting from the low power state. Looking for the LFPS overlap makes sure that the link partner also sees the LFPS.
- 1b0: When the link exists U1/U2/U3 because of a remote exit, it does not look for an LFPS overlap.
ExtCapSupptEN12rwNormal read/write0External Extended Capability Support Enable (ExtCapSuptEN)
When set, this field enables extended capabilities to be implemented outside the core.
When the ExtCapSupEN is set and the Debug Capability is enabled, the Next Capability pointer in Debug Capability returns 16.
A read to the first DWORD of the last internal extended capability (the xHCI Supported Protocol Capability for USB 3.0 when the Debug Capability is not enabled) returns a value of 4 in the Next Capability Pointer field.
This indicates to software that there is another capability four DWORDs after this capability (for example, at address N+16 where N is the address of this DWORD).
If enabled, an external address decoder that snoops the xHC slave interface must be implemented.
If it sees an access to N+16 or greater, the slave access is re-routed to a piece of hardware which returns the external capability pointer register of the new capability and also handles reads/writes to this new capability and the side effects.
If disabled, a read to the first DWORD of the last internal extended capability returns 0 in the Next Capability Pointer field. This indicates there are no more capabilities.
InsrtExtrFSBODI11rwNormal read/write0Insert Extra Delay Between FS Bulk OUT Transactions (InsrtExtrFSBODl).
Some FS devices are slow to receive Bulk OUT data and can get stuck when there are consecutive Bulk OUT transactions with short inter-transaction delays. This bit is used to control whether the host inserts extra delay between consecutive Bulk OUT transactions to a FS Endpoint.
- 1b0: Host doesnt insert extra delay between consecutive Bulk OUT transactions to a FS Endpoint.
- 1b1: Host inserts about 12us extra delay between consecutive Bulk OUT transactions to a FS Endpoint to work around the device issue.
Note: Setting this bit to one will reduce the Bulk OUT transfer performance for most of the FS devices.
DTCT10:9rwNormal read/write0Device Timeout Coarse Tuning (DTCT)
This field is a Host mode parameter which determines how long the host waits for a response from device before considering a timeout.
The core first checks the DTCT value. If it is 0, then the timeout value is defined by the DTFT. If it is non-zero, then it uses the following timeout values:
- 2b00: 0 usec -> use DTFT value instead
- 2b01: 500 usec
- 2b10: 1.5 msec
- 2b11: 6.5 msec
DTFT 8:0rwNormal read/write0Device Timeout Fine Tuning (DTFT)
This field is a Host mode parameter which determines how long the host waits for a response from device before considering a timeout.
For the DTFT field to take effect, DTCT must be set to 2b00.
The DTFT value is the number of 125 MHz clocks * 256 to count before considering a device timeout.
The minimum value of DTFT is 2.
For example, if the mac3_clk is 125 MHz clk (8 ns period), this is calculated as follows:
(DTFT value) * 256 * (8 ns)
Quick Reference:
- if DTFT = 0x2, 2*256*8 = 4usec timeout
- if DTFT = 0x5, 5*256*8 = 10usec timeout
- if DTFT = 0xA, 10*256*8 = 20usec timeout
- if DTFT = 0x10, 16*256*8 = 32usec timeout
- if DTFT = 0x19, 25*256*8 = 51usec timeout
- if DTFT = 0x31, 49*256*8 = 100usec timeout
- if DTFT = 0x62, 98*256*8 = 200usec timeout
Note: When SSIC is enabled, in HS_G1_G2_G3 mode when ssic_soc_pa_clk_freq = 2b01, then DTFT value must be calculated for 156.25 MHz clock, for example, for equivalent delay of 32usec DTFT value must be 9h14.