diff options
Diffstat (limited to 'kernel/power/pm.c')
-rw-r--r-- | kernel/power/pm.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/kernel/power/pm.c b/kernel/power/pm.c index 33c508e857dd..0f6908cce1dd 100644 --- a/kernel/power/pm.c +++ b/kernel/power/pm.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/pm.h> | 25 | #include <linux/pm.h> |
26 | #include <linux/pm_legacy.h> | 26 | #include <linux/pm_legacy.h> |
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/mutex.h> | ||
28 | 29 | ||
29 | int pm_active; | 30 | int pm_active; |
30 | 31 | ||
@@ -40,7 +41,7 @@ int pm_active; | |||
40 | * until a resume but that will be fine. | 41 | * until a resume but that will be fine. |
41 | */ | 42 | */ |
42 | 43 | ||
43 | static DECLARE_MUTEX(pm_devs_lock); | 44 | static DEFINE_MUTEX(pm_devs_lock); |
44 | static LIST_HEAD(pm_devs); | 45 | static LIST_HEAD(pm_devs); |
45 | 46 | ||
46 | /** | 47 | /** |
@@ -67,9 +68,9 @@ struct pm_dev *pm_register(pm_dev_t type, | |||
67 | dev->id = id; | 68 | dev->id = id; |
68 | dev->callback = callback; | 69 | dev->callback = callback; |
69 | 70 | ||
70 | down(&pm_devs_lock); | 71 | mutex_lock(&pm_devs_lock); |
71 | list_add(&dev->entry, &pm_devs); | 72 | list_add(&dev->entry, &pm_devs); |
72 | up(&pm_devs_lock); | 73 | mutex_unlock(&pm_devs_lock); |
73 | } | 74 | } |
74 | return dev; | 75 | return dev; |
75 | } | 76 | } |
@@ -85,9 +86,9 @@ struct pm_dev *pm_register(pm_dev_t type, | |||
85 | void pm_unregister(struct pm_dev *dev) | 86 | void pm_unregister(struct pm_dev *dev) |
86 | { | 87 | { |
87 | if (dev) { | 88 | if (dev) { |
88 | down(&pm_devs_lock); | 89 | mutex_lock(&pm_devs_lock); |
89 | list_del(&dev->entry); | 90 | list_del(&dev->entry); |
90 | up(&pm_devs_lock); | 91 | mutex_unlock(&pm_devs_lock); |
91 | 92 | ||
92 | kfree(dev); | 93 | kfree(dev); |
93 | } | 94 | } |
@@ -118,7 +119,7 @@ void pm_unregister_all(pm_callback callback) | |||
118 | if (!callback) | 119 | if (!callback) |
119 | return; | 120 | return; |
120 | 121 | ||
121 | down(&pm_devs_lock); | 122 | mutex_lock(&pm_devs_lock); |
122 | entry = pm_devs.next; | 123 | entry = pm_devs.next; |
123 | while (entry != &pm_devs) { | 124 | while (entry != &pm_devs) { |
124 | struct pm_dev *dev = list_entry(entry, struct pm_dev, entry); | 125 | struct pm_dev *dev = list_entry(entry, struct pm_dev, entry); |
@@ -126,7 +127,7 @@ void pm_unregister_all(pm_callback callback) | |||
126 | if (dev->callback == callback) | 127 | if (dev->callback == callback) |
127 | __pm_unregister(dev); | 128 | __pm_unregister(dev); |
128 | } | 129 | } |
129 | up(&pm_devs_lock); | 130 | mutex_unlock(&pm_devs_lock); |
130 | } | 131 | } |
131 | 132 | ||
132 | /** | 133 | /** |
@@ -234,7 +235,7 @@ int pm_send_all(pm_request_t rqst, void *data) | |||
234 | { | 235 | { |
235 | struct list_head *entry; | 236 | struct list_head *entry; |
236 | 237 | ||
237 | down(&pm_devs_lock); | 238 | mutex_lock(&pm_devs_lock); |
238 | entry = pm_devs.next; | 239 | entry = pm_devs.next; |
239 | while (entry != &pm_devs) { | 240 | while (entry != &pm_devs) { |
240 | struct pm_dev *dev = list_entry(entry, struct pm_dev, entry); | 241 | struct pm_dev *dev = list_entry(entry, struct pm_dev, entry); |
@@ -246,13 +247,13 @@ int pm_send_all(pm_request_t rqst, void *data) | |||
246 | */ | 247 | */ |
247 | if (rqst == PM_SUSPEND) | 248 | if (rqst == PM_SUSPEND) |
248 | pm_undo_all(dev); | 249 | pm_undo_all(dev); |
249 | up(&pm_devs_lock); | 250 | mutex_unlock(&pm_devs_lock); |
250 | return status; | 251 | return status; |
251 | } | 252 | } |
252 | } | 253 | } |
253 | entry = entry->next; | 254 | entry = entry->next; |
254 | } | 255 | } |
255 | up(&pm_devs_lock); | 256 | mutex_unlock(&pm_devs_lock); |
256 | return 0; | 257 | return 0; |
257 | } | 258 | } |
258 | 259 | ||