aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/power/main.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2010-01-23 16:25:15 -0500
committerRafael J. Wysocki <rjw@sisk.pl>2010-02-26 14:39:10 -0500
commit0e06b4a891c6a108412fe24b4500f499da2cf8a1 (patch)
treeed254631bdc24e676b95b633d310b284a2df9c45 /drivers/base/power/main.c
parent5af84b82701a96be4b033aaa51d86c72e2ded061 (diff)
PM: Add a switch for disabling/enabling asynchronous suspend/resume
Add sysfs attribute /sys/power/pm_async allowing the user space to disable/enable asynchronous suspend/resume of devices. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r--drivers/base/power/main.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index 3b44c201ddad..7e79201b09bb 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -201,7 +201,7 @@ static void dpm_wait(struct device *dev, bool async)
201 if (!dev) 201 if (!dev)
202 return; 202 return;
203 203
204 if (async || dev->power.async_suspend) 204 if (async || (pm_async_enabled && dev->power.async_suspend))
205 wait_for_completion(&dev->power.completion); 205 wait_for_completion(&dev->power.completion);
206} 206}
207 207
@@ -563,7 +563,8 @@ static int device_resume(struct device *dev)
563{ 563{
564 INIT_COMPLETION(dev->power.completion); 564 INIT_COMPLETION(dev->power.completion);
565 565
566 if (dev->power.async_suspend && !pm_trace_is_enabled()) { 566 if (pm_async_enabled && dev->power.async_suspend
567 && !pm_trace_is_enabled()) {
567 get_device(dev); 568 get_device(dev);
568 async_schedule(async_resume, dev); 569 async_schedule(async_resume, dev);
569 return 0; 570 return 0;
@@ -867,7 +868,7 @@ static int device_suspend(struct device *dev)
867{ 868{
868 INIT_COMPLETION(dev->power.completion); 869 INIT_COMPLETION(dev->power.completion);
869 870
870 if (dev->power.async_suspend) { 871 if (pm_async_enabled && dev->power.async_suspend) {
871 get_device(dev); 872 get_device(dev);
872 async_schedule(async_suspend, dev); 873 async_schedule(async_suspend, dev);
873 return 0; 874 return 0;