aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/cpufreq/cpufreq.c
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2025-01-22 15:31:49 +0530
committerViresh Kumar <viresh.kumar@linaro.org>2025-02-07 09:45:11 +0530
commitdc47f23f1df65a6b61b5d1f8d25cc4ff30a67a00 (patch)
tree259fc9f54d736f00145af56555c3ff723f09f49d /drivers/cpufreq/cpufreq.c
parentcpufreq: Use str_enable_disable() helper (diff)
downloadwireguard-linux-dc47f23f1df65a6b61b5d1f8d25cc4ff30a67a00.tar.xz
wireguard-linux-dc47f23f1df65a6b61b5d1f8d25cc4ff30a67a00.zip
cpufreq: Always create freq-table related sysfs file
Currently it is left for the individual drivers to set the available and boost frequencies related attributes in the cpufreq_driver->attr field. Some drivers provide them, while others don't. A quick search revealed that only the drivers that set the policy->freq_table field, enable these attributes. Which makes sense as well, since the show_available_freqs() helper works only if the freq_table is present. In order to simplify drivers, create the relevant sysfs files forcefully from cpufreq core. For now, skip adding them twice. This can be removed once all the drivers are updated. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-rw-r--r--drivers/cpufreq/cpufreq.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index a12e1da89163..71ecf6a004e8 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1059,9 +1059,31 @@ static int cpufreq_add_dev_interface(struct cpufreq_policy *policy)
struct freq_attr **drv_attr;
int ret = 0;
+ /* Attributes that need freq_table */
+ if (policy->freq_table) {
+ ret = sysfs_create_file(&policy->kobj,
+ &cpufreq_freq_attr_scaling_available_freqs.attr);
+ if (ret)
+ return ret;
+
+ if (cpufreq_boost_supported()) {
+ ret = sysfs_create_file(&policy->kobj,
+ &cpufreq_freq_attr_scaling_boost_freqs.attr);
+ if (ret)
+ return ret;
+ }
+ }
+
/* set up files for this cpu device */
drv_attr = cpufreq_driver->attr;
while (drv_attr && *drv_attr) {
+ /* These are already added, skip them */
+ if (*drv_attr == &cpufreq_freq_attr_scaling_available_freqs ||
+ *drv_attr == &cpufreq_freq_attr_scaling_boost_freqs) {
+ drv_attr++;
+ continue;
+ }
+
ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
if (ret)
return ret;