Message ID | 20200720133427.454400-12-vaibhavgupta40@gmail.com (mailing list archive) |
---|---|
State | Deferred |
Headers | show |
Series | scsi: use generic power management | expand |
Drivers using legacy PM have to manage PCI states and device's PM states themselves. They also need to take care of configuration registers. With improved and powerful support of generic PM, PCI Core takes care of above mentioned, device-independent, jobs. Change function parameter in both .suspend() and .resume() to "struct device*" type. The function body remains unchanged as it was empty. Also, bind callbacks with "static const struct dev_pm_ops" variable. Compile-tested only. Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com> Acked-by: Don Brace <don.brace@microsemi.com> Compile-tested: no compile/sparse issues found. Tested-by: Don Brace <don.brace@microsemi.com> (for hpsa driver)
On Mon, Jul 20, 2020 at 07:04:24PM +0530, Vaibhav Gupta wrote: > Drivers using legacy PM have to manage PCI states and device's PM states > themselves. They also need to take care of configuration registers. > > With improved and powerful support of generic PM, PCI Core takes care of > above mentioned, device-independent, jobs. > > Change function parameter in both .suspend() and .resume() to > "struct device*" type. The function body remains unchanged as it was empty. > Also, bind callbacks with "static const struct dev_pm_ops" variable. > > Compile-tested only. > > Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com> > --- > drivers/scsi/hpsa.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > index 81d0414e2117..70bdd6fe91ee 100644 > --- a/drivers/scsi/hpsa.c > +++ b/drivers/scsi/hpsa.c > @@ -9070,25 +9070,27 @@ static void hpsa_remove_one(struct pci_dev *pdev) > hpda_free_ctlr_info(h); /* init_one 1 */ > } > > -static int hpsa_suspend(__attribute__((unused)) struct pci_dev *pdev, > - __attribute__((unused)) pm_message_t state) > +static int __maybe_unused hpsa_suspend( > + __attribute__((unused)) struct device *dev) > { > return -ENOSYS; > } > > -static int hpsa_resume(__attribute__((unused)) struct pci_dev *pdev) > +static int __maybe_unused hpsa_resume > + (__attribute__((unused)) struct device *dev) > { > return -ENOSYS; > } > > +static SIMPLE_DEV_PM_OPS(hpsa_pm_ops, hpsa_suspend, hpsa_resume); > + > static struct pci_driver hpsa_pci_driver = { > .name = HPSA, > .probe = hpsa_init_one, > .remove = hpsa_remove_one, > .id_table = hpsa_pci_device_id, /* id_table */ > .shutdown = hpsa_shutdown, > - .suspend = hpsa_suspend, > - .resume = hpsa_resume, > + .driver.pm = &hpsa_pm_ops, > }; > > /* Fill in bucket_map[], given nsgs (the max number of > -- > 2.27.0 > .
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index 81d0414e2117..70bdd6fe91ee 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -9070,25 +9070,27 @@ static void hpsa_remove_one(struct pci_dev *pdev) hpda_free_ctlr_info(h); /* init_one 1 */ } -static int hpsa_suspend(__attribute__((unused)) struct pci_dev *pdev, - __attribute__((unused)) pm_message_t state) +static int __maybe_unused hpsa_suspend( + __attribute__((unused)) struct device *dev) { return -ENOSYS; } -static int hpsa_resume(__attribute__((unused)) struct pci_dev *pdev) +static int __maybe_unused hpsa_resume + (__attribute__((unused)) struct device *dev) { return -ENOSYS; } +static SIMPLE_DEV_PM_OPS(hpsa_pm_ops, hpsa_suspend, hpsa_resume); + static struct pci_driver hpsa_pci_driver = { .name = HPSA, .probe = hpsa_init_one, .remove = hpsa_remove_one, .id_table = hpsa_pci_device_id, /* id_table */ .shutdown = hpsa_shutdown, - .suspend = hpsa_suspend, - .resume = hpsa_resume, + .driver.pm = &hpsa_pm_ops, }; /* Fill in bucket_map[], given nsgs (the max number of
Drivers using legacy PM have to manage PCI states and device's PM states themselves. They also need to take care of configuration registers. With improved and powerful support of generic PM, PCI Core takes care of above mentioned, device-independent, jobs. Change function parameter in both .suspend() and .resume() to "struct device*" type. The function body remains unchanged as it was empty. Also, bind callbacks with "static const struct dev_pm_ops" variable. Compile-tested only. Signed-off-by: Vaibhav Gupta <vaibhavgupta40@gmail.com> --- drivers/scsi/hpsa.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)