- 2.6.17 port work build breaks, but the patch set is relativly stable
[linux-flexiantxendom0-3.2.10.git] / drivers / usb / core / hcd-pci.c
index 29b5b2a..66b7840 100644 (file)
@@ -213,11 +213,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,15 +261,21 @@ 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) {
-                       dev_dbg (hcd->self.controller, "--> PCI D3\n");
+                       int wake = device_can_wakeup(&hcd->self.root_hub->dev);
+
+                       wake = wake && device_may_wakeup(hcd->self.controller);
+
+                       dev_dbg (hcd->self.controller, "--> PCI D3%s\n",
+                                       wake ? "/wakeup" : "");
 
                        /* Ignore these return values.  We rely on pci code to
                         * reject requests the hardware can't implement, rather
                         * than coding the same thing.
                         */
-                       (void) pci_enable_wake (dev, PCI_D3hot, hcd->remote_wakeup);
-                       (void) pci_enable_wake (dev, PCI_D3cold, hcd->remote_wakeup);
+                       (void) pci_enable_wake (dev, PCI_D3hot, wake);
+                       (void) pci_enable_wake (dev, PCI_D3cold, wake);
                } else {
                        dev_dbg (&dev->dev, "PCI D3 suspend fail, %d\n",
                                        retval);
@@ -291,7 +295,7 @@ done:
 
 #ifdef CONFIG_PPC_PMAC
                /* Disable ASIC clocks for USB */
-               if (_machine == _MACH_Pmac) {
+               if (machine_is(powermac)) {
                        struct device_node      *of_node;
 
                        of_node = pci_device_to_OF_node (dev);
@@ -326,7 +330,7 @@ int usb_hcd_pci_resume (struct pci_dev *dev)
 
 #ifdef CONFIG_PPC_PMAC
        /* Reenable ASIC clocks for USB */
-       if (_machine == _MACH_Pmac) {
+       if (machine_is(powermac)) {
                struct device_node *of_node;
 
                of_node = pci_device_to_OF_node (dev);