}
 
 #ifdef CONFIG_PM_SLEEP
+static int mei_me_pci_prepare(struct device *device)
+{
+       pm_runtime_resume(device);
+       return 0;
+}
+
 static int mei_me_pci_suspend(struct device *device)
 {
        struct pci_dev *pdev = to_pci_dev(device);
 
        return 0;
 }
-#endif /* CONFIG_PM_SLEEP */
+
+static void mei_me_pci_complete(struct device *device)
+{
+       pm_runtime_suspend(device);
+}
+#else /* CONFIG_PM_SLEEP */
+
+#define mei_me_pci_prepare NULL
+#define mei_me_pci_complete NULL
+
+#endif /* !CONFIG_PM_SLEEP */
 
 #ifdef CONFIG_PM
 static int mei_me_pm_runtime_idle(struct device *device)
 }
 
 static const struct dev_pm_ops mei_me_pm_ops = {
+       .prepare = mei_me_pci_prepare,
+       .complete = mei_me_pci_complete,
        SET_SYSTEM_SLEEP_PM_OPS(mei_me_pci_suspend,
                                mei_me_pci_resume)
        SET_RUNTIME_PM_OPS(