Merge tty-next into 3.6-rc1
[cascardo/linux.git] / drivers / virtio / virtio_pci.c
index 635e1ef..2e03d41 100644 (file)
@@ -720,24 +720,6 @@ static void __devexit virtio_pci_remove(struct pci_dev *pci_dev)
 }
 
 #ifdef CONFIG_PM
-static int virtio_pci_suspend(struct device *dev)
-{
-       struct pci_dev *pci_dev = to_pci_dev(dev);
-
-       pci_save_state(pci_dev);
-       pci_set_power_state(pci_dev, PCI_D3hot);
-       return 0;
-}
-
-static int virtio_pci_resume(struct device *dev)
-{
-       struct pci_dev *pci_dev = to_pci_dev(dev);
-
-       pci_restore_state(pci_dev);
-       pci_set_power_state(pci_dev, PCI_D0);
-       return 0;
-}
-
 static int virtio_pci_freeze(struct device *dev)
 {
        struct pci_dev *pci_dev = to_pci_dev(dev);
@@ -758,59 +740,24 @@ static int virtio_pci_freeze(struct device *dev)
        return ret;
 }
 
-static int restore_common(struct device *dev)
-{
-       struct pci_dev *pci_dev = to_pci_dev(dev);
-       struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
-       int ret;
-
-       ret = pci_enable_device(pci_dev);
-       if (ret)
-               return ret;
-       pci_set_master(pci_dev);
-       vp_finalize_features(&vp_dev->vdev);
-
-       return ret;
-}
-
-static int virtio_pci_thaw(struct device *dev)
+static int virtio_pci_restore(struct device *dev)
 {
        struct pci_dev *pci_dev = to_pci_dev(dev);
        struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
        struct virtio_driver *drv;
        int ret;
 
-       ret = restore_common(dev);
-       if (ret)
-               return ret;
-
        drv = container_of(vp_dev->vdev.dev.driver,
                           struct virtio_driver, driver);
 
-       if (drv && drv->thaw)
-               ret = drv->thaw(&vp_dev->vdev);
-       else if (drv && drv->restore)
-               ret = drv->restore(&vp_dev->vdev);
-
-       /* Finally, tell the device we're all set */
-       if (!ret)
-               vp_set_status(&vp_dev->vdev, vp_dev->saved_status);
-
-       return ret;
-}
-
-static int virtio_pci_restore(struct device *dev)
-{
-       struct pci_dev *pci_dev = to_pci_dev(dev);
-       struct virtio_pci_device *vp_dev = pci_get_drvdata(pci_dev);
-       struct virtio_driver *drv;
-       int ret;
+       ret = pci_enable_device(pci_dev);
+       if (ret)
+               return ret;
 
-       drv = container_of(vp_dev->vdev.dev.driver,
-                          struct virtio_driver, driver);
+       pci_set_master(pci_dev);
+       vp_finalize_features(&vp_dev->vdev);
 
-       ret = restore_common(dev);
-       if (!ret && drv && drv->restore)
+       if (drv && drv->restore)
                ret = drv->restore(&vp_dev->vdev);
 
        /* Finally, tell the device we're all set */
@@ -821,12 +768,7 @@ static int virtio_pci_restore(struct device *dev)
 }
 
 static const struct dev_pm_ops virtio_pci_pm_ops = {
-       .suspend        = virtio_pci_suspend,
-       .resume         = virtio_pci_resume,
-       .freeze         = virtio_pci_freeze,
-       .thaw           = virtio_pci_thaw,
-       .restore        = virtio_pci_restore,
-       .poweroff       = virtio_pci_suspend,
+       SET_SYSTEM_SLEEP_PM_OPS(virtio_pci_freeze, virtio_pci_restore)
 };
 #endif