summaryrefslogtreecommitdiffstats
path: root/drivers/opp
diff options
context:
space:
mode:
authorDmitry Osipenko <digetx@gmail.com>2021-01-18 01:55:23 +0100
committerViresh Kumar <viresh.kumar@linaro.org>2021-02-02 05:57:34 +0100
commitf2f4d2b86f432fecfd76afa5f4f60f47833121b5 (patch)
treecebbaacad76af4c2a26b76a3759c189ce950c3b2 /drivers/opp
parentopp: Add devm_pm_opp_attach_genpd (diff)
downloadlinux-f2f4d2b86f432fecfd76afa5f4f60f47833121b5.tar.xz
linux-f2f4d2b86f432fecfd76afa5f4f60f47833121b5.zip
opp: Handle missing OPP table in dev_pm_opp_xlate_performance_state()
NVIDIA Tegra SoCs have a power domains topology such that child domains only clamp a power rail, while parent domain controls shared performance state of the multiple child domains. In this case child's domain doesn't need to have OPP table. Hence we want to allow children power domains to pass performance state to the parent domain if child's domain doesn't have OPP table. The dev_pm_opp_xlate_performance_state() gets src_table=NULL if a child power domain doesn't have OPP table and in this case we should pass the performance state to the parent domain. Tested-by: Peter Geis <pgwipeout@gmail.com> Tested-by: Nicolas Chauvet <kwizart@gmail.com> Tested-by: Matt Merhar <mattmerhar@protonmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/opp')
-rw-r--r--drivers/opp/core.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index ce0ec5bde22a..0417cd34b805 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -2339,7 +2339,7 @@ int dev_pm_opp_xlate_performance_state(struct opp_table *src_table,
* and so none of them have the "required-opps" property set. Return the
* pstate of the src_table as it is in such cases.
*/
- if (!src_table->required_opp_count)
+ if (!src_table || !src_table->required_opp_count)
return pstate;
for (i = 0; i < src_table->required_opp_count; i++) {