[PATCH 0/9] PM: domains/opp/arm_scmi: Extend performance scaling support

From: Ulf Hansson
Date: Mon Sep 25 2023 - 09:18:00 EST


Consumer drivers for devices that are attached to the SCMI performance domain,
are currently not able to use the OPP library to scale performance. This series
is enabling the support for this.

The OPPs for SCMI performance domain are encoded in the FW, rather than being
described through DT. To better support this, some changes have also been done
to the OPP library and for PM domains in general. More details are available in
the commit messages.

I have based the series on the scmi tree and the for-next/scmi/updates branch,
so the OPP and PM domain changes would require acks from Viresh and Rafael to
be allow to be picked up and funneled through the scmi tree. Or, let's just
discuss what works best for us in this regards.

Note that, I am running this on the Qemu virt platform with Optee running an
SCMI server. If you want some more details about my test setup, I can certainly
share this with you, just let me know.

Looking forward to your feedback!

Kind regards
Ulf Hansson


Ulf Hansson (9):
PM: domains: Introduce dev_pm_domain_set_performance_state()
PM: domains: Implement the ->set_performance_state() callback for
genpd
OPP: Add dev_pm_opp_add_dynamic() to allow more flexibility
OPP: Extend dev_pm_opp_data with a level
OPP: Switch to use dev_pm_domain_set_performance_state()
OPP: Extend support for the opp-level beyond required-opps
firmware: arm_scmi: Simplify error path in scmi_dvfs_device_opps_add()
firmware: arm_scmi: Specify the performance level when adding an OPP
firmware: arm_scmi: Add generic OPP support to the SCMI performance
domain

drivers/base/power/common.c | 21 ++++++++++
drivers/base/power/domain.c | 33 +++++++++------
drivers/firmware/arm_scmi/perf.c | 22 +++++-----
drivers/opp/core.c | 54 +++++++++++++++++++------
drivers/opp/of.c | 10 +++--
drivers/opp/opp.h | 2 +-
drivers/pmdomain/arm/scmi_perf_domain.c | 34 ++++++++++++++++
include/linux/pm.h | 2 +
include/linux/pm_domain.h | 6 +++
include/linux/pm_opp.h | 31 ++++++++++++--
10 files changed, 168 insertions(+), 47 deletions(-)

--
2.34.1