]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpufreq: scmi: Set .set_boost directly
authorViresh Kumar <viresh.kumar@linaro.org>
Thu, 23 Jan 2025 07:44:20 +0000 (13:14 +0530)
committerViresh Kumar <viresh.kumar@linaro.org>
Fri, 7 Feb 2025 04:15:15 +0000 (09:45 +0530)
The boost feature can be controlled at two levels currently, driver
level (applies to all policies) and per-policy.

Currently the driver enables driver level boost support from the
per-policy ->init() callback, which isn't really efficient as that gets
called for each policy and then there is online/offline path too where
this gets done unnecessarily.

Instead set the .set_boost field directly and always enable the boost
support. If a policy doesn't support boost feature, the core will not
enable it for that policy.

Keep the initial state of driver level boost to disabled and let the
user enable it if required as ideally the boost frequencies must be used
only when really required.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/cpufreq/scmi-cpufreq.c

index 4a3ee59cb77114bb525f7f3b639467bd42941dda..ff289778979739c2525f9cd31db9e79c2a71b334 100644 (file)
@@ -297,16 +297,6 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
        policy->transition_delay_us =
                scmi_get_rate_limit(domain, policy->fast_switch_possible);
 
-       if (policy_has_boost_freq(policy)) {
-               ret = cpufreq_enable_boost_support();
-               if (ret) {
-                       dev_warn(cpu_dev, "failed to enable boost: %d\n", ret);
-                       goto out_free_table;
-               } else {
-                       scmi_cpufreq_driver.boost_enabled = true;
-               }
-       }
-
        ret = freq_qos_add_request(&policy->constraints, &priv->limits_freq_req, FREQ_QOS_MAX,
                                   FREQ_QOS_MAX_DEFAULT_VALUE);
        if (ret < 0) {
@@ -394,6 +384,7 @@ static struct cpufreq_driver scmi_cpufreq_driver = {
        .init   = scmi_cpufreq_init,
        .exit   = scmi_cpufreq_exit,
        .register_em    = scmi_cpufreq_register_em,
+       .set_boost      = cpufreq_boost_set_sw,
 };
 
 static int scmi_cpufreq_probe(struct scmi_device *sdev)