mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
PM: sleep: Relocate two device PM core functions
Move is_async() and dpm_async_fn() in the PM core to a more suitable place. No functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
This commit is contained in:
parent
86686b8f7a
commit
9cb1c9820f
@ -578,6 +578,35 @@ bool dev_pm_skip_resume(struct device *dev)
|
||||
return !dev->power.must_resume;
|
||||
}
|
||||
|
||||
static bool is_async(struct device *dev)
|
||||
{
|
||||
return dev->power.async_suspend && pm_async_enabled
|
||||
&& !pm_trace_is_enabled();
|
||||
}
|
||||
|
||||
static bool dpm_async_fn(struct device *dev, async_func_t func)
|
||||
{
|
||||
reinit_completion(&dev->power.completion);
|
||||
|
||||
if (is_async(dev)) {
|
||||
dev->power.async_in_progress = true;
|
||||
|
||||
get_device(dev);
|
||||
|
||||
if (async_schedule_dev_nocall(func, dev))
|
||||
return true;
|
||||
|
||||
put_device(dev);
|
||||
}
|
||||
/*
|
||||
* Because async_schedule_dev_nocall() above has returned false or it
|
||||
* has not been called at all, func() is not running and it is safe to
|
||||
* update the async_in_progress flag without extra synchronization.
|
||||
*/
|
||||
dev->power.async_in_progress = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* device_resume_noirq - Execute a "noirq resume" callback for given device.
|
||||
* @dev: Device to handle.
|
||||
@ -664,35 +693,6 @@ Out:
|
||||
}
|
||||
}
|
||||
|
||||
static bool is_async(struct device *dev)
|
||||
{
|
||||
return dev->power.async_suspend && pm_async_enabled
|
||||
&& !pm_trace_is_enabled();
|
||||
}
|
||||
|
||||
static bool dpm_async_fn(struct device *dev, async_func_t func)
|
||||
{
|
||||
reinit_completion(&dev->power.completion);
|
||||
|
||||
if (is_async(dev)) {
|
||||
dev->power.async_in_progress = true;
|
||||
|
||||
get_device(dev);
|
||||
|
||||
if (async_schedule_dev_nocall(func, dev))
|
||||
return true;
|
||||
|
||||
put_device(dev);
|
||||
}
|
||||
/*
|
||||
* Because async_schedule_dev_nocall() above has returned false or it
|
||||
* has not been called at all, func() is not running and it is safe to
|
||||
* update the async_in_progress flag without extra synchronization.
|
||||
*/
|
||||
dev->power.async_in_progress = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
static void async_resume_noirq(void *data, async_cookie_t cookie)
|
||||
{
|
||||
struct device *dev = data;
|
||||
|
Loading…
x
Reference in New Issue
Block a user