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>
Tue, 14 Jun 2011 16:08:42 +0000 (09:08 -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 2981af4ce7cbbce49314e2fb2fef9fa13496f41e..dad38e2f64bfded06e94849ae5d81685250b7d46 100644 (file)
@@ -170,7 +170,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;
@@ -192,7 +196,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 1c41ba215419d4d086fc27113caa20bcc8a81d6d..63774df522bf20ce5d96b00f1d9a414f2774c214 100644 (file)
@@ -28,6 +28,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",
 };