hip08,
 };
 
-static int hisi_sas_v3_suspend(struct pci_dev *pdev, pm_message_t state)
+static int suspend_v3_hw(struct device *device)
 {
+       struct pci_dev *pdev = to_pci_dev(device);
        struct sas_ha_struct *sha = pci_get_drvdata(pdev);
        struct hisi_hba *hisi_hba = sha->lldd_ha;
        struct device *dev = hisi_hba->dev;
 
        hisi_sas_init_mem(hisi_hba);
 
-       device_state = pci_choose_state(pdev, state);
+       device_state = pci_choose_state(pdev, PMSG_SUSPEND);
        dev_warn(dev, "entering operating state [D%d]\n",
                        device_state);
        pci_save_state(pdev);
        return 0;
 }
 
-static int hisi_sas_v3_resume(struct pci_dev *pdev)
+static int resume_v3_hw(struct device *device)
 {
+       struct pci_dev *pdev = to_pci_dev(device);
        struct sas_ha_struct *sha = pci_get_drvdata(pdev);
        struct hisi_hba *hisi_hba = sha->lldd_ha;
        struct Scsi_Host *shost = hisi_hba->shost;
        .reset_done     = hisi_sas_reset_done_v3_hw,
 };
 
+static const struct dev_pm_ops hisi_sas_v3_pm_ops = {
+       SET_SYSTEM_SLEEP_PM_OPS(suspend_v3_hw, resume_v3_hw)
+};
+
 static struct pci_driver sas_v3_pci_driver = {
        .name           = DRV_NAME,
        .id_table       = sas_v3_pci_table,
        .probe          = hisi_sas_v3_probe,
        .remove         = hisi_sas_v3_remove,
-       .suspend        = hisi_sas_v3_suspend,
-       .resume         = hisi_sas_v3_resume,
        .err_handler    = &hisi_sas_err_handler,
+       .driver.pm      = &hisi_sas_v3_pm_ops,
 };
 
 module_pci_driver(sas_v3_pci_driver);