Commit b4fd4ae6c6420c18e4bae2c294b7e06f5ff5210f
Exists in
master
and in
4 other branches
Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: PM / Domains: Fix build for CONFIG_PM_RUNTIME unset
Showing 3 changed files Side-by-side Diff
drivers/base/power/domain.c
... | ... | @@ -460,6 +460,21 @@ |
460 | 460 | return 0; |
461 | 461 | } |
462 | 462 | |
463 | +/** | |
464 | + * pm_genpd_poweroff_unused - Power off all PM domains with no devices in use. | |
465 | + */ | |
466 | +void pm_genpd_poweroff_unused(void) | |
467 | +{ | |
468 | + struct generic_pm_domain *genpd; | |
469 | + | |
470 | + mutex_lock(&gpd_list_lock); | |
471 | + | |
472 | + list_for_each_entry(genpd, &gpd_list, gpd_list_node) | |
473 | + genpd_queue_power_off_work(genpd); | |
474 | + | |
475 | + mutex_unlock(&gpd_list_lock); | |
476 | +} | |
477 | + | |
463 | 478 | #else |
464 | 479 | |
465 | 480 | static inline void genpd_power_off_work_fn(struct work_struct *work) {} |
... | ... | @@ -1253,21 +1268,6 @@ |
1253 | 1268 | genpd->domain.ops.complete = pm_genpd_complete; |
1254 | 1269 | mutex_lock(&gpd_list_lock); |
1255 | 1270 | list_add(&genpd->gpd_list_node, &gpd_list); |
1256 | - mutex_unlock(&gpd_list_lock); | |
1257 | -} | |
1258 | - | |
1259 | -/** | |
1260 | - * pm_genpd_poweroff_unused - Power off all PM domains with no devices in use. | |
1261 | - */ | |
1262 | -void pm_genpd_poweroff_unused(void) | |
1263 | -{ | |
1264 | - struct generic_pm_domain *genpd; | |
1265 | - | |
1266 | - mutex_lock(&gpd_list_lock); | |
1267 | - | |
1268 | - list_for_each_entry(genpd, &gpd_list, gpd_list_node) | |
1269 | - genpd_queue_power_off_work(genpd); | |
1270 | - | |
1271 | 1271 | mutex_unlock(&gpd_list_lock); |
1272 | 1272 | } |
include/linux/pm_domain.h
... | ... | @@ -72,8 +72,6 @@ |
72 | 72 | extern void pm_genpd_init(struct generic_pm_domain *genpd, |
73 | 73 | struct dev_power_governor *gov, bool is_off); |
74 | 74 | extern int pm_genpd_poweron(struct generic_pm_domain *genpd); |
75 | -extern void pm_genpd_poweroff_unused(void); | |
76 | -extern void genpd_queue_power_off_work(struct generic_pm_domain *genpd); | |
77 | 75 | #else |
78 | 76 | static inline int pm_genpd_add_device(struct generic_pm_domain *genpd, |
79 | 77 | struct device *dev) |
80 | 78 | |
... | ... | @@ -101,8 +99,14 @@ |
101 | 99 | { |
102 | 100 | return -ENOSYS; |
103 | 101 | } |
104 | -static inline void pm_genpd_poweroff_unused(void) {} | |
102 | +#endif | |
103 | + | |
104 | +#ifdef CONFIG_PM_GENERIC_DOMAINS_RUNTIME | |
105 | +extern void genpd_queue_power_off_work(struct generic_pm_domain *genpd); | |
106 | +extern void pm_genpd_poweroff_unused(void); | |
107 | +#else | |
105 | 108 | static inline void genpd_queue_power_off_work(struct generic_pm_domain *gpd) {} |
109 | +static inline void pm_genpd_poweroff_unused(void) {} | |
106 | 110 | #endif |
107 | 111 | |
108 | 112 | #endif /* _LINUX_PM_DOMAIN_H */ |