diff options
Diffstat (limited to 'drivers/base/power/resume.c')
-rw-r--r-- | drivers/base/power/resume.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/drivers/base/power/resume.c b/drivers/base/power/resume.c index a2c64188d713..00fd84ae6e66 100644 --- a/drivers/base/power/resume.c +++ b/drivers/base/power/resume.c | |||
@@ -29,14 +29,6 @@ int resume_device(struct device * dev) | |||
29 | 29 | ||
30 | down(&dev->sem); | 30 | down(&dev->sem); |
31 | 31 | ||
32 | if (dev->power.pm_parent | ||
33 | && dev->power.pm_parent->power.power_state.event) { | ||
34 | dev_err(dev, "PM: resume from %d, parent %s still %d\n", | ||
35 | dev->power.power_state.event, | ||
36 | dev->power.pm_parent->bus_id, | ||
37 | dev->power.pm_parent->power.power_state.event); | ||
38 | } | ||
39 | |||
40 | if (dev->bus && dev->bus->resume) { | 32 | if (dev->bus && dev->bus->resume) { |
41 | dev_dbg(dev,"resuming\n"); | 33 | dev_dbg(dev,"resuming\n"); |
42 | error = dev->bus->resume(dev); | 34 | error = dev->bus->resume(dev); |
@@ -80,7 +72,7 @@ static int resume_device_early(struct device * dev) | |||
80 | */ | 72 | */ |
81 | void dpm_resume(void) | 73 | void dpm_resume(void) |
82 | { | 74 | { |
83 | down(&dpm_list_sem); | 75 | mutex_lock(&dpm_list_mtx); |
84 | while(!list_empty(&dpm_off)) { | 76 | while(!list_empty(&dpm_off)) { |
85 | struct list_head * entry = dpm_off.next; | 77 | struct list_head * entry = dpm_off.next; |
86 | struct device * dev = to_device(entry); | 78 | struct device * dev = to_device(entry); |
@@ -88,13 +80,12 @@ void dpm_resume(void) | |||
88 | get_device(dev); | 80 | get_device(dev); |
89 | list_move_tail(entry, &dpm_active); | 81 | list_move_tail(entry, &dpm_active); |
90 | 82 | ||
91 | up(&dpm_list_sem); | 83 | mutex_unlock(&dpm_list_mtx); |
92 | if (!dev->power.prev_state.event) | 84 | resume_device(dev); |
93 | resume_device(dev); | 85 | mutex_lock(&dpm_list_mtx); |
94 | down(&dpm_list_sem); | ||
95 | put_device(dev); | 86 | put_device(dev); |
96 | } | 87 | } |
97 | up(&dpm_list_sem); | 88 | mutex_unlock(&dpm_list_mtx); |
98 | } | 89 | } |
99 | 90 | ||
100 | 91 | ||
@@ -108,9 +99,9 @@ void dpm_resume(void) | |||
108 | void device_resume(void) | 99 | void device_resume(void) |
109 | { | 100 | { |
110 | might_sleep(); | 101 | might_sleep(); |
111 | down(&dpm_sem); | 102 | mutex_lock(&dpm_mtx); |
112 | dpm_resume(); | 103 | dpm_resume(); |
113 | up(&dpm_sem); | 104 | mutex_unlock(&dpm_mtx); |
114 | } | 105 | } |
115 | 106 | ||
116 | EXPORT_SYMBOL_GPL(device_resume); | 107 | EXPORT_SYMBOL_GPL(device_resume); |