]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/core/hcd-pci.c
Merge branch 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied...
[linux-2.6-omap-h63xx.git] / drivers / usb / core / hcd-pci.c
index 0d2193b692359b1cf17a615fb03d86bab27898bb..edf4300a3f7a75d748776ab3fe3d69fbf1a6f66d 100644 (file)
@@ -16,7 +16,6 @@
  * Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/pci.h>
@@ -126,7 +125,7 @@ int usb_hcd_pci_probe (struct pci_dev *dev, const struct pci_device_id *id)
 
        pci_set_master (dev);
 
-       retval = usb_add_hcd (hcd, dev->irq, SA_SHIRQ);
+       retval = usb_add_hcd (hcd, dev->irq, IRQF_SHARED);
        if (retval != 0)
                goto err4;
        return retval;
@@ -213,11 +212,9 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
 
        if (hcd->driver->suspend) {
                retval = hcd->driver->suspend(hcd, message);
-               if (retval) {
-                       dev_dbg (&dev->dev, "PCI pre-suspend fail, %d\n",
-                               retval);
+               suspend_report_result(hcd->driver->suspend, retval);
+               if (retval)
                        goto done;
-               }
        }
        synchronize_irq(dev->irq);
 
@@ -263,6 +260,7 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
                 * some device state (e.g. as part of clock reinit).
                 */
                retval = pci_set_power_state (dev, PCI_D3hot);
+               suspend_report_result(pci_set_power_state, retval);
                if (retval == 0) {
                        int wake = device_can_wakeup(&hcd->self.root_hub->dev);
 
@@ -283,7 +281,7 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
                        (void) usb_hcd_pci_resume (dev);
                }
 
-       } else {
+       } else if (hcd->state != HC_STATE_HALT) {
                dev_dbg (hcd->self.controller, "hcd state %d; not suspended\n",
                        hcd->state);
                WARN_ON(1);
@@ -415,4 +413,20 @@ EXPORT_SYMBOL (usb_hcd_pci_resume);
 
 #endif /* CONFIG_PM */
 
+/**
+ * usb_hcd_pci_shutdown - shutdown host controller
+ * @dev: USB Host Controller being shutdown
+ */
+void usb_hcd_pci_shutdown (struct pci_dev *dev)
+{
+       struct usb_hcd          *hcd;
+
+       hcd = pci_get_drvdata(dev);
+       if (!hcd)
+               return;
+
+       if (hcd->driver->shutdown)
+               hcd->driver->shutdown(hcd);
+}
+EXPORT_SYMBOL (usb_hcd_pci_shutdown);