]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/usb/host/ohci-hub.c
USB: OHCI: add I/O watchdog for orphan TDs
[karo-tx-linux.git] / drivers / usb / host / ohci-hub.c
index b4940de1eba34b4bb3dabc2eecf4533f01076678..17d32b0ea56583aae9d7a77a87ed0d54f82d932d 100644 (file)
@@ -39,8 +39,8 @@
 #define OHCI_SCHED_ENABLES \
        (OHCI_CTRL_CLE|OHCI_CTRL_BLE|OHCI_CTRL_PLE|OHCI_CTRL_IE)
 
-static void dl_done_list (struct ohci_hcd *);
-static void finish_unlinks (struct ohci_hcd *, u16);
+static void update_done_list(struct ohci_hcd *);
+static void ohci_work(struct ohci_hcd *);
 
 #ifdef CONFIG_PM
 static int ohci_rh_suspend (struct ohci_hcd *ohci, int autostop)
@@ -87,8 +87,8 @@ __acquires(ohci->lock)
                msleep (8);
                spin_lock_irq (&ohci->lock);
        }
-       dl_done_list (ohci);
-       finish_unlinks (ohci, ohci_frame_no(ohci));
+       update_done_list(ohci);
+       ohci_work(ohci);
 
        /*
         * Some controllers don't handle "global" suspend properly if
@@ -309,6 +309,9 @@ static int ohci_bus_suspend (struct usb_hcd *hcd)
        else
                rc = ohci_rh_suspend (ohci, 0);
        spin_unlock_irq (&ohci->lock);
+
+       if (rc == 0)
+               del_timer_sync(&ohci->io_watchdog);
        return rc;
 }