aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/power/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/power/main.c')
-rw-r--r--drivers/base/power/main.c40
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
63static int async_error; 63static int async_error;
64 64
65static char *pm_verb(int event) 65static 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
210static void initcall_debug_report(struct device *dev, ktime_t calltime, 210static 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
406static void pm_dev_dbg(struct device *dev, pm_message_t state, char *info) 407static 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
413static void pm_dev_err(struct device *dev, pm_message_t state, char *info, 414static 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
420static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) 421#ifdef CONFIG_PM_DEBUG
422static 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
440static inline void dpm_show_time(ktime_t starttime, pm_message_t state,
441 const char *info) {}
442#endif /* CONFIG_PM_DEBUG */
436 443
437static int dpm_run_callback(pm_callback_t cb, struct device *dev, 444static 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)
535static int device_resume_noirq(struct device *dev, pm_message_t state, bool async) 542static 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)
665static int device_resume_early(struct device *dev, pm_message_t state, bool async) 672static 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);
793static int device_resume(struct device *dev, pm_message_t state, bool async) 800static 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)
955static void device_complete(struct device *dev, pm_message_t state) 962static 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)
1080static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool async) 1087static 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)
1225static int __device_suspend_late(struct device *dev, pm_message_t state, bool async) 1227static 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 */
1385static int legacy_suspend(struct device *dev, pm_message_t state, 1387static 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)
1426static int __device_suspend(struct device *dev, pm_message_t state, bool async) 1428static 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