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

PM: sleep: Add helpers to allow a device to remain powered-on

On some platforms a device and its corresponding PM domain, may need to
remain powered-on during system wide suspend, to support various use cases.
For example, when the console_suspend_enabled flag is unset for a serial
controller, the corresponding device may need to remain powered on. Other
use cases exists too.

In fact, we already have the mechanism in the PM core to deal with these
kind of use cases. However, the current naming of the corresponding
functions/flags clearly suggests these should be use for system wakeup.
See device_wakeup_path(), device_set_wakeup_path and
dev->power.wakeup_path.

As a way to extend the use of the existing mechanism, let's introduce two
new helpers functions, device_awake_path() and device_set_awake_path(). At
this point, let them act as wrappers of the existing functions. Ideally,
when all users have been converted to use the new helpers, we may decide to
drop the old ones and rename the flag.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Ulf Hansson and committed by
Rafael J. Wysocki
10bb4e4a 8e1d6a92

+10
+10
include/linux/pm_wakeup.h
··· 194 194 195 195 #endif /* !CONFIG_PM_SLEEP */ 196 196 197 + static inline bool device_awake_path(struct device *dev) 198 + { 199 + return device_wakeup_path(dev); 200 + } 201 + 202 + static inline void device_set_awake_path(struct device *dev) 203 + { 204 + device_set_wakeup_path(dev); 205 + } 206 + 197 207 static inline void __pm_wakeup_event(struct wakeup_source *ws, unsigned int msec) 198 208 { 199 209 return pm_wakeup_ws_event(ws, msec, false);