RE: [PATCH] fsl/usb: Workarourd for USB erratum-A005697

From: Alan Stern
Date: Thu Nov 24 2016 - 11:53:58 EST


On Thu, 24 Nov 2016, Sriram Dash wrote:

> >From: Changming Huang [mailto:jerry.huang@xxxxxxx]
> >As per USB specification, in the Suspend state, the status bit does not change until
> >the port is suspended. However, there may be a delay in suspending a port if there
> >is a transaction currently in progress on the bus.
> >
> >In the USBDR controller, the PORTSCx[SUSP] bit changes immediately when the
> >application sets it and not when the port is actually suspended
> >
> >Workaround for this issue involves waiting for a minimum of 10ms to allow the
> >controller to go into SUSPEND state before proceeding ahead

The USB core guarantees that there won't be any data transactions in
progress when a root hub is suspended. There might possibly be an SOF
transaction, but that doesn't take more than a few microseconds at
most. Certainly nowhere near 10 ms!

Given that we already perform a 150-us delay, is this change really
needed?

Alan Stern