OPP: don't drop performance constraint on OPP table removal
authorViresh Kumar <viresh.kumar@linaro.org>
Wed, 14 Jun 2023 07:20:20 +0000 (12:50 +0530)
committerViresh Kumar <viresh.kumar@linaro.org>
Wed, 14 Jun 2023 09:24:01 +0000 (14:54 +0530)
commit04bd2eafee153b9cc4b411d4a24d32b1ec2ce41c
tree7aa7e485ea579a36d096caa24c12f6ee1699926e
parent64aaeb708245acdcbe51cf30c84418668c044d80
OPP: don't drop performance constraint on OPP table removal

This code was added (long back) by commit 009acd196fc8 ("PM / OPP:
Support updating performance state of device's power domain") and at
that time the `opp->pstate` field was used to store the performance
state required by a device's OPP.

Over time that changed and the `->pstate` field is now used only for
genpd devices and consumer devices access that via the required-opps
instead.

Because of all these changes, _opp_table_kref_release() now drops the
constraint only when the genpd's OPP table gets freed and not the
device's. Which is definitely not what we wanted. And dropping the
constraint doesn't have much meaning as the genpd itself is going away.

Moreover, if we want to drop constraints here, then just dropping the
performance constraint alone isn't sufficient as there are other
resource constraints like clk, regulator, etc. too, which must be
handled.

Probably the right thing to do here is to leave this decision to the
consumers, which can call `dev_pm_opp_set_rate(dev, 0)` or similar APIs
to drop all constraints properly. Which many of the consumers already
do.

Remove the special code, which is broken anyway.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/opp/core.c
drivers/opp/of.c
drivers/opp/opp.h