Commit a2867e08 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

PM / Wakeup: Replace pm_check_wakeup_events() with pm_wakeup_pending()

To avoid confusion with the meaning and return value of
pm_check_wakeup_events() replace it with pm_wakeup_pending() that
will work the other way around (ie. return true when system-wide
power transition should be aborted).
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 1e75227e
...@@ -1056,7 +1056,7 @@ static int dpm_prepare(pm_message_t state) ...@@ -1056,7 +1056,7 @@ static int dpm_prepare(pm_message_t state)
if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
pm_wakeup_event(dev, 0); pm_wakeup_event(dev, 0);
if (!pm_check_wakeup_events()) { if (pm_wakeup_pending()) {
pm_runtime_put_sync(dev); pm_runtime_put_sync(dev);
error = -EBUSY; error = -EBUSY;
} else { } else {
......
...@@ -542,26 +542,26 @@ static void pm_wakeup_update_hit_counts(void) ...@@ -542,26 +542,26 @@ static void pm_wakeup_update_hit_counts(void)
} }
/** /**
* pm_check_wakeup_events - Check for new wakeup events. * pm_wakeup_pending - Check if power transition in progress should be aborted.
* *
* Compare the current number of registered wakeup events with its preserved * Compare the current number of registered wakeup events with its preserved
* value from the past to check if new wakeup events have been registered since * value from the past and return true if new wakeup events have been registered
* the old value was stored. Check if the current number of wakeup events being * since the old value was stored. Also return true if the current number of
* processed is zero. * wakeup events being processed is different from zero.
*/ */
bool pm_check_wakeup_events(void) bool pm_wakeup_pending(void)
{ {
unsigned long flags; unsigned long flags;
bool ret = true; bool ret = false;
spin_lock_irqsave(&events_lock, flags); spin_lock_irqsave(&events_lock, flags);
if (events_check_enabled) { if (events_check_enabled) {
ret = ((unsigned int)atomic_read(&event_count) == saved_count) ret = ((unsigned int)atomic_read(&event_count) != saved_count)
&& !atomic_read(&events_in_progress); || atomic_read(&events_in_progress);
events_check_enabled = ret; events_check_enabled = !ret;
} }
spin_unlock_irqrestore(&events_lock, flags); spin_unlock_irqrestore(&events_lock, flags);
if (!ret) if (ret)
pm_wakeup_update_hit_counts(); pm_wakeup_update_hit_counts();
return ret; return ret;
} }
......
...@@ -292,7 +292,7 @@ extern int unregister_pm_notifier(struct notifier_block *nb); ...@@ -292,7 +292,7 @@ extern int unregister_pm_notifier(struct notifier_block *nb);
/* drivers/base/power/wakeup.c */ /* drivers/base/power/wakeup.c */
extern bool events_check_enabled; extern bool events_check_enabled;
extern bool pm_check_wakeup_events(void); extern bool pm_wakeup_pending(void);
extern bool pm_get_wakeup_count(unsigned int *count); extern bool pm_get_wakeup_count(unsigned int *count);
extern bool pm_save_wakeup_count(unsigned int count); extern bool pm_save_wakeup_count(unsigned int count);
#else /* !CONFIG_PM_SLEEP */ #else /* !CONFIG_PM_SLEEP */
...@@ -309,7 +309,7 @@ static inline int unregister_pm_notifier(struct notifier_block *nb) ...@@ -309,7 +309,7 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
#define pm_notifier(fn, pri) do { (void)(fn); } while (0) #define pm_notifier(fn, pri) do { (void)(fn); } while (0)
static inline bool pm_check_wakeup_events(void) { return true; } static inline bool pm_wakeup_pending(void) { return false; }
#endif /* !CONFIG_PM_SLEEP */ #endif /* !CONFIG_PM_SLEEP */
extern struct mutex pm_mutex; extern struct mutex pm_mutex;
......
...@@ -278,7 +278,7 @@ static int create_image(int platform_mode) ...@@ -278,7 +278,7 @@ static int create_image(int platform_mode)
goto Enable_irqs; goto Enable_irqs;
} }
if (hibernation_test(TEST_CORE) || !pm_check_wakeup_events()) if (hibernation_test(TEST_CORE) || pm_wakeup_pending())
goto Power_up; goto Power_up;
in_suspend = 1; in_suspend = 1;
...@@ -516,7 +516,7 @@ int hibernation_platform_enter(void) ...@@ -516,7 +516,7 @@ int hibernation_platform_enter(void)
local_irq_disable(); local_irq_disable();
sysdev_suspend(PMSG_HIBERNATE); sysdev_suspend(PMSG_HIBERNATE);
if (!pm_check_wakeup_events()) { if (pm_wakeup_pending()) {
error = -EAGAIN; error = -EAGAIN;
goto Power_up; goto Power_up;
} }
......
...@@ -85,7 +85,7 @@ static int try_to_freeze_tasks(bool sig_only) ...@@ -85,7 +85,7 @@ static int try_to_freeze_tasks(bool sig_only)
if (!todo || time_after(jiffies, end_time)) if (!todo || time_after(jiffies, end_time))
break; break;
if (!pm_check_wakeup_events()) { if (pm_wakeup_pending()) {
wakeup = true; wakeup = true;
break; break;
} }
......
...@@ -163,7 +163,7 @@ static int suspend_enter(suspend_state_t state) ...@@ -163,7 +163,7 @@ static int suspend_enter(suspend_state_t state)
error = sysdev_suspend(PMSG_SUSPEND); error = sysdev_suspend(PMSG_SUSPEND);
if (!error) { if (!error) {
if (!suspend_test(TEST_CORE) && pm_check_wakeup_events()) { if (!(suspend_test(TEST_CORE) || pm_wakeup_pending())) {
error = suspend_ops->enter(state); error = suspend_ops->enter(state);
events_check_enabled = false; events_check_enabled = false;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment