diff options
author | Rafael J. Wysocki <rjw@sisk.pl> | 2010-01-23 16:25:15 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rjw@sisk.pl> | 2010-02-26 14:39:10 -0500 |
commit | 0e06b4a891c6a108412fe24b4500f499da2cf8a1 (patch) | |
tree | ed254631bdc24e676b95b633d310b284a2df9c45 /drivers/base/power/main.c | |
parent | 5af84b82701a96be4b033aaa51d86c72e2ded061 (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.c | 7 |
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; |