diff options
author | Nicola Mazzucato <nicola.mazzucato@arm.com> | 2020-06-17 12:43:31 +0300 |
---|---|---|
committer | Sudeep Holla <sudeep.holla@arm.com> | 2020-06-30 16:07:15 +0300 |
commit | 1909872ff20fc378ec6a44ea1a2b2966d834e504 (patch) | |
tree | 9d8a474d2786d42fe5d70774d6f9c7a4a7c016a0 /drivers/firmware/arm_scmi | |
parent | bad0d73b657412058c4d7773ff0d50291bfe1905 (diff) | |
download | linux-1909872ff20fc378ec6a44ea1a2b2966d834e504.tar.xz |
firmware: arm_scmi: Add fast_switch_possible() interface
Add a new fast_switch_possible interface to the existing perf_ops to
export the information of whether or not fast_switch is possible for a
given device.
This can be used by the cpufreq driver and framework to choose proper
mechanism for frequency change.
Link: https://lore.kernel.org/r/20200617094332.8391-1-nicola.mazzucato@arm.com
Suggested-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Nicola Mazzucato <nicola.mazzucato@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'drivers/firmware/arm_scmi')
-rw-r--r-- | drivers/firmware/arm_scmi/perf.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/firmware/arm_scmi/perf.c b/drivers/firmware/arm_scmi/perf.c index eadc171e254b..7b8d7cebdac9 100644 --- a/drivers/firmware/arm_scmi/perf.c +++ b/drivers/firmware/arm_scmi/perf.c @@ -697,6 +697,17 @@ static int scmi_dvfs_est_power_get(const struct scmi_handle *handle, u32 domain, return ret; } +static bool scmi_fast_switch_possible(const struct scmi_handle *handle, + struct device *dev) +{ + struct perf_dom_info *dom; + struct scmi_perf_info *pi = handle->perf_priv; + + dom = pi->dom_info + scmi_dev_domain_id(dev); + + return dom->fc_info && dom->fc_info->level_set_addr; +} + static struct scmi_perf_ops perf_ops = { .limits_set = scmi_perf_limits_set, .limits_get = scmi_perf_limits_get, @@ -708,6 +719,7 @@ static struct scmi_perf_ops perf_ops = { .freq_set = scmi_dvfs_freq_set, .freq_get = scmi_dvfs_freq_get, .est_power_get = scmi_dvfs_est_power_get, + .fast_switch_possible = scmi_fast_switch_possible, }; static int scmi_perf_protocol_init(struct scmi_handle *handle) |