aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Mack <daniel@caiaq.de>2010-04-12 23:33:22 +0200
committerAnton Vorontsov <cbouatmailru@gmail.com>2010-04-16 19:14:34 +0400
commita3bcbbee83f55cbaec9b2ad748e7300c7feb2192 (patch)
tree76f253affed1fc8da36b6e7dccbed626dc6dbcd5
parentwm831x_power: Use genirq (diff)
downloadlinux-dev-a3bcbbee83f55cbaec9b2ad748e7300c7feb2192.tar.xz
linux-dev-a3bcbbee83f55cbaec9b2ad748e7300c7feb2192.zip
pda_power: Add function callbacks for suspend and resume
Add function prototypes for power management events so they can be handled and used by platform implementations. Signed-off-by: Daniel Mack <daniel@caiaq.de> Cc: Dmitry Baryshkov <dbaryshkov@gmail.com> Cc: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
-rw-r--r--drivers/power/pda_power.c10
-rw-r--r--include/linux/pda_power.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/power/pda_power.c b/drivers/power/pda_power.c
index a232de6a5703..69f8aa3a6a4b 100644
--- a/drivers/power/pda_power.c
+++ b/drivers/power/pda_power.c
@@ -404,6 +404,13 @@ static int usb_wakeup_enabled;
static int pda_power_suspend(struct platform_device *pdev, pm_message_t state)
{
+ if (pdata->suspend) {
+ int ret = pdata->suspend(state);
+
+ if (ret)
+ return ret;
+ }
+
if (device_may_wakeup(&pdev->dev)) {
if (ac_irq)
ac_wakeup_enabled = !enable_irq_wake(ac_irq->start);
@@ -423,6 +430,9 @@ static int pda_power_resume(struct platform_device *pdev)
disable_irq_wake(ac_irq->start);
}
+ if (pdata->resume)
+ return pdata->resume();
+
return 0;
}
#else
diff --git a/include/linux/pda_power.h b/include/linux/pda_power.h
index d4cf7a2ceb3e..c9e4d814ff77 100644
--- a/include/linux/pda_power.h
+++ b/include/linux/pda_power.h
@@ -24,6 +24,8 @@ struct pda_power_pdata {
int (*is_usb_online)(void);
void (*set_charge)(int flags);
void (*exit)(struct device *dev);
+ int (*suspend)(pm_message_t state);
+ int (*resume)(void);
char **supplied_to;
size_t num_supplicants;