[PATCH] usb/core/hcd-pci.c: don't free_irq() on suspend
authorDaniel Ritz <daniel.ritz@gmx.ch>
Thu, 29 Sep 2005 19:39:32 +0000 (21:39 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 30 Sep 2005 16:23:30 +0000 (09:23 -0700)
the free_irq() in USB suspend breaks resume on some setups where USB
(ohci/ehci) shares the interrupt with an other device.

Signed-off-by: Daniel Ritz <daniel.ritz@gmx.ch>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/usb/core/hcd-pci.c

index cbb451d227d215a372110204ab89950f93f66aed..6385d1a99b60588e97d8d6fd80fc837e0267d02c 100644 (file)
@@ -242,7 +242,6 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
        case HC_STATE_SUSPENDED:
                /* no DMA or IRQs except when HC is active */
                if (dev->current_state == PCI_D0) {
-                       free_irq (hcd->irq, hcd);
                        pci_save_state (dev);
                        pci_disable_device (dev);
                }
@@ -374,14 +373,6 @@ int usb_hcd_pci_resume (struct pci_dev *dev)
 
        hcd->state = HC_STATE_RESUMING;
        hcd->saw_irq = 0;
-       retval = request_irq (dev->irq, usb_hcd_irq, SA_SHIRQ,
-                               hcd->irq_descr, hcd);
-       if (retval < 0) {
-               dev_err (hcd->self.controller,
-                       "can't restore IRQ after resume!\n");
-               usb_hc_died (hcd);
-               return retval;
-       }
 
        retval = hcd->driver->resume (hcd);
        if (!HC_IS_RUNNING (hcd->state)) {