pm: add new PM_EVENT codes for runtime power transitions
authorAlan Stern <stern@rowland.harvard.edu>
Thu, 24 Jul 2008 04:28:37 +0000 (21:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 24 Jul 2008 17:47:23 +0000 (10:47 -0700)
This patch (as1112) adds some new PM_EVENT_* codes for use by kernel
subsystems.  They describe runtime power-state transitions of the sort already
implemented by the USB subsystem.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/pm.h

index ed98d967f9fb8acf2eb1c83606c792abea143c78..4dcce54b6d76f798e11f3e3ae08032ee0fbac592 100644 (file)
@@ -245,6 +245,21 @@ struct pm_ext_ops {
  * RECOVER     Creation of a hibernation image or restoration of the main
  *             memory contents from a hibernation image has failed, call
  *             ->thaw() and ->complete() for all devices.
+ *
+ * The following PM_EVENT_ messages are defined for internal use by
+ * kernel subsystems.  They are never issued by the PM core.
+ *
+ * USER_SUSPEND                Manual selective suspend was issued by userspace.
+ *
+ * USER_RESUME         Manual selective resume was issued by userspace.
+ *
+ * REMOTE_WAKEUP       Remote-wakeup request was received from the device.
+ *
+ * AUTO_SUSPEND                Automatic (device idle) runtime suspend was
+ *                     initiated by the subsystem.
+ *
+ * AUTO_RESUME         Automatic (device needed) runtime resume was
+ *                     requested by a driver.
  */
 
 #define PM_EVENT_ON            0x0000
@@ -256,9 +271,18 @@ struct pm_ext_ops {
 #define PM_EVENT_THAW          0x0020
 #define PM_EVENT_RESTORE       0x0040
 #define PM_EVENT_RECOVER       0x0080
+#define PM_EVENT_USER          0x0100
+#define PM_EVENT_REMOTE                0x0200
+#define PM_EVENT_AUTO          0x0400
 
-#define PM_EVENT_SLEEP (PM_EVENT_SUSPEND | PM_EVENT_HIBERNATE)
+#define PM_EVENT_SLEEP         (PM_EVENT_SUSPEND | PM_EVENT_HIBERNATE)
+#define PM_EVENT_USER_SUSPEND  (PM_EVENT_USER | PM_EVENT_SUSPEND)
+#define PM_EVENT_USER_RESUME   (PM_EVENT_USER | PM_EVENT_RESUME)
+#define PM_EVENT_REMOTE_WAKEUP (PM_EVENT_REMOTE | PM_EVENT_RESUME)
+#define PM_EVENT_AUTO_SUSPEND  (PM_EVENT_AUTO | PM_EVENT_SUSPEND)
+#define PM_EVENT_AUTO_RESUME   (PM_EVENT_AUTO | PM_EVENT_RESUME)
 
+#define PMSG_ON                ((struct pm_message){ .event = PM_EVENT_ON, })
 #define PMSG_FREEZE    ((struct pm_message){ .event = PM_EVENT_FREEZE, })
 #define PMSG_QUIESCE   ((struct pm_message){ .event = PM_EVENT_QUIESCE, })
 #define PMSG_SUSPEND   ((struct pm_message){ .event = PM_EVENT_SUSPEND, })
@@ -267,7 +291,16 @@ struct pm_ext_ops {
 #define PMSG_THAW      ((struct pm_message){ .event = PM_EVENT_THAW, })
 #define PMSG_RESTORE   ((struct pm_message){ .event = PM_EVENT_RESTORE, })
 #define PMSG_RECOVER   ((struct pm_message){ .event = PM_EVENT_RECOVER, })
-#define PMSG_ON                ((struct pm_message){ .event = PM_EVENT_ON, })
+#define PMSG_USER_SUSPEND      ((struct pm_messge) \
+                                       { .event = PM_EVENT_USER_SUSPEND, })
+#define PMSG_USER_RESUME       ((struct pm_messge) \
+                                       { .event = PM_EVENT_USER_RESUME, })
+#define PMSG_REMOTE_RESUME     ((struct pm_messge) \
+                                       { .event = PM_EVENT_REMOTE_RESUME, })
+#define PMSG_AUTO_SUSPEND      ((struct pm_messge) \
+                                       { .event = PM_EVENT_AUTO_SUSPEND, })
+#define PMSG_AUTO_RESUME               ((struct pm_messge) \
+                                       { .event = PM_EVENT_AUTO_RESUME, })
 
 /**
  * Device power management states