diff --git a/[refs] b/[refs] index cc2fe1cbefc6..275f4f70815c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b5874f33bbaf00586d05de37706491ee37057e11 +refs/heads/master: a3bcbbee83f55cbaec9b2ad748e7300c7feb2192 diff --git a/trunk/drivers/power/pda_power.c b/trunk/drivers/power/pda_power.c index a232de6a5703..69f8aa3a6a4b 100644 --- a/trunk/drivers/power/pda_power.c +++ b/trunk/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/trunk/include/linux/pda_power.h b/trunk/include/linux/pda_power.h index d4cf7a2ceb3e..c9e4d814ff77 100644 --- a/trunk/include/linux/pda_power.h +++ b/trunk/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;