[PATCH 00/16] arm_scmi/opp/dvfs: Add generic performance scaling support

From: Ulf Hansson
Date: Wed Jun 07 2023 - 08:47:05 EST


The current SCMI performance scaling support is limited to cpufreq. This series
extends the support, so it can be used for all kind of devices and not only for
CPUs.

The changes are spread over a couple of different subsystems, although the
changes that affects the other subsystems than the arm_scmi directory are
mostly smaller. The series is based upon v6.4-rc5. That said, let's figure out
on how to best move forward with this. I am of course happy to help in any way.

Note that, so far this is only be tested on the Qemu virt platform with Optee
running an SCMI server. If you want some more details about my test setup, I am
certainly open to share that with you!

Looking forward to get your feedback!

Kind regards
Ulf Hansson


Ulf Hansson (16):
firmware: arm_scmi: Extend perf protocol ops to get number of domains
firmware: arm_scmi: Extend perf protocol ops to get the name of a
domain
firmware: arm_scmi: Extend perf protocol ops to inform of set level
support
cpufreq: scmi: Prepare to move OF parsing of domain-id to cpufreq
firmware: arm_scmi: Align perf ops to use domain-id as in-parameter
firmware: arm_scmi: Drop redundant ->device_domain_id() from perf ops
cpufreq: scmi: Avoid one OF parsing in scmi_get_sharing_cpus()
PM: domains: Allow genpd providers to manage OPP tables directly by
its FW
dt-bindings: firmware: arm,scmi: Extend bindings for protocol@13
firmware: arm_scmi: Add the SCMI performance domain
OPP: Add dev_pm_opp_add_dynamic() to allow more flexibility
OPP: Extend dev_pm_opp_data with performance level
OPP: Extend dev_pm_opp_data with OPP provider support
firmware: arm_scmi: Simplify error path in scmi_dvfs_device_opps_add()
firmware: arm_scmi: Extend perf support with OPP from genpd providers
firmware: arm_scmi: Add generic OPP support to the SCMI performance
domain

.../bindings/firmware/arm,scmi.yaml | 4 +-
drivers/base/power/domain.c | 11 +-
drivers/cpufreq/scmi-cpufreq.c | 40 ++--
drivers/firmware/arm_scmi/Kconfig | 12 ++
drivers/firmware/arm_scmi/Makefile | 1 +
drivers/firmware/arm_scmi/perf.c | 81 ++++----
drivers/firmware/arm_scmi/scmi_perf_domain.c | 189 ++++++++++++++++++
drivers/opp/core.c | 69 ++++++-
drivers/opp/of.c | 11 +-
drivers/opp/opp.h | 3 +-
include/linux/pm_domain.h | 5 +
include/linux/pm_opp.h | 27 +++
include/linux/scmi_protocol.h | 14 +-
13 files changed, 388 insertions(+), 79 deletions(-)
create mode 100644 drivers/firmware/arm_scmi/scmi_perf_domain.c

--
2.34.1