diff options
author | David Brownell <david-b@pacbell.net> | 2008-01-24 12:39:43 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-01 14:35:06 -0800 |
commit | cd4cdc93ce04b562412df6c0cf25c564ab2522ac (patch) | |
tree | 37a3960baf1cd7e0fcfd5b12e69dc1bbcf263a27 /drivers/usb | |
parent | b75be4abf18e9725766ed835f0d2cf201b52de7e (diff) | |
download | op-kernel-dev-cd4cdc93ce04b562412df6c0cf25c564ab2522ac.zip op-kernel-dev-cd4cdc93ce04b562412df6c0cf25c564ab2522ac.tar.gz |
usb: ehci, remove false clear-reset path
Some of the "EHCI ports reset forever" problems may be explained by
code paths which wrongly flagged resets as complete. This removes
two such paths; the ehci_hub_status_data() path should be the only one
to have an effect, since it was already properly flagged on the other
path. (Issue noted by Minhyoung Kim <a9a9@lge.com>.)
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/host/ehci-hub.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index ccd88ae..40e8240 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c @@ -411,10 +411,8 @@ static int check_reset_complete ( u32 __iomem *status_reg, int port_status ) { - if (!(port_status & PORT_CONNECT)) { - ehci->reset_done [index] = 0; + if (!(port_status & PORT_CONNECT)) return port_status; - } /* if reset finished and it's still not enabled -- handoff */ if (!(port_status & PORT_PE)) { @@ -493,8 +491,6 @@ ehci_hub_status_data (struct usb_hcd *hcd, char *buf) * controller by the user. */ - if (!(temp & PORT_CONNECT)) - ehci->reset_done [i] = 0; if ((temp & mask) != 0 || ((temp & PORT_RESUME) != 0 && time_after_eq(jiffies, |