Commit decd6e77 authored by Konrad Dybcio's avatar Konrad Dybcio Committed by Bjorn Andersson

soc: qcom: rpmpd: Add parent PD support

In some cases (like with the GPU core clock on GMU-less SoCs) it's
required that we scale more than one voltage domain. This can be achieved
by linking them in a parent-child relationship. Add support for specifying
a parent PD, similarly to what has been done in the RPMhPD driver.
Signed-off-by: default avatarKonrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: default avatarBjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230313-topic-rpmpd-v3-8-06a4f448ff90@linaro.org
parent d338fe40
...@@ -48,6 +48,7 @@ struct rpmpd_req { ...@@ -48,6 +48,7 @@ struct rpmpd_req {
struct rpmpd { struct rpmpd {
struct generic_pm_domain pd; struct generic_pm_domain pd;
struct generic_pm_domain *parent;
struct rpmpd *peer; struct rpmpd *peer;
const bool active_only; const bool active_only;
unsigned int corner; unsigned int corner;
...@@ -969,6 +970,15 @@ static int rpmpd_probe(struct platform_device *pdev) ...@@ -969,6 +970,15 @@ static int rpmpd_probe(struct platform_device *pdev)
data->domains[i] = &rpmpds[i]->pd; data->domains[i] = &rpmpds[i]->pd;
} }
/* Add subdomains */
for (i = 0; i < num; i++) {
if (!rpmpds[i])
continue;
if (rpmpds[i]->parent)
pm_genpd_add_subdomain(rpmpds[i]->parent, &rpmpds[i]->pd);
}
return of_genpd_add_provider_onecell(pdev->dev.of_node, data); return of_genpd_add_provider_onecell(pdev->dev.of_node, data);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment