PM: Enable early suspend through /sys/power/state
authorArve Hjønnevåg <arve@android.com>
Fri, 10 Oct 2008 02:17:11 +0000 (19:17 -0700)
committerColin Cross <ccross@android.com>
Thu, 30 Sep 2010 00:49:07 +0000 (17:49 -0700)
If EARLYSUSPEND is enabled then writes to /sys/power/state no longer
blocks, and the kernel will try to enter the requested state every
time no wakelocks are held. Write "on" to resume normal operation.

kernel/power/main.c
kernel/power/suspend.c

index 62b0bc6e4983cfdec1a2b4feb0f34d2235781ad6..dcc4d58069f1eb59f691c135a57675d4f7188c10 100644 (file)
@@ -173,7 +173,11 @@ static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,
                           const char *buf, size_t n)
 {
 #ifdef CONFIG_SUSPEND
+#ifdef CONFIG_EARLYSUSPEND
+       suspend_state_t state = PM_SUSPEND_ON;
+#else
        suspend_state_t state = PM_SUSPEND_STANDBY;
+#endif
        const char * const *s;
 #endif
        char *p;
@@ -195,7 +199,14 @@ static ssize_t state_store(struct kobject *kobj, struct kobj_attribute *attr,
                        break;
        }
        if (state < PM_SUSPEND_MAX && *s)
+#ifdef CONFIG_EARLYSUSPEND
+               if (state == PM_SUSPEND_ON || valid_state(state)) {
+                       error = 0;
+                       request_suspend_state(state);
+               }
+#else
                error = enter_state(state);
+#endif
 #endif
 
  Exit:
index 7335952ee473956e6a1e7b57f3d397220e6c5536..e84f5b26f1dd29ac99ca25955e4562154a6291e0 100644 (file)
@@ -26,6 +26,9 @@
 #include "power.h"
 
 const char *const pm_states[PM_SUSPEND_MAX] = {
+#ifdef CONFIG_EARLYSUSPEND
+       [PM_SUSPEND_ON]         = "on",
+#endif
        [PM_SUSPEND_STANDBY]    = "standby",
        [PM_SUSPEND_MEM]        = "mem",
 };