diff options
Diffstat (limited to 'include/linux/pm.h')
| -rw-r--r-- | include/linux/pm.h | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/include/linux/pm.h b/include/linux/pm.h index 48b71badfb4c..09a309b7b5d2 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -104,104 +104,6 @@ extern void (*pm_idle)(void); | |||
| 104 | extern void (*pm_power_off)(void); | 104 | extern void (*pm_power_off)(void); |
| 105 | extern void (*pm_power_off_prepare)(void); | 105 | extern void (*pm_power_off_prepare)(void); |
| 106 | 106 | ||
| 107 | typedef int __bitwise suspend_state_t; | ||
| 108 | |||
| 109 | #define PM_SUSPEND_ON ((__force suspend_state_t) 0) | ||
| 110 | #define PM_SUSPEND_STANDBY ((__force suspend_state_t) 1) | ||
| 111 | #define PM_SUSPEND_MEM ((__force suspend_state_t) 3) | ||
| 112 | #define PM_SUSPEND_MAX ((__force suspend_state_t) 4) | ||
| 113 | |||
| 114 | /** | ||
| 115 | * struct pm_ops - Callbacks for managing platform dependent system sleep | ||
| 116 | * states. | ||
| 117 | * | ||
| 118 | * @valid: Callback to determine if given system sleep state is supported by | ||
| 119 | * the platform. | ||
| 120 | * Valid (ie. supported) states are advertised in /sys/power/state. Note | ||
| 121 | * that it still may be impossible to enter given system sleep state if the | ||
| 122 | * conditions aren't right. | ||
| 123 | * There is the %pm_valid_only_mem function available that can be assigned | ||
| 124 | * to this if the platform only supports mem sleep. | ||
| 125 | * | ||
| 126 | * @set_target: Tell the platform which system sleep state is going to be | ||
| 127 | * entered. | ||
| 128 | * @set_target() is executed right prior to suspending devices. The | ||
| 129 | * information conveyed to the platform code by @set_target() should be | ||
| 130 | * disregarded by the platform as soon as @finish() is executed and if | ||
| 131 | * @prepare() fails. If @set_target() fails (ie. returns nonzero), | ||
| 132 | * @prepare(), @enter() and @finish() will not be called by the PM core. | ||
| 133 | * This callback is optional. However, if it is implemented, the argument | ||
| 134 | * passed to @prepare(), @enter() and @finish() is meaningless and should | ||
| 135 | * be ignored. | ||
| 136 | * | ||
| 137 | * @prepare: Prepare the platform for entering the system sleep state indicated | ||
| 138 | * by @set_target() or represented by the argument if @set_target() is not | ||
| 139 | * implemented. | ||
| 140 | * @prepare() is called right after devices have been suspended (ie. the | ||
| 141 | * appropriate .suspend() method has been executed for each device) and | ||
| 142 | * before the nonboot CPUs are disabled (it is executed with IRQs enabled). | ||
| 143 | * This callback is optional. It returns 0 on success or a negative | ||
| 144 | * error code otherwise, in which case the system cannot enter the desired | ||
| 145 | * sleep state (@enter() and @finish() will not be called in that case). | ||
| 146 | * | ||
| 147 | * @enter: Enter the system sleep state indicated by @set_target() or | ||
| 148 | * represented by the argument if @set_target() is not implemented. | ||
| 149 | * This callback is mandatory. It returns 0 on success or a negative | ||
| 150 | * error code otherwise, in which case the system cannot enter the desired | ||
| 151 | * sleep state. | ||
| 152 | * | ||
| 153 | * @finish: Called when the system has just left a sleep state, right after | ||
| 154 | * the nonboot CPUs have been enabled and before devices are resumed (it is | ||
| 155 | * executed with IRQs enabled). If @set_target() is not implemented, the | ||
| 156 | * argument represents the sleep state being left. | ||
| 157 | * This callback is optional, but should be implemented by the platforms | ||
| 158 | * that implement @prepare(). If implemented, it is always called after | ||
| 159 | * @enter() (even if @enter() fails). | ||
| 160 | */ | ||
| 161 | struct pm_ops { | ||
| 162 | int (*valid)(suspend_state_t state); | ||
| 163 | int (*set_target)(suspend_state_t state); | ||
| 164 | int (*prepare)(suspend_state_t state); | ||
| 165 | int (*enter)(suspend_state_t state); | ||
| 166 | int (*finish)(suspend_state_t state); | ||
| 167 | }; | ||
| 168 | |||
| 169 | #ifdef CONFIG_SUSPEND | ||
| 170 | extern struct pm_ops *pm_ops; | ||
| 171 | |||
| 172 | /** | ||
| 173 | * pm_set_ops - set platform dependent power management ops | ||
| 174 | * @pm_ops: The new power management operations to set. | ||
| 175 | */ | ||
| 176 | extern void pm_set_ops(struct pm_ops *pm_ops); | ||
| 177 | extern int pm_valid_only_mem(suspend_state_t state); | ||
| 178 | |||
| 179 | /** | ||
| 180 | * arch_suspend_disable_irqs - disable IRQs for suspend | ||
| 181 | * | ||
| 182 | * Disables IRQs (in the default case). This is a weak symbol in the common | ||
| 183 | * code and thus allows architectures to override it if more needs to be | ||
| 184 | * done. Not called for suspend to disk. | ||
| 185 | */ | ||
| 186 | extern void arch_suspend_disable_irqs(void); | ||
| 187 | |||
| 188 | /** | ||
| 189 | * arch_suspend_enable_irqs - enable IRQs after suspend | ||
| 190 | * | ||
| 191 | * Enables IRQs (in the default case). This is a weak symbol in the common | ||
| 192 | * code and thus allows architectures to override it if more needs to be | ||
| 193 | * done. Not called for suspend to disk. | ||
| 194 | */ | ||
| 195 | extern void arch_suspend_enable_irqs(void); | ||
| 196 | |||
| 197 | extern int pm_suspend(suspend_state_t state); | ||
| 198 | #else /* !CONFIG_SUSPEND */ | ||
| 199 | #define suspend_valid_only_mem NULL | ||
| 200 | |||
| 201 | static inline void pm_set_ops(struct pm_ops *pm_ops) {} | ||
| 202 | static inline int pm_suspend(suspend_state_t state) { return -ENOSYS; } | ||
| 203 | #endif /* !CONFIG_SUSPEND */ | ||
| 204 | |||
| 205 | /* | 107 | /* |
| 206 | * Device power management | 108 | * Device power management |
| 207 | */ | 109 | */ |
