]> Pileus Git - ~andy/linux/commitdiff
PCI: pciehp: Always implement resume, regardless of pciehp_force param
authorOliver Neukum <oneukum@suse.de>
Fri, 7 Sep 2012 21:28:30 +0000 (23:28 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 7 Sep 2012 23:06:54 +0000 (17:06 -0600)
Previously, the driver ignored resume unless the pciehp_force module_param
was specified.  On some laptops that means that interrupts are not
delivered after S3, so card removals and insertions are not handled.
This patch makes the driver handle resume regardless of pciehp_force.

[bhelgaas: changelog]
Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Rafael J. Wysocki <rjw@sisk.pl>
drivers/pci/hotplug/pciehp_core.c

index 365c6b96c6421db4885d87fc4f4b5fa9ca607ab4..916bf4f53abadc16d9205ac41dc9e3edc6f839ec 100644 (file)
@@ -300,24 +300,24 @@ static int pciehp_suspend (struct pcie_device *dev)
 
 static int pciehp_resume (struct pcie_device *dev)
 {
+       struct controller *ctrl;
+       struct slot *slot;
+       u8 status;
+
        dev_info(&dev->device, "%s ENTRY\n", __func__);
-       if (pciehp_force) {
-               struct controller *ctrl = get_service_data(dev);
-               struct slot *slot;
-               u8 status;
+       ctrl = get_service_data(dev);
 
-               /* reinitialize the chipset's event detection logic */
-               pcie_enable_notification(ctrl);
+       /* reinitialize the chipset's event detection logic */
+       pcie_enable_notification(ctrl);
 
-               slot = ctrl->slot;
+       slot = ctrl->slot;
 
-               /* Check if slot is occupied */
-               pciehp_get_adapter_status(slot, &status);
-               if (status)
-                       pciehp_enable_slot(slot);
-               else
-                       pciehp_disable_slot(slot);
-       }
+       /* Check if slot is occupied */
+       pciehp_get_adapter_status(slot, &status);
+       if (status)
+               pciehp_enable_slot(slot);
+       else
+               pciehp_disable_slot(slot);
        return 0;
 }
 #endif /* PM */