diff options
author | Chaitanya Bandi <bandik@nvidia.com> | 2013-02-26 13:38:05 +0530 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2013-03-01 12:48:04 -0800 |
commit | c97273f0439c99a0b5df7c524d9377b7c03dcd05 (patch) | |
tree | 7d17963cedf96bf89fd795a889dd651d201d3959 /drivers/power | |
parent | 3ca26a2ccc6f1b3ff64a73bc093917eda209de7c (diff) |
power: max77665: Add suspend/resume support for max77665
Added suspend/resume support for max77665 charger
Bug 1238671
Change-Id: Iab0d5cb8b9159c26bcc9fc76648faefc03ffbaed
Signed-off-by: Chaitanya Bandi <bandik@nvidia.com>
Reviewed-on: http://git-master/r/204108
Reviewed-by: Syed Rafiuddin <srafiuddin@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/max77665-charger.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/drivers/power/max77665-charger.c b/drivers/power/max77665-charger.c index a74f6633a83b..d9d26b154ebe 100644 --- a/drivers/power/max77665-charger.c +++ b/drivers/power/max77665-charger.c @@ -361,9 +361,8 @@ static int charger_extcon_notifier(struct notifier_block *self, return NOTIFY_DONE; } -static irqreturn_t max77665_charger_irq_handler(int irq, void *data) +static int max77665_update_charger_status(struct max77665_charger *charger) { - struct max77665_charger *charger = data; int ret; uint32_t read_val; @@ -404,6 +403,14 @@ static irqreturn_t max77665_charger_irq_handler(int irq, void *data) goto error; } error: + return ret; +} + +static irqreturn_t max77665_charger_irq_handler(int irq, void *data) +{ + struct max77665_charger *charger = data; + int ret; + ret = max77665_update_charger_status(charger); return IRQ_HANDLED; } @@ -548,11 +555,35 @@ static int __devexit max77665_battery_remove(struct platform_device *pdev) return 0; } +#ifdef CONFIG_PM_SLEEP +static int max77665_suspend(struct device *dev) +{ + return 0; +} +static int max77665_resume(struct device *dev) +{ + struct platform_device *pdev = to_platform_device(dev); + struct max77665_charger *charger = platform_get_drvdata(pdev); + int ret; + ret = max77665_update_charger_status(charger); + if (ret < 0) + dev_err(charger->dev, "error occured in resume\n"); + return ret; +} +static const struct dev_pm_ops max77665_pm = { + .suspend = max77665_suspend, + .resume = max77665_resume, +}; +#define MAX77665_PM (&max77665_pm) +#else +#define MAX77665_PM NULL +#endif static struct platform_driver max77665_battery_driver = { .driver = { .name = "max77665-charger", .owner = THIS_MODULE, + .pm = MAX77665_PM, }, .probe = max77665_battery_probe, .remove = __devexit_p(max77665_battery_remove), |