At some situations, the ehci_bus_suspend may not set PORT_SUSPEND
due to port is not enabled, so add flag ehci->bus_suspended to
check if ehci_bus_suspend set PORT_SUSPEND or not.
We see "ci_hdrc ci_hdrc.0: timeout waiting for SUSPEND" wrongly when
plug in an unsupported usb device, in that case, the PORT_PE is cleared
and bus_suspend is called.
Signed-off-by: Peter Chen <peter.chen@freescale.com>
(cherry picked from commit
82cfe6c31ee55e5aab1a057a5aaf853b7bb6cd07)
(cherry picked from commit
a4fe7e55e84944962d6a7be7bd404865d376811e)
* a delay in suspending the port. Poll until the
* port is suspended.
*/
- if (ehci_handshake(ehci, reg, PORT_SUSPEND,
+ if (test_bit(port, &ehci->bus_suspended) &&
+ ehci_handshake(ehci, reg, PORT_SUSPEND,
PORT_SUSPEND, 5000))
ehci_err(ehci, "timeout waiting for SUSPEND\n");