lkml.org 
[lkml]   [2012]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [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),

\
 
 \ /
  Last update: 2012-05-05 06:01    [W:0.030 / U:0.180 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site