Skip to content

Commit f19e069

Browse files
committed
pmdomain: core: Manage the default required OPP from a separate function
JIRA: https://issues.redhat.com/browse/RHEL-75956 commit cf06fb6 Author: Ulf Hansson <ulf.hansson@linaro.org> Date: Wed Oct 2 14:22:26 2024 +0200 pmdomain: core: Manage the default required OPP from a separate function To improve the readability of the code in __genpd_dev_pm_attach(), let's move out the required OPP handling into a separate function. Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Link: https://lore.kernel.org/r/20241002122232.194245-6-ulf.hansson@linaro.org Signed-off-by: José Expósito <jexposit@redhat.com>
1 parent d281799 commit f19e069

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

drivers/pmdomain/core.c

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2903,12 +2903,34 @@ static void genpd_dev_pm_sync(struct device *dev)
29032903
genpd_queue_power_off_work(pd);
29042904
}
29052905

2906+
static int genpd_set_required_opp(struct device *dev, unsigned int index)
2907+
{
2908+
int ret, pstate;
2909+
2910+
/* Set the default performance state */
2911+
pstate = of_get_required_opp_performance_state(dev->of_node, index);
2912+
if (pstate < 0 && pstate != -ENODEV && pstate != -EOPNOTSUPP) {
2913+
ret = pstate;
2914+
goto err;
2915+
} else if (pstate > 0) {
2916+
ret = dev_pm_genpd_set_performance_state(dev, pstate);
2917+
if (ret)
2918+
goto err;
2919+
dev_gpd_data(dev)->default_pstate = pstate;
2920+
}
2921+
2922+
return 0;
2923+
err:
2924+
dev_err(dev, "failed to set required performance state for power-domain %s: %d\n",
2925+
dev_to_genpd(dev)->name, ret);
2926+
return ret;
2927+
}
2928+
29062929
static int __genpd_dev_pm_attach(struct device *dev, struct device *base_dev,
29072930
unsigned int index, bool power_on)
29082931
{
29092932
struct of_phandle_args pd_args;
29102933
struct generic_pm_domain *pd;
2911-
int pstate;
29122934
int ret;
29132935

29142936
ret = of_parse_phandle_with_args(dev->of_node, "power-domains",
@@ -2937,17 +2959,9 @@ static int __genpd_dev_pm_attach(struct device *dev, struct device *base_dev,
29372959
dev->pm_domain->detach = genpd_dev_pm_detach;
29382960
dev->pm_domain->sync = genpd_dev_pm_sync;
29392961

2940-
/* Set the default performance state */
2941-
pstate = of_get_required_opp_performance_state(dev->of_node, index);
2942-
if (pstate < 0 && pstate != -ENODEV && pstate != -EOPNOTSUPP) {
2943-
ret = pstate;
2962+
ret = genpd_set_required_opp(dev, index);
2963+
if (ret)
29442964
goto err;
2945-
} else if (pstate > 0) {
2946-
ret = dev_pm_genpd_set_performance_state(dev, pstate);
2947-
if (ret)
2948-
goto err;
2949-
dev_gpd_data(dev)->default_pstate = pstate;
2950-
}
29512965

29522966
if (power_on) {
29532967
genpd_lock(pd);
@@ -2969,8 +2983,6 @@ static int __genpd_dev_pm_attach(struct device *dev, struct device *base_dev,
29692983
return 1;
29702984

29712985
err:
2972-
dev_err(dev, "failed to set required performance state for power-domain %s: %d\n",
2973-
pd->name, ret);
29742986
genpd_remove_device(pd, dev);
29752987
return ret;
29762988
}

0 commit comments

Comments
 (0)