Function genpd_queue_power_off_work() is not defined for CONFIG_PM_RUNTIME, so pm_genpd_poweroff_unused() causes a build error to happen in that case. Fix the problem by making pm_genpd_poweroff_unused() depend on CONFIG_PM_RUNTIME too.
Unified · Split
| @@ -460,6 +460,21 @@ static int pm_genpd_runtime_resume(struct device *dev) · 459 unmodified lines | ||
| 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) {} |
| @@ -1255,18 +1270,3 @@ void pm_genpd_init(struct generic_pm_domain *genpd, · 789 unmodified lines | ||
| 1255 | 1270 | list_add(&genpd->gpd_list_node, &gpd_list); |
| 1256 | 1271 | mutex_unlock(&gpd_list_lock); |
| 1257 | 1272 | } |
| 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 | − mutex_unlock(&gpd_list_lock); | |
| 1272 | −} | |
| @@ -72,8 +72,6 @@ extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, · 71 unmodified lines | ||
| 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) |
| @@ -101,8 +99,14 @@ static inline int pm_genpd_poweron(struct generic_pm_domain *genpd) · 21 unmodified lines | ||
| 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 */ |
| @@ -231,3 +231,7 @@ config PM_CLK · 230 unmodified lines | ||
| 231 | 231 | config PM_GENERIC_DOMAINS |
| 232 | 232 | bool |
| 233 | 233 | depends on PM |
| 234 | + | |
| 235 | +config PM_GENERIC_DOMAINS_RUNTIME | |
| 236 | + def_bool y | |
| 237 | + depends on PM_RUNTIME && PM_GENERIC_DOMAINS | |