diff options
| author | Rafael J. Wysocki <rjw@sisk.pl> | 2011-05-17 17:23:46 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rjw@sisk.pl> | 2011-05-17 17:23:46 -0400 |
| commit | 290c748725c170ed9a02522959ae67f528eefe98 (patch) | |
| tree | a920190b75c7e054af24d850e79cc54f5cf53263 /include/linux | |
| parent | 2d2a9163bd4f3ba301f8138c32e4790edc30156c (diff) | |
| parent | 72874daa5e9064c4e8d689e6a04b1e96f687f872 (diff) | |
Merge branch 'power-domains' into for-linus
* power-domains:
PM: Fix build issue in clock_ops.c for CONFIG_PM_RUNTIME unset
PM: Revert "driver core: platform_bus: allow runtime override of dev_pm_ops"
OMAP1 / PM: Use generic clock manipulation routines for runtime PM
PM / Runtime: Generic clock manipulation rountines for runtime PM (v6)
PM / Runtime: Add subsystem data field to struct dev_pm_info
OMAP2+ / PM: move runtime PM implementation to use device power domains
PM / Platform: Use generic runtime PM callbacks directly
shmobile: Use power domains for platform runtime PM
PM: Export platform bus type's default PM callbacks
PM: Make power domain callbacks take precedence over subsystem ones
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/platform_device.h | 63 | ||||
| -rw-r--r-- | include/linux/pm.h | 1 | ||||
| -rw-r--r-- | include/linux/pm_runtime.h | 42 |
3 files changed, 103 insertions, 3 deletions
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 744942c95fec..ede1a80e3358 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
| @@ -150,9 +150,6 @@ extern struct platform_device *platform_create_bundle(struct platform_driver *dr | |||
| 150 | struct resource *res, unsigned int n_res, | 150 | struct resource *res, unsigned int n_res, |
| 151 | const void *data, size_t size); | 151 | const void *data, size_t size); |
| 152 | 152 | ||
| 153 | extern const struct dev_pm_ops * platform_bus_get_pm_ops(void); | ||
| 154 | extern void platform_bus_set_pm_ops(const struct dev_pm_ops *pm); | ||
| 155 | |||
| 156 | /* early platform driver interface */ | 153 | /* early platform driver interface */ |
| 157 | struct early_platform_driver { | 154 | struct early_platform_driver { |
| 158 | const char *class_str; | 155 | const char *class_str; |
| @@ -205,4 +202,64 @@ static inline char *early_platform_driver_setup_func(void) \ | |||
| 205 | } | 202 | } |
| 206 | #endif /* MODULE */ | 203 | #endif /* MODULE */ |
| 207 | 204 | ||
| 205 | #ifdef CONFIG_PM_SLEEP | ||
| 206 | extern int platform_pm_prepare(struct device *dev); | ||
| 207 | extern void platform_pm_complete(struct device *dev); | ||
| 208 | #else | ||
| 209 | #define platform_pm_prepare NULL | ||
| 210 | #define platform_pm_complete NULL | ||
| 211 | #endif | ||
| 212 | |||
| 213 | #ifdef CONFIG_SUSPEND | ||
| 214 | extern int platform_pm_suspend(struct device *dev); | ||
| 215 | extern int platform_pm_suspend_noirq(struct device *dev); | ||
| 216 | extern int platform_pm_resume(struct device *dev); | ||
| 217 | extern int platform_pm_resume_noirq(struct device *dev); | ||
| 218 | #else | ||
| 219 | #define platform_pm_suspend NULL | ||
| 220 | #define platform_pm_resume NULL | ||
| 221 | #define platform_pm_suspend_noirq NULL | ||
| 222 | #define platform_pm_resume_noirq NULL | ||
| 223 | #endif | ||
| 224 | |||
| 225 | #ifdef CONFIG_HIBERNATE_CALLBACKS | ||
| 226 | extern int platform_pm_freeze(struct device *dev); | ||
| 227 | extern int platform_pm_freeze_noirq(struct device *dev); | ||
| 228 | extern int platform_pm_thaw(struct device *dev); | ||
| 229 | extern int platform_pm_thaw_noirq(struct device *dev); | ||
| 230 | extern int platform_pm_poweroff(struct device *dev); | ||
| 231 | extern int platform_pm_poweroff_noirq(struct device *dev); | ||
| 232 | extern int platform_pm_restore(struct device *dev); | ||
| 233 | extern int platform_pm_restore_noirq(struct device *dev); | ||
| 234 | #else | ||
| 235 | #define platform_pm_freeze NULL | ||
| 236 | #define platform_pm_thaw NULL | ||
| 237 | #define platform_pm_poweroff NULL | ||
| 238 | #define platform_pm_restore NULL | ||
| 239 | #define platform_pm_freeze_noirq NULL | ||
| 240 | #define platform_pm_thaw_noirq NULL | ||
| 241 | #define platform_pm_poweroff_noirq NULL | ||
| 242 | #define platform_pm_restore_noirq NULL | ||
| 243 | #endif | ||
| 244 | |||
| 245 | #ifdef CONFIG_PM_SLEEP | ||
| 246 | #define USE_PLATFORM_PM_SLEEP_OPS \ | ||
| 247 | .prepare = platform_pm_prepare, \ | ||
| 248 | .complete = platform_pm_complete, \ | ||
| 249 | .suspend = platform_pm_suspend, \ | ||
| 250 | .resume = platform_pm_resume, \ | ||
| 251 | .freeze = platform_pm_freeze, \ | ||
| 252 | .thaw = platform_pm_thaw, \ | ||
| 253 | .poweroff = platform_pm_poweroff, \ | ||
| 254 | .restore = platform_pm_restore, \ | ||
| 255 | .suspend_noirq = platform_pm_suspend_noirq, \ | ||
| 256 | .resume_noirq = platform_pm_resume_noirq, \ | ||
| 257 | .freeze_noirq = platform_pm_freeze_noirq, \ | ||
| 258 | .thaw_noirq = platform_pm_thaw_noirq, \ | ||
| 259 | .poweroff_noirq = platform_pm_poweroff_noirq, \ | ||
| 260 | .restore_noirq = platform_pm_restore_noirq, | ||
| 261 | #else | ||
| 262 | #define USE_PLATFORM_PM_SLEEP_OPS | ||
| 263 | #endif | ||
| 264 | |||
| 208 | #endif /* _PLATFORM_DEVICE_H_ */ | 265 | #endif /* _PLATFORM_DEVICE_H_ */ |
diff --git a/include/linux/pm.h b/include/linux/pm.h index 3c053e2beb84..3cc3e7e589f0 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -460,6 +460,7 @@ struct dev_pm_info { | |||
| 460 | unsigned long active_jiffies; | 460 | unsigned long active_jiffies; |
| 461 | unsigned long suspended_jiffies; | 461 | unsigned long suspended_jiffies; |
| 462 | unsigned long accounting_timestamp; | 462 | unsigned long accounting_timestamp; |
| 463 | void *subsys_data; /* Owned by the subsystem. */ | ||
| 463 | #endif | 464 | #endif |
| 464 | }; | 465 | }; |
| 465 | 466 | ||
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h index 8de9aa6e7def..878cf84baeb1 100644 --- a/include/linux/pm_runtime.h +++ b/include/linux/pm_runtime.h | |||
| @@ -245,4 +245,46 @@ static inline void pm_runtime_dont_use_autosuspend(struct device *dev) | |||
| 245 | __pm_runtime_use_autosuspend(dev, false); | 245 | __pm_runtime_use_autosuspend(dev, false); |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | struct pm_clk_notifier_block { | ||
| 249 | struct notifier_block nb; | ||
| 250 | struct dev_power_domain *pwr_domain; | ||
| 251 | char *con_ids[]; | ||
| 252 | }; | ||
| 253 | |||
| 254 | #ifdef CONFIG_PM_RUNTIME_CLK | ||
| 255 | extern int pm_runtime_clk_init(struct device *dev); | ||
| 256 | extern void pm_runtime_clk_destroy(struct device *dev); | ||
| 257 | extern int pm_runtime_clk_add(struct device *dev, const char *con_id); | ||
| 258 | extern void pm_runtime_clk_remove(struct device *dev, const char *con_id); | ||
| 259 | extern int pm_runtime_clk_suspend(struct device *dev); | ||
| 260 | extern int pm_runtime_clk_resume(struct device *dev); | ||
| 261 | #else | ||
| 262 | static inline int pm_runtime_clk_init(struct device *dev) | ||
| 263 | { | ||
| 264 | return -EINVAL; | ||
| 265 | } | ||
| 266 | static inline void pm_runtime_clk_destroy(struct device *dev) | ||
| 267 | { | ||
| 268 | } | ||
| 269 | static inline int pm_runtime_clk_add(struct device *dev, const char *con_id) | ||
| 270 | { | ||
| 271 | return -EINVAL; | ||
| 272 | } | ||
| 273 | static inline void pm_runtime_clk_remove(struct device *dev, const char *con_id) | ||
| 274 | { | ||
| 275 | } | ||
| 276 | #define pm_runtime_clock_suspend NULL | ||
| 277 | #define pm_runtime_clock_resume NULL | ||
| 278 | #endif | ||
| 279 | |||
| 280 | #ifdef CONFIG_HAVE_CLK | ||
| 281 | extern void pm_runtime_clk_add_notifier(struct bus_type *bus, | ||
| 282 | struct pm_clk_notifier_block *clknb); | ||
| 283 | #else | ||
| 284 | static inline void pm_runtime_clk_add_notifier(struct bus_type *bus, | ||
| 285 | struct pm_clk_notifier_block *clknb) | ||
| 286 | { | ||
| 287 | } | ||
| 288 | #endif | ||
| 289 | |||
| 248 | #endif | 290 | #endif |
