]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PM: domains: Split code in dev_pm_genpd_set_performance_state()
authorUlf Hansson <ulf.hansson@linaro.org>
Thu, 3 Jun 2021 09:34:35 +0000 (11:34 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 11 Jun 2021 16:39:24 +0000 (18:39 +0200)
To prepare some of the code in dev_pm_genpd_set_performance_state() to be
re-used from subsequent changes, let's split it up into two functions.

Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/base/power/domain.c

index 5695a641efd365c13e989196768e6b8f1f09ef5d..ede0f576efe6e5232b3df1edf0ec4d7f4dae8b99 100644 (file)
@@ -379,6 +379,24 @@ err:
        return ret;
 }
 
+static int genpd_set_performance_state(struct device *dev, unsigned int state)
+{
+       struct generic_pm_domain *genpd = dev_to_genpd(dev);
+       struct generic_pm_domain_data *gpd_data = dev_gpd_data(dev);
+       unsigned int prev_state;
+       int ret;
+
+       prev_state = gpd_data->performance_state;
+       gpd_data->performance_state = state;
+       state = _genpd_reeval_performance_state(genpd, state);
+
+       ret = _genpd_set_performance_state(genpd, state, 0);
+       if (ret)
+               gpd_data->performance_state = prev_state;
+
+       return ret;
+}
+
 /**
  * dev_pm_genpd_set_performance_state- Set performance state of device's power
  * domain.
@@ -397,8 +415,6 @@ err:
 int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state)
 {
        struct generic_pm_domain *genpd;
-       struct generic_pm_domain_data *gpd_data;
-       unsigned int prev;
        int ret;
 
        genpd = dev_to_genpd_safe(dev);
@@ -410,16 +426,7 @@ int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state)
                return -EINVAL;
 
        genpd_lock(genpd);
-
-       gpd_data = to_gpd_data(dev->power.subsys_data->domain_data);
-       prev = gpd_data->performance_state;
-       gpd_data->performance_state = state;
-
-       state = _genpd_reeval_performance_state(genpd, state);
-       ret = _genpd_set_performance_state(genpd, state, 0);
-       if (ret)
-               gpd_data->performance_state = prev;
-
+       ret = genpd_set_performance_state(dev, state);
        genpd_unlock(genpd);
 
        return ret;