diff options
-rw-r--r-- | Documentation/power/runtime_pm.txt | 7 | ||||
-rw-r--r-- | include/linux/pm.h | 8 | ||||
-rw-r--r-- | include/linux/pm_runtime.h | 12 |
3 files changed, 22 insertions, 5 deletions
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt index 6bb25cb24da9..4a3109b28847 100644 --- a/Documentation/power/runtime_pm.txt +++ b/Documentation/power/runtime_pm.txt | |||
@@ -71,9 +71,9 @@ what to do to handle the device). | |||
71 | purpose). | 71 | purpose). |
72 | 72 | ||
73 | In particular, if the driver requires remote wakeup capability for proper | 73 | In particular, if the driver requires remote wakeup capability for proper |
74 | functioning and device_may_wakeup() returns 'false' for the device, then | 74 | functioning and device_run_wake() returns 'false' for the device, then |
75 | ->runtime_suspend() should return -EBUSY. On the other hand, if | 75 | ->runtime_suspend() should return -EBUSY. On the other hand, if |
76 | device_may_wakeup() returns 'true' for the device and the device is put | 76 | device_run_wake() returns 'true' for the device and the device is put |
77 | into a low power state during the execution of its bus type's | 77 | into a low power state during the execution of its bus type's |
78 | ->runtime_suspend(), it is expected that remote wake-up (i.e. hardware mechanism | 78 | ->runtime_suspend(), it is expected that remote wake-up (i.e. hardware mechanism |
79 | allowing the device to request a change of its power state, such as PCI PME) | 79 | allowing the device to request a change of its power state, such as PCI PME) |
@@ -215,6 +215,9 @@ defined in include/linux/pm.h: | |||
215 | being executed for that device and it is not practical to wait for the | 215 | being executed for that device and it is not practical to wait for the |
216 | suspend to complete; means "start a resume as soon as you've suspended" | 216 | suspend to complete; means "start a resume as soon as you've suspended" |
217 | 217 | ||
218 | unsigned int run_wake; | ||
219 | - set if the device is capable of generating run-time wake-up events | ||
220 | |||
218 | enum rpm_status runtime_status; | 221 | enum rpm_status runtime_status; |
219 | - the run-time PM status of the device; this field's initial value is | 222 | - the run-time PM status of the device; this field's initial value is |
220 | RPM_SUSPENDED, which means that each device is initially regarded by the | 223 | RPM_SUSPENDED, which means that each device is initially regarded by the |
diff --git a/include/linux/pm.h b/include/linux/pm.h index 3b7e04b95bd2..0d65934246af 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
@@ -178,9 +178,10 @@ typedef struct pm_message { | |||
178 | * This need not mean that the device should be put into a low power state. | 178 | * This need not mean that the device should be put into a low power state. |
179 | * For example, if the device is behind a link which is about to be turned | 179 | * For example, if the device is behind a link which is about to be turned |
180 | * off, the device may remain at full power. If the device does go to low | 180 | * off, the device may remain at full power. If the device does go to low |
181 | * power and if device_may_wakeup(dev) is true, remote wake-up (i.e., a | 181 | * power and is capable of generating run-time wake-up events, remote |
182 | * hardware mechanism allowing the device to request a change of its power | 182 | * wake-up (i.e., a hardware mechanism allowing the device to request a |
183 | * state, such as PCI PME) should be enabled for it. | 183 | * change of its power state via a wake-up event, such as PCI PME) should |
184 | * be enabled for it. | ||
184 | * | 185 | * |
185 | * @runtime_resume: Put the device into the fully active state in response to a | 186 | * @runtime_resume: Put the device into the fully active state in response to a |
186 | * wake-up event generated by hardware or at the request of software. If | 187 | * wake-up event generated by hardware or at the request of software. If |
@@ -428,6 +429,7 @@ struct dev_pm_info { | |||
428 | unsigned int idle_notification:1; | 429 | unsigned int idle_notification:1; |
429 | unsigned int request_pending:1; | 430 | unsigned int request_pending:1; |
430 | unsigned int deferred_resume:1; | 431 | unsigned int deferred_resume:1; |
432 | unsigned int run_wake:1; | ||
431 | enum rpm_request request; | 433 | enum rpm_request request; |
432 | enum rpm_status runtime_status; | 434 | enum rpm_status runtime_status; |
433 | int runtime_error; | 435 | int runtime_error; |
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index 44087044910f..370ce0a6fe4a 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h | |||
@@ -50,6 +50,16 @@ static inline void pm_runtime_put_noidle(struct device *dev) | |||
50 | atomic_add_unless(&dev->power.usage_count, -1, 0); | 50 | atomic_add_unless(&dev->power.usage_count, -1, 0); |
51 | } | 51 | } |
52 | 52 | ||
53 | static inline bool device_run_wake(struct device *dev) | ||
54 | { | ||
55 | return dev->power.run_wake; | ||
56 | } | ||
57 | |||
58 | static inline void device_set_run_wake(struct device *dev, bool enable) | ||
59 | { | ||
60 | dev->power.run_wake = enable; | ||
61 | } | ||
62 | |||
53 | #else /* !CONFIG_PM_RUNTIME */ | 63 | #else /* !CONFIG_PM_RUNTIME */ |
54 | 64 | ||
55 | static inline int pm_runtime_idle(struct device *dev) { return -ENOSYS; } | 65 | static inline int pm_runtime_idle(struct device *dev) { return -ENOSYS; } |
@@ -73,6 +83,8 @@ static inline bool pm_children_suspended(struct device *dev) { return false; } | |||
73 | static inline void pm_suspend_ignore_children(struct device *dev, bool en) {} | 83 | static inline void pm_suspend_ignore_children(struct device *dev, bool en) {} |
74 | static inline void pm_runtime_get_noresume(struct device *dev) {} | 84 | static inline void pm_runtime_get_noresume(struct device *dev) {} |
75 | static inline void pm_runtime_put_noidle(struct device *dev) {} | 85 | static inline void pm_runtime_put_noidle(struct device *dev) {} |
86 | static inline bool device_run_wake(struct device *dev) { return false; } | ||
87 | static inline void device_set_run_wake(struct device *dev, bool enable) {} | ||
76 | 88 | ||
77 | #endif /* !CONFIG_PM_RUNTIME */ | 89 | #endif /* !CONFIG_PM_RUNTIME */ |
78 | 90 | ||