Merge branch 'i2c/for-5.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
[linux-2.6-microblaze.git] / drivers / i2c / busses / i2c-eg20t.c
index 73f1396..843b31a 100644 (file)
@@ -846,11 +846,10 @@ static void pch_i2c_remove(struct pci_dev *pdev)
        kfree(adap_info);
 }
 
-#ifdef CONFIG_PM
-static int pch_i2c_suspend(struct pci_dev *pdev, pm_message_t state)
+static int __maybe_unused pch_i2c_suspend(struct device *dev)
 {
-       int ret;
        int i;
+       struct pci_dev *pdev = to_pci_dev(dev);
        struct adapter_info *adap_info = pci_get_drvdata(pdev);
        void __iomem *p = adap_info->pch_data[0].pch_base_address;
 
@@ -872,34 +871,13 @@ static int pch_i2c_suspend(struct pci_dev *pdev, pm_message_t state)
                ioread32(p + PCH_I2CSR), ioread32(p + PCH_I2CBUFSTA),
                ioread32(p + PCH_I2CESRSTA));
 
-       ret = pci_save_state(pdev);
-
-       if (ret) {
-               pch_pci_err(pdev, "pci_save_state\n");
-               return ret;
-       }
-
-       pci_enable_wake(pdev, PCI_D3hot, 0);
-       pci_disable_device(pdev);
-       pci_set_power_state(pdev, pci_choose_state(pdev, state));
-
        return 0;
 }
 
-static int pch_i2c_resume(struct pci_dev *pdev)
+static int __maybe_unused pch_i2c_resume(struct device *dev)
 {
        int i;
-       struct adapter_info *adap_info = pci_get_drvdata(pdev);
-
-       pci_set_power_state(pdev, PCI_D0);
-       pci_restore_state(pdev);
-
-       if (pci_enable_device(pdev) < 0) {
-               pch_pci_err(pdev, "pch_i2c_resume:pci_enable_device FAILED\n");
-               return -EIO;
-       }
-
-       pci_enable_wake(pdev, PCI_D3hot, 0);
+       struct adapter_info *adap_info = dev_get_drvdata(dev);
 
        for (i = 0; i < adap_info->ch_num; i++)
                pch_i2c_init(&adap_info->pch_data[i]);
@@ -908,18 +886,15 @@ static int pch_i2c_resume(struct pci_dev *pdev)
 
        return 0;
 }
-#else
-#define pch_i2c_suspend NULL
-#define pch_i2c_resume NULL
-#endif
+
+static SIMPLE_DEV_PM_OPS(pch_i2c_pm_ops, pch_i2c_suspend, pch_i2c_resume);
 
 static struct pci_driver pch_pcidriver = {
        .name = KBUILD_MODNAME,
        .id_table = pch_pcidev_id,
        .probe = pch_i2c_probe,
        .remove = pch_i2c_remove,
-       .suspend = pch_i2c_suspend,
-       .resume = pch_i2c_resume
+       .driver.pm = &pch_i2c_pm_ops,
 };
 
 module_pci_driver(pch_pcidriver);