On Fri, Jul 24, 2020 at 01:51:49PM +0300, Andy Shevchenko wrote: > On Mon, Jul 20, 2020 at 7:31 PM Vaibhav Gupta <vaibhavgupta40@xxxxxxxxx> 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. > > > > This driver makes use of PCI helper functions like > > pci_save/restore_state(), pci_enable/disable_device(), pci_enable_wake() > > and pci_set_power_state() to do required operations. In generic mode, they > > are no longer needed. > > > > Change function parameter in both .suspend() and .resume() to > > "struct device*" type. Use dev_get_drvdata() to get drv data. > > > Compile-tested only. > > Yeah... > > ... > > > +static int __maybe_unused pch_spi_suspend(struct device *dev) > > { > > + struct pch_pd_dev_save *pd_dev_save = dev_get_drvdata(dev); > > > > + dev_dbg(dev, "%s ENTRY\n", __func__); > > > > pd_dev_save->board_dat->suspend_sts = true; > > > > + return 0; > > } > > > > +static int __maybe_unused pch_spi_resume(struct device *dev) > > { > > + struct pch_pd_dev_save *pd_dev_save = dev_get_drvdata(dev); > > > > + dev_dbg(dev, "%s ENTRY\n", __func__); > > > > > + device_wakeup_disable(dev); > > Here I left a result. Care to explain (and perhaps send a follow up > fix) where is the counterpart to this call? > Hello Andy, I didn't quite understand what you are trying to point at. And the result part. Yes, it seem I forgot to put device_wakeup_disable() in .suspend() when I removed pci_enable_wake(pdev, PCI_D3hot, 0); from there. It doesn't seem that .suspend() wants to enable-wake the device as the bool value passed to pci_enable_wake() is zero. Am I missing something else? Thanks Vaibhav Gupta > > + /* set suspend status to false */ > > + pd_dev_save->board_dat->suspend_sts = false; > > > + return 0; > > } > > > -- > With Best Regards, > Andy Shevchenko