UPSTREAM: PM / Domains: Remove redundant pm_runtime_get|put*() in pm_genpd_prepare()
authorUlf Hansson <ulf.hansson@linaro.org>
Tue, 26 Apr 2016 06:47:17 +0000 (08:47 +0200)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 15 Feb 2017 08:52:21 +0000 (16:52 +0800)
The PM core increases and decreases the runtime PM usage count in the
system PM prepare phase. This makes some of the pm_runtime_get|put*()
calls in pm_genpd_prepare() redundant, so let's remove them.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry picked from commit 624c8df7d2823ec0df9609025480309322886ed3)

Change-Id: I0e9a2027740147ef6674993039062d2c3cb2513a
Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
drivers/base/power/domain.c

index 5decc295def447b15bb7e8e5aa146d731dfbe9c0..e36c01c8b0672777e83308016a4e3a237ea33df8 100644 (file)
@@ -688,14 +688,11 @@ static int pm_genpd_prepare(struct device *dev)
         * at this point and a system wakeup event should be reported if it's
         * set up to wake up the system from sleep states.
         */
-       pm_runtime_get_noresume(dev);
        if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
                pm_wakeup_event(dev, 0);
 
-       if (pm_wakeup_pending()) {
-               pm_runtime_put(dev);
+       if (pm_wakeup_pending())
                return -EBUSY;
-       }
 
        if (resume_needed(dev, genpd))
                pm_runtime_resume(dev);
@@ -709,10 +706,8 @@ static int pm_genpd_prepare(struct device *dev)
 
        mutex_unlock(&genpd->lock);
 
-       if (genpd->suspend_power_off) {
-               pm_runtime_put_noidle(dev);
+       if (genpd->suspend_power_off)
                return 0;
-       }
 
        /*
         * The PM domain must be in the GPD_STATE_ACTIVE state at this point,
@@ -734,7 +729,6 @@ static int pm_genpd_prepare(struct device *dev)
                pm_runtime_enable(dev);
        }
 
-       pm_runtime_put(dev);
        return ret;
 }