cpufreq: scmi: Set transition_delay_us
Make use of the newly added callbacks: - rate_limit_get() - fast_switch_rate_limit() to populate policies's `transition_delay_us`, defined as the 'Preferred average time interval between consecutive invocations of the driver to set the frequency for this policy.' Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit is contained in:
parent
2441caa84a
commit
ad2a91086e
@ -144,6 +144,29 @@ scmi_get_cpu_power(struct device *cpu_dev, unsigned long *power,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
scmi_get_rate_limit(u32 domain, bool has_fast_switch)
|
||||||
|
{
|
||||||
|
int ret, rate_limit;
|
||||||
|
|
||||||
|
if (has_fast_switch) {
|
||||||
|
/*
|
||||||
|
* Fast channels are used whenever available,
|
||||||
|
* so use their rate_limit value if populated.
|
||||||
|
*/
|
||||||
|
ret = perf_ops->fast_switch_rate_limit(ph, domain,
|
||||||
|
&rate_limit);
|
||||||
|
if (!ret && rate_limit)
|
||||||
|
return rate_limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = perf_ops->rate_limit_get(ph, domain, &rate_limit);
|
||||||
|
if (ret)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return rate_limit;
|
||||||
|
}
|
||||||
|
|
||||||
static int scmi_cpufreq_init(struct cpufreq_policy *policy)
|
static int scmi_cpufreq_init(struct cpufreq_policy *policy)
|
||||||
{
|
{
|
||||||
int ret, nr_opp, domain;
|
int ret, nr_opp, domain;
|
||||||
@ -250,6 +273,9 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
|
|||||||
policy->fast_switch_possible =
|
policy->fast_switch_possible =
|
||||||
perf_ops->fast_switch_possible(ph, domain);
|
perf_ops->fast_switch_possible(ph, domain);
|
||||||
|
|
||||||
|
policy->transition_delay_us =
|
||||||
|
scmi_get_rate_limit(domain, policy->fast_switch_possible);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_free_opp:
|
out_free_opp:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user