summaryrefslogtreecommitdiff
path: root/drivers/devfreq/devfreq.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2021-02-08 13:52:26 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2021-02-08 13:52:26 +0100
commit992b9ff11a44ffe4288963761680cede4cfd2306 (patch)
tree3c6ad046c9a92edb4a763d1a4d2b30f7682d1200 /drivers/devfreq/devfreq.c
parent1048ba83fb1c00cd24172e23e8263972f6b5d9ac (diff)
parent86ad9a24f21ea7aac7deed06fe9556392568d88a (diff)
Merge branch 'opp/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm
Pull operating performance points (OPP) changes for v5.12 from Viresh Kumar: "- Generic cleanups across the OPP core (Dmitry Osipenko, Viresh Kumar). - New OPP helpers dev_pm_opp_find_level_ceil(), dev_pm_opp_get_required_pstate(), dev_pm_opp_sync_regulators(), devm_pm_opp_register_set_opp_helper(), dev_pm_opp_of_add_table_noclk() and devm_pm_opp_attach_genpd() (Dmitry Osipenko, Viresh Kumar). - Allow required OPPs to be used for devfreq devices and related changes to devfreq governor (Saravana Kannan). - Significant code changes to allow a new OPP helper, dev_pm_opp_set_opp() (Viresh Kumar). - Remove dev_pm_opp_set_bw() and update related drivers (Viresh Kumar). - Allow lazy linking of required-OPPs (Viresh Kumar)." * 'opp/linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/pm: (37 commits) PM / devfreq: Add required OPPs support to passive governor PM / devfreq: Cache OPP table reference in devfreq OPP: Add function to look up required OPP's for a given OPP opp: Replace ENOTSUPP with EOPNOTSUPP opp: Fix "foo * bar" should be "foo *bar" opp: Don't ignore clk_get() errors other than -ENOENT opp: Update bandwidth requirements based on scaling up/down opp: Allow lazy-linking of required-opps opp: Remove dev_pm_opp_set_bw() devfreq: tegra30: Migrate to dev_pm_opp_set_opp() drm: msm: Migrate to dev_pm_opp_set_opp() cpufreq: qcom: Migrate to dev_pm_opp_set_opp() opp: Implement dev_pm_opp_set_opp() opp: Update parameters of _set_opp_custom() opp: Allow _generic_set_opp_clk_only() to work for non-freq devices opp: Allow _generic_set_opp_regulator() to work for non-freq devices opp: Allow _set_opp() to work for non-freq devices opp: Split _set_opp() out of dev_pm_opp_set_rate() opp: Keep track of currently programmed OPP opp: No need to check clk for errors ...
Diffstat (limited to 'drivers/devfreq/devfreq.c')
-rw-r--r--drivers/devfreq/devfreq.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 6aa10de792b3..cefe84a10824 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -757,6 +757,9 @@ static void devfreq_dev_release(struct device *dev)
if (devfreq->profile->exit)
devfreq->profile->exit(devfreq->dev.parent);
+ if (devfreq->opp_table)
+ dev_pm_opp_put_opp_table(devfreq->opp_table);
+
mutex_destroy(&devfreq->lock);
kfree(devfreq);
}
@@ -844,6 +847,10 @@ struct devfreq *devfreq_add_device(struct device *dev,
}
devfreq->suspend_freq = dev_pm_opp_get_suspend_opp_freq(dev);
+ devfreq->opp_table = dev_pm_opp_get_opp_table(dev);
+ if (IS_ERR(devfreq->opp_table))
+ devfreq->opp_table = NULL;
+
atomic_set(&devfreq->suspend_count, 0);
dev_set_name(&devfreq->dev, "%s", dev_name(dev));