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)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:01:29 +0000 (12:01 -0800)
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 2981af4..dad38e2 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,8 +196,15 @@ 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:
        return error ? error : n;
index 1c41ba2..63774df 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",
 };