*     0  Success
  *     <0 Error
  */
-static int mtip_pci_suspend(struct pci_dev *pdev, pm_message_t mesg)
+static int __maybe_unused mtip_pci_suspend(struct device *dev)
 {
        int rv = 0;
-       struct driver_data *dd = pci_get_drvdata(pdev);
+       struct driver_data *dd = dev_get_drvdata(dev);
 
        set_bit(MTIP_DDF_RESUME_BIT, &dd->dd_flag);
 
        /* Disable ports & interrupts then send standby immediate */
        rv = mtip_block_suspend(dd);
-       if (rv < 0) {
-               dev_err(&pdev->dev,
-                       "Failed to suspend controller\n");
-               return rv;
-       }
-
-       /*
-        * Save the pci config space to pdev structure &
-        * disable the device
-        */
-       pci_save_state(pdev);
-       pci_disable_device(pdev);
-
-       /* Move to Low power state*/
-       pci_set_power_state(pdev, PCI_D3hot);
+       if (rv < 0)
+               dev_err(dev, "Failed to suspend controller\n");
 
        return rv;
 }
  *      0  Success
  *      <0 Error
  */
-static int mtip_pci_resume(struct pci_dev *pdev)
+static int __maybe_unused mtip_pci_resume(struct device *dev)
 {
        int rv = 0;
-       struct driver_data *dd = pci_get_drvdata(pdev);
-
-       /* Move the device to active State */
-       pci_set_power_state(pdev, PCI_D0);
-
-       /* Restore PCI configuration space */
-       pci_restore_state(pdev);
-
-       /* Enable the PCI device*/
-       rv = pcim_enable_device(pdev);
-       if (rv < 0) {
-               dev_err(&pdev->dev,
-                       "Failed to enable card during resume\n");
-               goto err;
-       }
-       pci_set_master(pdev);
+       struct driver_data *dd = dev_get_drvdata(dev);
 
        /*
         * Calls hbaReset, initPort, & startPort function
         */
        rv = mtip_block_resume(dd);
        if (rv < 0)
-               dev_err(&pdev->dev, "Unable to resume\n");
+               dev_err(dev, "Unable to resume\n");
 
-err:
        clear_bit(MTIP_DDF_RESUME_BIT, &dd->dd_flag);
 
        return rv;
        { 0 }
 };
 
+static SIMPLE_DEV_PM_OPS(mtip_pci_pm_ops, mtip_pci_suspend, mtip_pci_resume);
+
 /* Structure that describes the PCI driver functions. */
 static struct pci_driver mtip_pci_driver = {
        .name                   = MTIP_DRV_NAME,
        .id_table               = mtip_pci_tbl,
        .probe                  = mtip_pci_probe,
        .remove                 = mtip_pci_remove,
-       .suspend                = mtip_pci_suspend,
-       .resume                 = mtip_pci_resume,
+       .driver.pm              = &mtip_pci_pm_ops,
        .shutdown               = mtip_pci_shutdown,
 };