User manual

Table Of Contents
Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 411
UG585 (v1.11) September 27, 2016
Chapter 15: USB Host, Device, and OTG Controller
As a result of entering the address state, the device address register (usb._DEVICEADDR) must be
programmed by the DCD.
Entry into the configured state indicates that all endpoints to be used in the operation of the device
have been properly initialized by programming the usb.ENDPTCTRLx registers and initializing the
associated queue heads.
15.4.2 USB Bus Reset Response
A USB bus reset is used by the host to initialize downstream devices. The USB reset is one of several
types of resets in the system, refer to section 15.15.2 Reset Types for a list.
When a bus reset is detected, the device controller hardware renegotiates its attachment speed,
reset the device address to 0 and notify the DCD by interrupt (assuming the USB reset interrupt
enable is set). After a reset is received, all endpoints (except EP 0) are disabled and any primed
transactions are canceled by the device controller. The concept of priming will be clarified below, but
the DCD must perform the following tasks when a reset is received.
DCD Actions
1. Clear all setup token semaphores by reading the usb.ENDPTSETUPSTAT register and writing the
same value back to the usb.ENDPTSETUPSTAT register. Clear all the endpoint complete status bits
by reading the usb.ENDPTCOMPLETE register and writing the same value back to the
usb.ENDPTCOMPLETE register.
2. Cancel all primed status by waiting until all bits in the usb.ENDPTPRIME register are 0 and then
writing FFFF_FFFFh to usb.ENDPTFLUSH register.
3. Read the reset bit in the PORTSC1 register and make sure that it is still active. A USB reset occurs
for a minimum of 3 ms and software must reach this point in the reset cleanup before end of the
reset occurs, otherwise a hardware reset of the device controller is recommended (rare).
Device Controller Reset
4. A hardware reset can be performed by writing a 1 to the usb.USBCMD [RST] reset bit. A hardware
reset will cause the device to detach from the bus by clearing the run/stop bit. Thus, software
must completely re-initialize the device controller after a hardware reset.
5. Free all allocated dTD’s because they will no longer be executed by the device controller. If this
is the first time the DCD is processing a USB reset event, then it is likely that no dTD’s have been
allocated.
At this time, the DCD might release control back to the OS because no further changes to the device
controller are permitted until a port change detect is indicated.
Table 15-3: USB Device State Information Bits
Bit Description Register Bit Interrupt
Suspend Mode usb.USBSTS [SLI] Yes
USB Reset Received usb.USBSTS [URI] Yes
Port Change Detect usb.USBSTS [PCI] Yes
High-Speed Port usb.PORTSC1 [PSPD] No