diff options
author | Chris Zhang <chris@seamicro.com> | 2010-01-06 13:34:04 -0800 |
---|---|---|
committer | Remy Bohmer <linux@bohmer.net> | 2010-01-09 10:25:43 +0100 |
commit | b416191a14770c6bcc6fd67be7decf8159b2baee (patch) | |
tree | 25d98e068b57f6f83c4225c9d2d08e12964cf014 /drivers/usb/host/ehci-hcd.c | |
parent | b301be0599d14be46fc088861bb798648844aea5 (diff) | |
download | u-boot-imx-b416191a14770c6bcc6fd67be7decf8159b2baee.zip u-boot-imx-b416191a14770c6bcc6fd67be7decf8159b2baee.tar.gz u-boot-imx-b416191a14770c6bcc6fd67be7decf8159b2baee.tar.bz2 |
Fix EHCI port reset.
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>
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index ba85991..9ebeb4f 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c @@ -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; |