[PATCH v4 0/4] OPP API fixes and improvements

From: Dmitry Osipenko
Date: Wed Jan 20 2021 - 18:51:39 EST


Hi,

This series fixes problems and adds features to OPP API that are required
for implementation of a power domain driver for NVIDIA Tegra SoCs.

It is a continuation of [1], where Viresh Kumar asked to factor OPP
patches into a separate series. I factored out the patches into this
series, addressed the previous review comments and re-based patches
on top of [2], which replaced some of my patches that added resource-managed
helpers.

[1] https://patchwork.ozlabs.org/project/linux-tegra/list/?series=221130
[2] https://lore.kernel.org/linux-pm/20210101165507.19486-1-tiny.windzz@xxxxxxxxx/

Changelog:

v4: - Fixed missing export of devm_pm_opp_attach_genpd(). Thanks to
Nicolas Chauvet for catching this problem.

- Removed a bit questionable locking from dev_pm_opp_sync_regulators()
and dev_pm_opp_set_voltage(). We may come back to the OPP locking
sometime later, it's not an essential problem right now. I moved
the lock from OPP core to the PD driver for now.

- Added "Make _set_opp_custom() work without regulators" patch,
which is made on top of "Prepare for ->set_opp() helper to work without
regulators" patch from Viresh Kumar. The set_opp() helper now works
without regulators.

v3: - Reordered patches by importance.

- Added locking to dev_pm_opp_set_voltage().

- Reworked "Fix adding OPP entries in a wrong order if rate is unavailable"
patch, like it was suggested by Viresh Kumar.

- Reworked "Support set_opp() customization without requiring to use
regulators" patch, like it was suggested by Viresh Kumar.

The opp_table->set_opp_data is now allocated by dev_pm_opp_register_set_opp_helper().

The set_opp_data is refcounted now and can be allocated by any other
OPP functions if this will become needed in the future for other OPP API
changes.

Dmitry Osipenko (4):
opp: Export devm_pm_opp_attach_genpd()
opp: Add dev_pm_opp_sync_regulators()
opp: Add dev_pm_opp_set_voltage()
opp: Make _set_opp_custom() work without regulators

drivers/opp/core.c | 119 +++++++++++++++++++++++++++++++++++++----
include/linux/pm_opp.h | 12 +++++
2 files changed, 122 insertions(+), 9 deletions(-)

--
2.29.2