usb: ehci, remove false clear-reset path
authorDavid Brownell <david-b@pacbell.net>
Thu, 24 Jan 2008 20:39:43 +0000 (12:39 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Feb 2008 22:35:06 +0000 (14:35 -0800)
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>
drivers/usb/host/ehci-hub.c

index ccd88ae011c63e924d1edd22f80d692595ee85a7..40e8240b7851f012e0e4fe9e71c37ab27d99d67a 100644 (file)
@@ -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,