Fix EHCI port reset.
authorChris Zhang <chris@seamicro.com>
Wed, 6 Jan 2010 21:34:04 +0000 (13:34 -0800)
committerRemy Bohmer <linux@bohmer.net>
Sat, 9 Jan 2010 09:25:43 +0000 (10:25 +0100)
In USB ehci driver, the port reset is not terminated. EHCI spec says "A host
 controller must terminate the reset and stabilize the state of the port within
 2 milliseconds". Without termination, a port stays at reset state. This is
 observed on ppc4xx(sequoia) boards.

Signed-off-by: Chris Zhang <chris@seamicro.com>
drivers/usb/host/ehci-hcd.c

index ba85991e864ad940adc28a080f9068a1130ae485..9ebeb4f23dd2f4e2a31abd85a1751f30d522edc4 100644 (file)
@@ -708,6 +708,9 @@ ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer,
                                 * root
                                 */
                                wait_ms(50);
+                               /* terminate the reset */
+                               ehci_writel(status_reg, reg & ~EHCI_PS_PR);
+                               wait_ms(2);
                                portreset |= 1 << le16_to_cpu(req->index);
                        }
                        break;