Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PM / Domains: Provide an always on power domain governor

Since systems are likely to have power domains that can't be turned off
for various reasons at least temporarily while implementing power domain
support provide a default governor which will always refuse to power off
the domain, saving platforms having to implement their own.

Since the code is so tiny don't bother with a Kconfig symbol for it.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>

authored by

Mark Brown and committed by
Rafael J. Wysocki
925b44a2 c9914854

+15
+13
drivers/base/power/domain_governor.c
··· 141 141 .stop_ok = default_stop_ok, 142 142 .power_down_ok = default_power_down_ok, 143 143 }; 144 + 145 + static bool always_on_power_down_ok(struct dev_pm_domain *domain) 146 + { 147 + return false; 148 + } 149 + 150 + /** 151 + * pm_genpd_gov_always_on - A governor implementing an always-on policy 152 + */ 153 + struct dev_power_governor pm_domain_always_on_gov = { 154 + .power_down_ok = always_on_power_down_ok, 155 + .stop_ok = default_stop_ok, 156 + };
+2
include/linux/pm_domain.h
··· 140 140 141 141 extern bool default_stop_ok(struct device *dev); 142 142 143 + extern struct dev_power_governor pm_domain_always_on_gov; 143 144 #else 144 145 145 146 static inline struct generic_pm_domain *dev_to_genpd(struct device *dev) ··· 194 193 { 195 194 return false; 196 195 } 196 + #define pm_domain_always_on_gov NULL 197 197 #endif 198 198 199 199 static inline int pm_genpd_remove_callbacks(struct device *dev)