USB: ehci-au1xxx does not need EHCI IO watchdog
authorManuel Lauss <manuel.lauss@googlemail.com>
Mon, 8 Mar 2010 19:43:32 +0000 (20:43 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 20 May 2010 20:21:31 +0000 (13:21 -0700)
I've been running variations of this patch for well over a year now;
my usual zoo of test devices didn't trigger any ill effects even
under heavy load.  As a nice sideeffect idle-wakeups are reduced
from 20/s to about 2/s (EHCI hub with mouse and kbd).

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ehci-au1xxx.c

index e3a74e75e8225585c5c85e089f82fe046e7b4796..7a27b7c4ee84973abea8f80dcd5181bf6bc21110 100644 (file)
@@ -69,6 +69,15 @@ static void au1xxx_stop_ehc(void)
        au_sync();
 }
 
+static int au1xxx_ehci_setup(struct usb_hcd *hcd)
+{
+       struct ehci_hcd *ehci = hcd_to_ehci(hcd);
+       int ret = ehci_init(hcd);
+
+       ehci->need_io_watchdog = 0;
+       return ret;
+}
+
 static const struct hc_driver ehci_au1xxx_hc_driver = {
        .description            = hcd_name,
        .product_desc           = "Au1xxx EHCI",
@@ -86,7 +95,7 @@ static const struct hc_driver ehci_au1xxx_hc_driver = {
         * FIXME -- ehci_init() doesn't do enough here.
         * See ehci-ppc-soc for a complete implementation.
         */
-       .reset                  = ehci_init,
+       .reset                  = au1xxx_ehci_setup,
        .start                  = ehci_run,
        .stop                   = ehci_stop,
        .shutdown               = ehci_shutdown,