Message ID | 20190709080015.43442-2-Anson.Huang@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | viresh kumar |
Headers | show |
Series | [V2,1/4] dt-bindings: opp: Support multiple opp-suspend properties | expand |
On 09-07-19, 16:00, Anson.Huang@nxp.com wrote: > From: Anson Huang <Anson.Huang@nxp.com> > > With property "opp-supported-hw" introduced, the OPP table > in DT could be a large OPP table and ONLY a subset of OPPs > are available, based on the version of the hardware running > on. That introduces restriction of using "opp-suspend" > property to define the suspend OPP, as we are NOT sure if the > OPP containing "opp-suspend" property is available for the > hardware running on, and the of opp core does NOT allow multiple > suspend OPPs defined in DT OPP table. > > To eliminate this restrition, make of opp core allow multiple > suspend OPPs defined in DT, and pick the OPP with highest rate > and with "opp-suspend" property present to be suspend OPP, it > can speed up the suspend/resume process. > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com> > --- > No changes. > --- > drivers/opp/of.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) Applied. Thanks.
diff --git a/drivers/opp/of.c b/drivers/opp/of.c index b313aca..7e8ec6c 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -617,9 +617,12 @@ static struct dev_pm_opp *_opp_add_static_v2(struct opp_table *opp_table, /* OPP to select on device suspend */ if (of_property_read_bool(np, "opp-suspend")) { if (opp_table->suspend_opp) { - dev_warn(dev, "%s: Multiple suspend OPPs found (%lu %lu)\n", - __func__, opp_table->suspend_opp->rate, - new_opp->rate); + /* Pick the OPP with higher rate as suspend OPP */ + if (new_opp->rate > opp_table->suspend_opp->rate) { + opp_table->suspend_opp->suspend = false; + new_opp->suspend = true; + opp_table->suspend_opp = new_opp; + } } else { new_opp->suspend = true; opp_table->suspend_opp = new_opp;