summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Zhang <chris@seamicro.com>2010-01-06 13:34:04 -0800
committerRemy Bohmer <linux@bohmer.net>2010-01-09 10:25:43 +0100
commitb416191a14770c6bcc6fd67be7decf8159b2baee (patch)
tree25d98e068b57f6f83c4225c9d2d08e12964cf014
parentb301be0599d14be46fc088861bb798648844aea5 (diff)
downloadu-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>
-rw-r--r--drivers/usb/host/ehci-hcd.c3
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;