llist-return-whether-list-is-empty-before-adding-in-llist_add-fix
[pandora-kernel.git] / include / linux / pm.h
index f7c84c9..f15acb6 100644 (file)
@@ -326,6 +326,7 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
  *                     requested by a driver.
  */
 
+#define PM_EVENT_INVALID       (-1)
 #define PM_EVENT_ON            0x0000
 #define PM_EVENT_FREEZE        0x0001
 #define PM_EVENT_SUSPEND       0x0002
@@ -346,6 +347,7 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
 #define PM_EVENT_AUTO_SUSPEND  (PM_EVENT_AUTO | PM_EVENT_SUSPEND)
 #define PM_EVENT_AUTO_RESUME   (PM_EVENT_AUTO | PM_EVENT_RESUME)
 
+#define PMSG_INVALID   ((struct pm_message){ .event = PM_EVENT_INVALID, })
 #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, })
@@ -366,6 +368,8 @@ extern struct dev_pm_ops generic_subsys_pm_ops;
 #define PMSG_AUTO_RESUME       ((struct pm_message) \
                                        { .event = PM_EVENT_AUTO_RESUME, })
 
+#define PMSG_IS_AUTO(msg)      (((msg).event & PM_EVENT_AUTO) != 0)
+
 /**
  * Device run-time power management status.
  *
@@ -421,6 +425,22 @@ enum rpm_request {
 
 struct wakeup_source;
 
+struct pm_domain_data {
+       struct list_head list_node;
+       struct device *dev;
+};
+
+struct pm_subsys_data {
+       spinlock_t lock;
+       unsigned int refcount;
+#ifdef CONFIG_PM_CLK
+       struct list_head clock_list;
+#endif
+#ifdef CONFIG_PM_GENERIC_DOMAINS
+       struct pm_domain_data *domain_data;
+#endif
+};
+
 struct dev_pm_info {
        pm_message_t            power_state;
        unsigned int            can_wakeup:1;
@@ -432,6 +452,7 @@ struct dev_pm_info {
        struct list_head        entry;
        struct completion       completion;
        struct wakeup_source    *wakeup;
+       bool                    wakeup_path:1;
 #else
        unsigned int            should_wakeup:1;
 #endif
@@ -462,10 +483,13 @@ struct dev_pm_info {
        unsigned long           suspended_jiffies;
        unsigned long           accounting_timestamp;
 #endif
-       void                    *subsys_data;  /* Owned by the subsystem. */
+       struct pm_subsys_data   *subsys_data;  /* Owned by the subsystem. */
+       struct pm_qos_constraints *constraints;
 };
 
 extern void update_pm_runtime_accounting(struct device *dev);
+extern int dev_pm_get_subsys_data(struct device *dev);
+extern int dev_pm_put_subsys_data(struct device *dev);
 
 /*
  * Power domains provide callbacks that are executed during system suspend,