Initial setup by software
This topic describes how software enumerates a device.
For U1 or U2 transitions to occur, software performs the following steps during the enumeration of a device.
- Software exchanges U1 or U2 exit latency information with the device during the enumeration process. As the first part of this exchange, the device-specific latencies are filled in by the device in bU1DevExitLat and wU2DevExitLat fields of the SuperSpeed USB device capability (defined in Section 22.214.171.124 of the USB 3.0 specification). As the second part of the exchange, the host informs the device about overall exit latencies for the device by sending a SET_SEL control transfer, as per section 9.4.12 of the USB 3.0 specification. The latency information includes the latencies that are associated with upstream links and controller.
For the DS port to which the device is attached, the software configures two values: PORT_U1_TIMEOUT and PORT_U2_TIMEOUT. While deciding these values, the software takes into consideration the characteristics of the device (such as the type of endpoints) and the latencies that are associated with bringing the device back from U1 or U2 to U0. The following table describes the timeout values.
Table 1. PORT_U1_TIMEOUT and PORT_U2_TIMEOUT values
Value Description 01H-FEH DS port must initiate transitions after a period of inactivity. The exact period is derived from the timeout value. The port must accept transitions that are initiated by the link partner unless there is pending traffic. FFH DS port must not initiate transitions but must accept transitions that are initiated by the link partner unless there is pending traffic. 0 DS port must not initiate transitions and must not accept transitions that are initiated by the link partner.
If the PORT_U2_TIMEOUT value is between 01H-FEH, there is an additional step that occurs in the hardware as a result of step 2. The DS port informs its link partner about that value. The importance of this step is described in Direct Transition from U1 to U2 in Hardware Transitions.
For every device or hub, the software configures two values: U1_ENABLE and U2_ENABLE by sending SET_FEATURE (U1_ENABLE/U2_ENABLE) control transfers. The following table describes those values.
Table 2. U1_ENABLE and U2_ENABLE values
Value Description Enabled US port can initiate transitions and accept transitions that are initiated by the link partner if permitted by the device policy. Disabled US port must not initiate transitions but can accept transitions that are initiated by the link partner.