Messages in this thread Patch in this message | | | Date | Fri, 4 May 2012 20:38:09 -0700 | From | Anton Vorontsov <> | Subject | Re: [PATCH] max17042_battery: add suspend/resume hooks |
| |
On Tue, Mar 27, 2012 at 02:23:40AM +0530, Ramakrishna Pallala wrote: > This patch adds suspend/resume methods to the driver. > > In suspend method irq line is disabled to avoid i2c > read/write errors from the interrupt handler as the > i2c bus itself could be in suspend state. > In resume function irq line will be re-enabled. > > Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com> > ---
Applied, thank you!
[...] > +#else > +#define max17042_suspend NULL > +#define max17042_resume NULL > +#endif > + [...] > +static const struct dev_pm_ops max17042_pm_ops = { > + .suspend = max17042_suspend, > + .resume = max17042_resume, > +}; > + > static struct i2c_driver max17042_i2c_driver = { > .driver = { > .name = "max17042", > .of_match_table = of_match_ptr(max17042_dt_match), > + .pm = &max17042_pm_ops,
It's better to hide dev_pm_ops under CONFIG_PM, and pass NULL in case of !PM.
FYI, I applied this on top:
diff --git a/drivers/power/max17042_battery.c b/drivers/power/max17042_battery.c index 07dee97..738648d 100644 --- a/drivers/power/max17042_battery.c +++ b/drivers/power/max17042_battery.c @@ -727,7 +727,8 @@ static int max17042_suspend(struct device *dev) { struct max17042_chip *chip = dev_get_drvdata(dev); - /* disable the irq and enable irq_wake + /* + * disable the irq and enable irq_wake * capability to the interrupt line. */ if (chip->client->irq) { @@ -751,9 +752,15 @@ static int max17042_resume(struct device *dev) return 0; } + +static const struct dev_pm_ops max17042_pm_ops = { + .suspend = max17042_suspend, + .resume = max17042_resume, +}; + +#define MAX17042_PM_OPS (&max17042_pm_ops) #else -#define max17042_suspend NULL -#define max17042_resume NULL +#define MAX17042_PM_OPS NULL #endif #ifdef CONFIG_OF @@ -770,16 +777,11 @@ static const struct i2c_device_id max17042_id[] = { }; MODULE_DEVICE_TABLE(i2c, max17042_id); -static const struct dev_pm_ops max17042_pm_ops = { - .suspend = max17042_suspend, - .resume = max17042_resume, -}; - static struct i2c_driver max17042_i2c_driver = { .driver = { .name = "max17042", .of_match_table = of_match_ptr(max17042_dt_match), - .pm = &max17042_pm_ops, + .pm = MAX17042_PM_OPS, }, .probe = max17042_probe, .remove = __devexit_p(max17042_remove),
| |