opp: Set required OPPs in reverse order when scaling down
authorStephan Gerhold <stephan@gerhold.net>
Thu, 30 Jul 2020 08:01:45 +0000 (10:01 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Wed, 16 Sep 2020 08:32:33 +0000 (14:02 +0530)
commit2c59138c22f17c1da027d3c90dbcdd6995c77414
tree47fff2ecef0b8d832d3cdf1e63b612180d68ebc9
parent60cdeae0d627eca4ae616e3097a1f00ac9f3d704
opp: Set required OPPs in reverse order when scaling down

The OPP core already has well-defined semantics to ensure required
OPPs/regulators are set before/after the frequency change, depending
on if we scale up or down.

Similar requirements might exist for the order of required OPPs
when multiple power domains need to be scaled for a frequency change.

For example, on Qualcomm platforms using CPR (Core Power Reduction),
we need to scale the VDDMX and CPR power domain. When scaling up,
MX should be scaled up before CPR. When scaling down, CPR should be
scaled down before MX.

In general, if there are multiple "required-opps" in the device tree
I would expect that the order is either irrelevant, or there is some
dependency between the power domains. In that case, the power domains
should be scaled down in reverse order.

This commit updates _set_required_opps() to set required OPPs in
reverse order when scaling down.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
[ Viresh: Fix rebase conflict and minor rearrangement of the code ]
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/opp/core.c