diff options
Diffstat (limited to 'kernel/power/main.c')
-rw-r--r-- | kernel/power/main.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/kernel/power/main.c b/kernel/power/main.c index 873228c71dab..500eb87f643d 100644 --- a/kernel/power/main.c +++ b/kernel/power/main.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * | 8 | * |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/module.h> | ||
11 | #include <linux/suspend.h> | 12 | #include <linux/suspend.h> |
12 | #include <linux/kobject.h> | 13 | #include <linux/kobject.h> |
13 | #include <linux/string.h> | 14 | #include <linux/string.h> |
@@ -18,13 +19,14 @@ | |||
18 | #include <linux/console.h> | 19 | #include <linux/console.h> |
19 | #include <linux/cpu.h> | 20 | #include <linux/cpu.h> |
20 | #include <linux/resume-trace.h> | 21 | #include <linux/resume-trace.h> |
22 | #include <linux/freezer.h> | ||
21 | 23 | ||
22 | #include "power.h" | 24 | #include "power.h" |
23 | 25 | ||
24 | /*This is just an arbitrary number */ | 26 | /*This is just an arbitrary number */ |
25 | #define FREE_PAGE_NUMBER (100) | 27 | #define FREE_PAGE_NUMBER (100) |
26 | 28 | ||
27 | DECLARE_MUTEX(pm_sem); | 29 | DEFINE_MUTEX(pm_mutex); |
28 | 30 | ||
29 | struct pm_ops *pm_ops; | 31 | struct pm_ops *pm_ops; |
30 | suspend_disk_method_t pm_disk_mode = PM_DISK_SHUTDOWN; | 32 | suspend_disk_method_t pm_disk_mode = PM_DISK_SHUTDOWN; |
@@ -36,9 +38,9 @@ suspend_disk_method_t pm_disk_mode = PM_DISK_SHUTDOWN; | |||
36 | 38 | ||
37 | void pm_set_ops(struct pm_ops * ops) | 39 | void pm_set_ops(struct pm_ops * ops) |
38 | { | 40 | { |
39 | down(&pm_sem); | 41 | mutex_lock(&pm_mutex); |
40 | pm_ops = ops; | 42 | pm_ops = ops; |
41 | up(&pm_sem); | 43 | mutex_unlock(&pm_mutex); |
42 | } | 44 | } |
43 | 45 | ||
44 | 46 | ||
@@ -182,7 +184,7 @@ static int enter_state(suspend_state_t state) | |||
182 | 184 | ||
183 | if (!valid_state(state)) | 185 | if (!valid_state(state)) |
184 | return -ENODEV; | 186 | return -ENODEV; |
185 | if (down_trylock(&pm_sem)) | 187 | if (!mutex_trylock(&pm_mutex)) |
186 | return -EBUSY; | 188 | return -EBUSY; |
187 | 189 | ||
188 | if (state == PM_SUSPEND_DISK) { | 190 | if (state == PM_SUSPEND_DISK) { |
@@ -200,7 +202,7 @@ static int enter_state(suspend_state_t state) | |||
200 | pr_debug("PM: Finishing wakeup.\n"); | 202 | pr_debug("PM: Finishing wakeup.\n"); |
201 | suspend_finish(state); | 203 | suspend_finish(state); |
202 | Unlock: | 204 | Unlock: |
203 | up(&pm_sem); | 205 | mutex_unlock(&pm_mutex); |
204 | return error; | 206 | return error; |
205 | } | 207 | } |
206 | 208 | ||
@@ -229,7 +231,7 @@ int pm_suspend(suspend_state_t state) | |||
229 | return -EINVAL; | 231 | return -EINVAL; |
230 | } | 232 | } |
231 | 233 | ||
232 | 234 | EXPORT_SYMBOL(pm_suspend); | |
233 | 235 | ||
234 | decl_subsys(power,NULL,NULL); | 236 | decl_subsys(power,NULL,NULL); |
235 | 237 | ||