SPRZ426F November 2014 – September 2024 DRA710 , DRA712 , DRA714 , DRA716 , DRA718 , DRA722 , DRA724 , DRA725 , DRA726
USB xHCI Stop Endpoint Command Does Not Work in Certain Circumstances
Low
USB xHCI Stop Endpoint feature can, in addition to other scenarios, be used to recover from a situation where a particular endpoint of the attached device has become unresponsive due to various reasons. By stopping the endpoint, the xHCI host would normally stop all ongoing communication with the said endpoint. Other endpoints are not affected.
Due to the bug, in the following scenario, the Stop Endpoint will not function correctly:
The Stop Endpoint when issued at this point never completes and the xHCI Controller will continuous send the CSPLIT-SETUP command since it never receives an ACK. In addition an attempt to abort the command using the CA bit in CRCR register also does not succeed.
Option 1: In the Address Device command set BSR=0 so that SET_ADDRESS command is actually executed before GetDescriptor.
Option 2: Instead of Stop Endpoint, perform the Disable Slot command. The difference from Stop Endpoint is that this command shall stop all endpoints and interfaces associated with the device.
DRA72x SR 2.0, 1.0
DRA71x SR 2.1, 2.0
DRA79x: 2.1, 2.0
TDA2Ex (23mm): 2.0, 1.0
TDA2Ex (17mm): 2.1, 2.0
AM571x: 2.1, 2.0, 1.0
AM570x: 2.1, 2.0
DRA72x: 2.0, 1.0
DRA71x: 2.1, 2.0