]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PM: sleep: Relocate two device PM core functions
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 22 Jan 2024 11:24:21 +0000 (12:24 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 26 Jan 2024 18:38:36 +0000 (19:38 +0100)
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>
drivers/base/power/main.c

index 10984aa5192bd6af82ff91d8dfbc6ccb5e381a58..a2cdef95d8c401dcda0bb421ef46b82b95270e9c 100644 (file)
@@ -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;