PCI: PCIe portdrv: Remove struct pcie_port_service_id
[safe/jmp/linux-2.6] / drivers / pci / pcie / portdrv_pci.c
index 367c9c2..94d0e2a 100644 (file)
@@ -32,16 +32,10 @@ MODULE_LICENSE("GPL");
 /* global data */
 static const char device_name[] = "pcieport-driver";
 
-static int pcie_portdrv_save_config(struct pci_dev *dev)
-{
-       return pci_save_state(dev);
-}
-
 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 +46,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
@@ -86,22 +77,15 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev,
        if (status)
                return status;
 
-       if (pci_enable_device(dev) < 0) 
-               return -ENODEV;
-       
-       pci_set_master(dev);
         if (!dev->irq && dev->pin) {
-               dev_warn(&dev->dev, "device [%04x/%04x] has invalid IRQ; "
+               dev_warn(&dev->dev, "device [%04x:%04x] has invalid IRQ; "
                         "check vendor BIOS\n", dev->vendor, dev->device);
        }
-       if (pcie_port_device_register(dev)) {
-               pci_disable_device(dev);
-               return -ENOMEM;
-       }
-
-       pcie_portdrv_save_config(dev);
+       status = pcie_port_device_register(dev);
+       if (status)
+               return status;
 
-       pci_enable_pcie_error_reporting(dev);
+       pci_save_state(dev);
 
        return 0;
 }
@@ -109,6 +93,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev,
 static void pcie_portdrv_remove (struct pci_dev *dev)
 {
        pcie_port_device_remove(dev);
+       pci_disable_device(dev);
        kfree(pci_get_drvdata(dev));
 }
 
@@ -221,6 +206,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);
        }