This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

High Speed USB Host Controller Locks up during repeated disconnect / reconnect of root hub.

I plug the root hub into USB2 port and watch it enumerate correctly.

I disconnect and reconnect the the Root Hub at an accelerated rate (about 2 detach/reattach events per second) and the port stops communicating.

During the lockup the USB port would transition from High Speed to Full Speed and remain there with the bus suspended.

Disconnecting and reconnecting the hub while the lockup is ongoing would cause the host controller to reset the line but return to a bus suspended mode.

I was able to fix this lockup for our particular application by preventing the EHCD from handing over port ownership to the companion controller (UHCD) while attaching to the root hub and a port disconnect occurs.  I modified CHW::ResetAndEnablePort() to avoid calling Write_PORTSC() with portSC.bit.Owner set to 1.