[PATCH 01/12] OPP: Allow required-opps even if the device doesn't have power-domains

Andrew-sh.Cheng
2020-05-20T03:52:37Z

From: Saravana Kannan <saravanak@google.com>

A Device-A can have a (minimum) performance requirement on another
Device-B to be able to function correctly. This performance requirement
on Device-B can also change based on the current performance level of
Device-A.

The existing required-opps feature fits well to describe this need. So,
instead of limiting required-opps to point to only PM-domain devices,
allow it to point to any device.

Signed-off-by: Saravana Kannan <saravanak@google.com>
---
drivers/opp/core.c | 2 +-
drivers/opp/of.c | 11 -----------
2 files changed, 1 insertion(+), 12 deletions(-)

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index ba43e6a3dc0a..51403c1f2481 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -755,7 +755,7 @@ static int _set_required_opps(struct device *dev,
return 0;

/* Single genpd case */
- if (!genpd_virt_devs) {
+ if (!genpd_virt_devs && required_opp_tables[0]->is_genpd) {
pstate = likely(opp) ? opp->required_opps[0]->pstate : 0;
ret = dev_pm_genpd_set_performance_state(dev, pstate);
if (ret) {
diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 9cd8f0adacae..6d33de668a7b 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -195,17 +195,6 @@ static void _opp_table_alloc_required_tables(struct opp_table *opp_table,

if (IS_ERR(required_opp_tables[i]))
goto free_required_tables;
-
- /*
- * We only support genpd's OPPs in the "required-opps" for now,
- * as we don't know how much about other cases. Error out if the
- * required OPP doesn't belong to a genpd.
- */
- if (!required_opp_tables[i]->is_genpd) {
- dev_err(dev, "required-opp doesn't belong to genpd: %pOF\n",
- required_np);
- goto free_required_tables;
- }
}

goto put_np;
--
2.12.5