@@ -3317,10 +3317,11 @@ static void skd_pci_remove(struct pci_dev *pdev)
return;
}
-static int skd_pci_suspend(struct pci_dev *pdev, pm_message_t state)
+static int __maybe_unused skd_pci_suspend(struct device *dev)
{
int i;
struct skd_device *skdev;
+ struct pci_dev *pdev = to_pci_dev(dev);
skdev = pci_get_drvdata(pdev);
if (!skdev) {
@@ -3339,18 +3340,15 @@ static int skd_pci_suspend(struct pci_dev *pdev, pm_message_t state)
if (skdev->pcie_error_reporting_is_enabled)
pci_disable_pcie_error_reporting(pdev);
- pci_release_regions(pdev);
- pci_save_state(pdev);
- pci_disable_device(pdev);
- pci_set_power_state(pdev, pci_choose_state(pdev, state));
return 0;
}
-static int skd_pci_resume(struct pci_dev *pdev)
+static int __maybe_unused skd_pci_resume(struct device *dev)
{
int i;
int rc = 0;
struct skd_device *skdev;
+ struct pci_dev *pdev = to_pci_dev(dev);
skdev = pci_get_drvdata(pdev);
if (!skdev) {
@@ -3358,16 +3356,8 @@ static int skd_pci_resume(struct pci_dev *pdev)
return -1;
}
- pci_set_power_state(pdev, PCI_D0);
- pci_enable_wake(pdev, PCI_D0, 0);
- pci_restore_state(pdev);
+ device_wakeup_disable(dev);
- rc = pci_enable_device(pdev);
- if (rc)
- return rc;
- rc = pci_request_regions(pdev, DRV_NAME);
- if (rc)
- goto err_out;
rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
if (rc)
rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
@@ -3376,7 +3366,6 @@ static int skd_pci_resume(struct pci_dev *pdev)
goto err_out_regions;
}
- pci_set_master(pdev);
rc = pci_enable_pcie_error_reporting(pdev);
if (rc) {
dev_err(&pdev->dev,
@@ -3429,10 +3418,6 @@ static int skd_pci_resume(struct pci_dev *pdev)
pci_disable_pcie_error_reporting(pdev);
err_out_regions:
- pci_release_regions(pdev);
-
-err_out:
- pci_disable_device(pdev);
return rc;
}
@@ -3452,13 +3437,14 @@ static void skd_pci_shutdown(struct pci_dev *pdev)
skd_stop_device(skdev);
}
+static SIMPLE_DEV_PM_OPS(skd_pci_pm_ops, skd_pci_suspend, skd_pci_resume);
+
static struct pci_driver skd_driver = {
.name = DRV_NAME,
.id_table = skd_pci_tbl,
.probe = skd_pci_probe,
.remove = skd_pci_remove,
- .suspend = skd_pci_suspend,
- .resume = skd_pci_resume,
+ .driver.pm = &skd_pci_pm_ops,
.shutdown = skd_pci_shutdown,
};