]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/pci/pcie/portdrv_pci.c
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
[linux-2.6-omap-h63xx.git] / drivers / pci / pcie / portdrv_pci.c
index 584422da8d8b3e013934edfd1b5b255f2b2775a2..248b4db915526e5819c7050737f4467456aeda9f 100644 (file)
@@ -41,7 +41,6 @@ static int pcie_portdrv_restore_config(struct pci_dev *dev)
 {
        int retval;
 
-       pci_restore_state(dev);
        retval = pci_enable_device(dev);
        if (retval)
                return retval;
@@ -52,16 +51,13 @@ static int pcie_portdrv_restore_config(struct pci_dev *dev)
 #ifdef CONFIG_PM
 static int pcie_portdrv_suspend(struct pci_dev *dev, pm_message_t state)
 {
-       int ret = pcie_port_device_suspend(dev, state);
+       return pcie_port_device_suspend(dev, state);
 
-       if (!ret)
-               ret = pcie_portdrv_save_config(dev);
-       return ret;
 }
 
 static int pcie_portdrv_resume(struct pci_dev *dev)
 {
-       pcie_portdrv_restore_config(dev);
+       pci_set_master(dev);
        return pcie_port_device_resume(dev);
 }
 #else
@@ -101,8 +97,6 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev,
 
        pcie_portdrv_save_config(dev);
 
-       pci_enable_pcie_error_reporting(dev);
-
        return 0;
 }
 
@@ -221,6 +215,7 @@ static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
 
        /* If fatal, restore cfg space for possible link reset at upstream */
        if (dev->error_state == pci_channel_io_frozen) {
+               pci_restore_state(dev);
                pcie_portdrv_restore_config(dev);
                pci_enable_pcie_error_reporting(dev);
        }