[PATCH v4 00/11] OPP/pmdomain: Simplify assignment of required_devs for required OPPs

From: Ulf Hansson
Date: Wed Oct 02 2024 - 08:22:49 EST


Note, due to dependencies this whole series is best funneled together through my
pmdomain tree. Thus I am looking acks/reviews/tests.

Changes in v4:
- We realized that genpd can't solely be responsible for assigning
required-devs. In particular in the multiple PM domain case, we need
platform code to specify the index for a device's required OPPs [1].
In this version we take that into account by extending
dev_pm_domain_attach_list() to cope with required OPPs too.

[1]
https://lore.kernel.org/all/CAPDyKFp2s4mPtdU6pMzPbBqqLFxZa1esrXyqXL6UJO-gU-PsVw@xxxxxxxxxxxxxx/

Through dev_pm_opp_set_config() the *_opp_attach_genpd() allows consumer
drivers to attach a device to its PM domains. Their corresponding virtual
devices that are created by genpd during attach, are later being assigned
as the required_devs for the corresponding required OPPs. In principle,
this works fine.

However, attaching a device to its PM domains is in general better done
with dev_pm_domain_attach|detach_list(). To avoid having two different ways
to manage this, this series prepares for the removal of *_opp_attach_genpd()
to finally also remove it.

Kind regards
Ulf Hansson


Ulf Hansson (11):
Revert "drm/tegra: gr3d: Convert into
dev_pm_domain_attach|detach_list()"
PM: domains: Fix alloc/free in dev_pm_domain_attach|detach_list()
OPP: Rework _set_required_devs() to manage a single device per call
PM: domains: Support required OPPs in dev_pm_domain_attach_list()
pmdomain: core: Manage the default required OPP from a separate
function
pmdomain: core: Set the required dev for a required OPP during genpd
attach
OPP: Drop redundant code in _link_required_opps()
drm/tegra: gr3d: Convert into devm_pm_domain_attach_list()
media: venus: Convert into devm_pm_domain_attach_list() for OPP PM
domain
cpufreq: qcom-nvmem: Convert to dev_pm_domain_attach|detach_list()
OPP: Drop redundant *_opp_attach|detach_genpd()

drivers/base/power/common.c | 44 +++-
drivers/cpufreq/qcom-cpufreq-nvmem.c | 82 +++-----
drivers/gpu/drm/tegra/gr3d.c | 11 +-
drivers/media/platform/qcom/venus/core.c | 8 +-
drivers/media/platform/qcom/venus/core.h | 6 +-
.../media/platform/qcom/venus/pm_helpers.c | 44 +---
drivers/opp/core.c | 198 +++++-------------
drivers/opp/of.c | 39 +---
drivers/opp/opp.h | 5 +-
drivers/pmdomain/core.c | 76 +++++--
include/linux/pm_domain.h | 9 +
include/linux/pm_opp.h | 42 +---
12 files changed, 210 insertions(+), 354 deletions(-)

--
2.34.1