diff options
author | David Brownell <david-b@pacbell.net> | 2008-01-24 15:39:43 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-02-01 17:35:06 -0500 |
commit | cd4cdc93ce04b562412df6c0cf25c564ab2522ac (patch) | |
tree | 37a3960baf1cd7e0fcfd5b12e69dc1bbcf263a27 /drivers/usb/host | |
parent | b75be4abf18e9725766ed835f0d2cf201b52de7e (diff) |
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/host')
-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 ccd88ae011c6..40e8240b7851 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -411,10 +411,8 @@ static int check_reset_complete ( | |||
411 | u32 __iomem *status_reg, | 411 | u32 __iomem *status_reg, |
412 | int port_status | 412 | int port_status |
413 | ) { | 413 | ) { |
414 | if (!(port_status & PORT_CONNECT)) { | 414 | if (!(port_status & PORT_CONNECT)) |
415 | ehci->reset_done [index] = 0; | ||
416 | return port_status; | 415 | return port_status; |
417 | } | ||
418 | 416 | ||
419 | /* if reset finished and it's still not enabled -- handoff */ | 417 | /* if reset finished and it's still not enabled -- handoff */ |
420 | if (!(port_status & PORT_PE)) { | 418 | if (!(port_status & PORT_PE)) { |
@@ -493,8 +491,6 @@ ehci_hub_status_data (struct usb_hcd *hcd, char *buf) | |||
493 | * controller by the user. | 491 | * controller by the user. |
494 | */ | 492 | */ |
495 | 493 | ||
496 | if (!(temp & PORT_CONNECT)) | ||
497 | ehci->reset_done [i] = 0; | ||
498 | if ((temp & mask) != 0 | 494 | if ((temp & mask) != 0 |
499 | || ((temp & PORT_RESUME) != 0 | 495 | || ((temp & PORT_RESUME) != 0 |
500 | && time_after_eq(jiffies, | 496 | && time_after_eq(jiffies, |