]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
PM / Wakeup: Replace pm_check_wakeup_events() with pm_wakeup_pending()
authorRafael J. Wysocki <rjw@sisk.pl>
Fri, 3 Dec 2010 21:58:31 +0000 (22:58 +0100)
committerRafael J. Wysocki <rjw@sisk.pl>
Fri, 24 Dec 2010 14:02:42 +0000 (15:02 +0100)
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: Rafael J. Wysocki <rjw@sisk.pl>
drivers/base/power/main.c
drivers/base/power/wakeup.c
include/linux/suspend.h
kernel/power/hibernate.c
kernel/power/process.c
kernel/power/suspend.c

index 4747a1e8b44af43432d5f96b9d4040c215f30bc6..8a5258339ca2c45d6d097d4a14ab1cfd721694b2 100644 (file)
@@ -1056,7 +1056,7 @@ static int dpm_prepare(pm_message_t state)
                if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
                        pm_wakeup_event(dev, 0);
 
-               if (!pm_check_wakeup_events()) {
+               if (pm_wakeup_pending()) {
                        pm_runtime_put_sync(dev);
                        error = -EBUSY;
                } else {
index 71c5528e1c357a81112c6f79b1e91f013a58e3aa..8ec406d8f548eae6b84ed692236c12ee45139fa4 100644 (file)
@@ -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
- * value from the past to check if new wakeup events have been registered since
- * the old value was stored.  Check if the current number of wakeup events being
- * processed is zero.
+ * value from the past and return true if new wakeup events have been registered
+ * since the old value was stored.  Also return true if the current number of
+ * wakeup events being processed is different from zero.
  */
-bool pm_check_wakeup_events(void)
+bool pm_wakeup_pending(void)
 {
        unsigned long flags;
-       bool ret = true;
+       bool ret = false;
 
        spin_lock_irqsave(&events_lock, flags);
        if (events_check_enabled) {
-               ret = ((unsigned int)atomic_read(&event_count) == saved_count)
-                       && !atomic_read(&events_in_progress);
-               events_check_enabled = ret;
+               ret = ((unsigned int)atomic_read(&event_count) != saved_count)
+                       || atomic_read(&events_in_progress);
+               events_check_enabled = !ret;
        }
        spin_unlock_irqrestore(&events_lock, flags);
-       if (!ret)
+       if (ret)
                pm_wakeup_update_hit_counts();
        return ret;
 }
index 26697514c5ece07d72f6e07022f43ee86d187de0..144b34be5c326a0a9ea88f3413c99760cc7b5dce 100644 (file)
@@ -292,7 +292,7 @@ extern int unregister_pm_notifier(struct notifier_block *nb);
 /* drivers/base/power/wakeup.c */
 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_save_wakeup_count(unsigned int count);
 #else /* !CONFIG_PM_SLEEP */
@@ -309,7 +309,7 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
 
 #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 */
 
 extern struct mutex pm_mutex;
index c9a98beffee494c3ab334e964ae04d15315af843..870f72bc72aed308049e3862ee9f62a3cf9be4f4 100644 (file)
@@ -278,7 +278,7 @@ static int create_image(int platform_mode)
                goto Enable_irqs;
        }
 
-       if (hibernation_test(TEST_CORE) || !pm_check_wakeup_events())
+       if (hibernation_test(TEST_CORE) || pm_wakeup_pending())
                goto Power_up;
 
        in_suspend = 1;
@@ -516,7 +516,7 @@ int hibernation_platform_enter(void)
 
        local_irq_disable();
        sysdev_suspend(PMSG_HIBERNATE);
-       if (!pm_check_wakeup_events()) {
+       if (pm_wakeup_pending()) {
                error = -EAGAIN;
                goto Power_up;
        }
index eb2c88a9e5623efcbcd16b6a6c90fd2e19497885..d6d2a10320e03ef0795108fd147d161616f1bab5 100644 (file)
@@ -85,7 +85,7 @@ static int try_to_freeze_tasks(bool sig_only)
                if (!todo || time_after(jiffies, end_time))
                        break;
 
-               if (!pm_check_wakeup_events()) {
+               if (pm_wakeup_pending()) {
                        wakeup = true;
                        break;
                }
index ecf770509d0d1bb9dce2381716d6e7583ee6c492..5e644e3a6bf3312bb676f79d736da07389098e33 100644 (file)
@@ -163,7 +163,7 @@ static int suspend_enter(suspend_state_t state)
 
        error = sysdev_suspend(PMSG_SUSPEND);
        if (!error) {
-               if (!suspend_test(TEST_CORE) && pm_check_wakeup_events()) {
+               if (!(suspend_test(TEST_CORE) || pm_wakeup_pending())) {
                        error = suspend_ops->enter(state);
                        events_check_enabled = false;
                }