From 1c695d89d1522da654ba470e7852e73c851be924 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Tue, 13 Nov 2007 16:22:30 -0800 Subject: [PATCH] --- yaml --- r: 74335 b: refs/heads/master c: 1cb52658b4f5b10a9e91f8e1c21ca2bcc1b9a3ca h: refs/heads/master i: 74333: 1e238ec8a9562744ccf7204103dd81ea57ffbb9c 74331: 7b9ba8b9b1ef912f487fd7f014126863da063c24 74327: 9b1a0e1da9e28dc892514000b0a6036bdc1c214a 74319: df4a13206a4e706f35d338bc50f80cf797d3f09f 74303: 75dda3d592fe7be9e390b17bc3eb102957a9db8e v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ehci-hcd.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index c12c3558d91a..dd773c110c36 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5cf1973a44bd298e3cfce6f6af8faa8c9d0a6d55 +refs/heads/master: 1cb52658b4f5b10a9e91f8e1c21ca2bcc1b9a3ca diff --git a/trunk/drivers/usb/host/ehci-hcd.c b/trunk/drivers/usb/host/ehci-hcd.c index c1514442883e..5f2d74ed5ad7 100644 --- a/trunk/drivers/usb/host/ehci-hcd.c +++ b/trunk/drivers/usb/host/ehci-hcd.c @@ -575,12 +575,15 @@ static int ehci_run (struct usb_hcd *hcd) * from the companions to the EHCI controller. If any of the * companions are in the middle of a port reset at the time, it * could cause trouble. Write-locking ehci_cf_port_reset_rwsem - * guarantees that no resets are in progress. + * guarantees that no resets are in progress. After we set CF, + * a short delay lets the hardware catch up; new resets shouldn't + * be started before the port switching actions could complete. */ down_write(&ehci_cf_port_reset_rwsem); hcd->state = HC_STATE_RUNNING; ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag); ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */ + msleep(5); up_write(&ehci_cf_port_reset_rwsem); temp = HC_VERSION(ehci_readl(ehci, &ehci->caps->hc_capbase));