diff options
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r-- | drivers/base/power/main.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 9faee1c893e5..c99f8730de82 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
@@ -62,7 +62,7 @@ static pm_message_t pm_transition; | |||
62 | 62 | ||
63 | static int async_error; | 63 | static int async_error; |
64 | 64 | ||
65 | static char *pm_verb(int event) | 65 | static const char *pm_verb(int event) |
66 | { | 66 | { |
67 | switch (event) { | 67 | switch (event) { |
68 | case PM_EVENT_SUSPEND: | 68 | case PM_EVENT_SUSPEND: |
@@ -208,7 +208,8 @@ static ktime_t initcall_debug_start(struct device *dev) | |||
208 | } | 208 | } |
209 | 209 | ||
210 | static void initcall_debug_report(struct device *dev, ktime_t calltime, | 210 | static void initcall_debug_report(struct device *dev, ktime_t calltime, |
211 | int error, pm_message_t state, char *info) | 211 | int error, pm_message_t state, |
212 | const char *info) | ||
212 | { | 213 | { |
213 | ktime_t rettime; | 214 | ktime_t rettime; |
214 | s64 nsecs; | 215 | s64 nsecs; |
@@ -403,21 +404,23 @@ static pm_callback_t pm_noirq_op(const struct dev_pm_ops *ops, pm_message_t stat | |||
403 | return NULL; | 404 | return NULL; |
404 | } | 405 | } |
405 | 406 | ||
406 | static void pm_dev_dbg(struct device *dev, pm_message_t state, char *info) | 407 | static void pm_dev_dbg(struct device *dev, pm_message_t state, const char *info) |
407 | { | 408 | { |
408 | dev_dbg(dev, "%s%s%s\n", info, pm_verb(state.event), | 409 | dev_dbg(dev, "%s%s%s\n", info, pm_verb(state.event), |
409 | ((state.event & PM_EVENT_SLEEP) && device_may_wakeup(dev)) ? | 410 | ((state.event & PM_EVENT_SLEEP) && device_may_wakeup(dev)) ? |
410 | ", may wakeup" : ""); | 411 | ", may wakeup" : ""); |
411 | } | 412 | } |
412 | 413 | ||
413 | static void pm_dev_err(struct device *dev, pm_message_t state, char *info, | 414 | static void pm_dev_err(struct device *dev, pm_message_t state, const char *info, |
414 | int error) | 415 | int error) |
415 | { | 416 | { |
416 | printk(KERN_ERR "PM: Device %s failed to %s%s: error %d\n", | 417 | printk(KERN_ERR "PM: Device %s failed to %s%s: error %d\n", |
417 | dev_name(dev), pm_verb(state.event), info, error); | 418 | dev_name(dev), pm_verb(state.event), info, error); |
418 | } | 419 | } |
419 | 420 | ||
420 | static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) | 421 | #ifdef CONFIG_PM_DEBUG |
422 | static void dpm_show_time(ktime_t starttime, pm_message_t state, | ||
423 | const char *info) | ||
421 | { | 424 | { |
422 | ktime_t calltime; | 425 | ktime_t calltime; |
423 | u64 usecs64; | 426 | u64 usecs64; |
@@ -433,9 +436,13 @@ static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) | |||
433 | info ?: "", info ? " " : "", pm_verb(state.event), | 436 | info ?: "", info ? " " : "", pm_verb(state.event), |
434 | usecs / USEC_PER_MSEC, usecs % USEC_PER_MSEC); | 437 | usecs / USEC_PER_MSEC, usecs % USEC_PER_MSEC); |
435 | } | 438 | } |
439 | #else | ||
440 | static inline void dpm_show_time(ktime_t starttime, pm_message_t state, | ||
441 | const char *info) {} | ||
442 | #endif /* CONFIG_PM_DEBUG */ | ||
436 | 443 | ||
437 | static int dpm_run_callback(pm_callback_t cb, struct device *dev, | 444 | static int dpm_run_callback(pm_callback_t cb, struct device *dev, |
438 | pm_message_t state, char *info) | 445 | pm_message_t state, const char *info) |
439 | { | 446 | { |
440 | ktime_t calltime; | 447 | ktime_t calltime; |
441 | int error; | 448 | int error; |
@@ -535,7 +542,7 @@ static void dpm_watchdog_clear(struct dpm_watchdog *wd) | |||
535 | static int device_resume_noirq(struct device *dev, pm_message_t state, bool async) | 542 | static int device_resume_noirq(struct device *dev, pm_message_t state, bool async) |
536 | { | 543 | { |
537 | pm_callback_t callback = NULL; | 544 | pm_callback_t callback = NULL; |
538 | char *info = NULL; | 545 | const char *info = NULL; |
539 | int error = 0; | 546 | int error = 0; |
540 | 547 | ||
541 | TRACE_DEVICE(dev); | 548 | TRACE_DEVICE(dev); |
@@ -665,7 +672,7 @@ void dpm_resume_noirq(pm_message_t state) | |||
665 | static int device_resume_early(struct device *dev, pm_message_t state, bool async) | 672 | static int device_resume_early(struct device *dev, pm_message_t state, bool async) |
666 | { | 673 | { |
667 | pm_callback_t callback = NULL; | 674 | pm_callback_t callback = NULL; |
668 | char *info = NULL; | 675 | const char *info = NULL; |
669 | int error = 0; | 676 | int error = 0; |
670 | 677 | ||
671 | TRACE_DEVICE(dev); | 678 | TRACE_DEVICE(dev); |
@@ -793,7 +800,7 @@ EXPORT_SYMBOL_GPL(dpm_resume_start); | |||
793 | static int device_resume(struct device *dev, pm_message_t state, bool async) | 800 | static int device_resume(struct device *dev, pm_message_t state, bool async) |
794 | { | 801 | { |
795 | pm_callback_t callback = NULL; | 802 | pm_callback_t callback = NULL; |
796 | char *info = NULL; | 803 | const char *info = NULL; |
797 | int error = 0; | 804 | int error = 0; |
798 | DECLARE_DPM_WATCHDOG_ON_STACK(wd); | 805 | DECLARE_DPM_WATCHDOG_ON_STACK(wd); |
799 | 806 | ||
@@ -955,7 +962,7 @@ void dpm_resume(pm_message_t state) | |||
955 | static void device_complete(struct device *dev, pm_message_t state) | 962 | static void device_complete(struct device *dev, pm_message_t state) |
956 | { | 963 | { |
957 | void (*callback)(struct device *) = NULL; | 964 | void (*callback)(struct device *) = NULL; |
958 | char *info = NULL; | 965 | const char *info = NULL; |
959 | 966 | ||
960 | if (dev->power.syscore) | 967 | if (dev->power.syscore) |
961 | return; | 968 | return; |
@@ -1080,7 +1087,7 @@ static pm_message_t resume_event(pm_message_t sleep_state) | |||
1080 | static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool async) | 1087 | static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool async) |
1081 | { | 1088 | { |
1082 | pm_callback_t callback = NULL; | 1089 | pm_callback_t callback = NULL; |
1083 | char *info = NULL; | 1090 | const char *info = NULL; |
1084 | int error = 0; | 1091 | int error = 0; |
1085 | 1092 | ||
1086 | TRACE_DEVICE(dev); | 1093 | TRACE_DEVICE(dev); |
@@ -1091,11 +1098,6 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a | |||
1091 | if (async_error) | 1098 | if (async_error) |
1092 | goto Complete; | 1099 | goto Complete; |
1093 | 1100 | ||
1094 | if (pm_wakeup_pending()) { | ||
1095 | async_error = -EBUSY; | ||
1096 | goto Complete; | ||
1097 | } | ||
1098 | |||
1099 | if (dev->power.syscore || dev->power.direct_complete) | 1101 | if (dev->power.syscore || dev->power.direct_complete) |
1100 | goto Complete; | 1102 | goto Complete; |
1101 | 1103 | ||
@@ -1225,7 +1227,7 @@ int dpm_suspend_noirq(pm_message_t state) | |||
1225 | static int __device_suspend_late(struct device *dev, pm_message_t state, bool async) | 1227 | static int __device_suspend_late(struct device *dev, pm_message_t state, bool async) |
1226 | { | 1228 | { |
1227 | pm_callback_t callback = NULL; | 1229 | pm_callback_t callback = NULL; |
1228 | char *info = NULL; | 1230 | const char *info = NULL; |
1229 | int error = 0; | 1231 | int error = 0; |
1230 | 1232 | ||
1231 | TRACE_DEVICE(dev); | 1233 | TRACE_DEVICE(dev); |
@@ -1384,7 +1386,7 @@ EXPORT_SYMBOL_GPL(dpm_suspend_end); | |||
1384 | */ | 1386 | */ |
1385 | static int legacy_suspend(struct device *dev, pm_message_t state, | 1387 | static int legacy_suspend(struct device *dev, pm_message_t state, |
1386 | int (*cb)(struct device *dev, pm_message_t state), | 1388 | int (*cb)(struct device *dev, pm_message_t state), |
1387 | char *info) | 1389 | const char *info) |
1388 | { | 1390 | { |
1389 | int error; | 1391 | int error; |
1390 | ktime_t calltime; | 1392 | ktime_t calltime; |
@@ -1426,7 +1428,7 @@ static void dpm_clear_suppliers_direct_complete(struct device *dev) | |||
1426 | static int __device_suspend(struct device *dev, pm_message_t state, bool async) | 1428 | static int __device_suspend(struct device *dev, pm_message_t state, bool async) |
1427 | { | 1429 | { |
1428 | pm_callback_t callback = NULL; | 1430 | pm_callback_t callback = NULL; |
1429 | char *info = NULL; | 1431 | const char *info = NULL; |
1430 | int error = 0; | 1432 | int error = 0; |
1431 | DECLARE_DPM_WATCHDOG_ON_STACK(wd); | 1433 | DECLARE_DPM_WATCHDOG_ON_STACK(wd); |
1432 | 1434 | ||