USB: EHCI: remove unneeded suspend/resume code
authorAlan Stern <stern@rowland.harvard.edu>
Wed, 11 Jul 2012 15:21:17 +0000 (11:21 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 16 Jul 2012 23:50:13 +0000 (16:50 -0700)
This patch (as1566) removes the code in ehci-hcd's resume routines
which tries to restart or cancel any transfers left active while the
root hub or controller was asleep.  This code isn't necessary, because
all URBs are terminated before the root hub is suspended.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-hub.c

index 8727f4ea343f8c2ff9a14977e48377b1db5eb09d..ab7306de8d164d7105038ef21237b8148b2efb8e 100644 (file)
@@ -1312,13 +1312,6 @@ static int __maybe_unused ehci_resume(struct usb_hcd *hcd, bool hibernated)
        (void) ehci_halt(ehci);
        (void) ehci_reset(ehci);
 
-       /* emptying the schedule aborts any urbs */
-       spin_lock_irq(&ehci->lock);
-       if (ehci->reclaim)
-               end_unlink_async(ehci);
-       ehci_work(ehci);
-       spin_unlock_irq(&ehci->lock);
-
        ehci_writel(ehci, ehci->command, &ehci->regs->command);
        ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
        ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
index b3e2d66e95bba35b83eaf1e19d35ee8a8c89af1d..1daaa96f527d4dfac1477b32102817af80b578e2 100644 (file)
@@ -424,23 +424,12 @@ static int ehci_bus_resume (struct usb_hcd *hcd)
                        ehci_vdbg (ehci, "resumed port %d\n", i + 1);
                }
        }
-       (void) ehci_readl(ehci, &ehci->regs->command);
-
-       /* maybe re-activate the schedule(s) */
-       temp = 0;
-       if (ehci->async->qh_next.qh)
-               temp |= CMD_ASE;
-       if (ehci->periodic_sched)
-               temp |= CMD_PSE;
-       if (temp) {
-               ehci->command |= temp;
-               ehci_writel(ehci, ehci->command, &ehci->regs->command);
-       }
 
        ehci->next_statechange = jiffies + msecs_to_jiffies(5);
 
        /* Now we can safely re-enable irqs */
        ehci_writel(ehci, INTR_MASK, &ehci->regs->intr_enable);
+       (void) ehci_readl(ehci, &ehci->regs->intr_enable);
 
        spin_unlock_irq (&ehci->lock);
        ehci_handover_companion_ports(ehci);