From d7a27323a5a1a6171d2c3fcad9ff622604278b76 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Sat, 8 Mar 2003 06:36:30 -0100 Subject: [PATCH] [CPUFREQ] fix userspace governor. Let's put the sysfs file exported by the cpufreq userspace governor also into the cpufreq/ - subdirectory of /sys/devices/sys/cpu0/. --- drivers/cpufreq/userspace.c | 29 ++++++++++++----------------- include/linux/cpufreq.h | 10 +++++++++- kernel/cpufreq.c | 6 ------ 3 files changed, 21 insertions(+), 24 deletions(-) diff --git a/drivers/cpufreq/userspace.c b/drivers/cpufreq/userspace.c index 067facf54bdca..0e82c23414e6b 100644 --- a/drivers/cpufreq/userspace.c +++ b/drivers/cpufreq/userspace.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -465,23 +466,14 @@ static inline void cpufreq_sysctl_exit(void) /************************** sysfs interface ************************/ -static inline int to_cpu_nr (struct device *dev) +static ssize_t show_speed (struct cpufreq_policy *policy, char *buf) { - struct sys_device * cpu_sys_dev = container_of(dev, struct sys_device, dev); - return (cpu_sys_dev->id); -} - -static ssize_t show_speed (struct device *dev, char *buf) -{ - unsigned int cpu = to_cpu_nr(dev); - - return sprintf (buf, "%u\n", cpu_cur_freq[cpu]); + return sprintf (buf, "%u\n", cpu_cur_freq[policy->cpu]); } static ssize_t -store_speed (struct device *dev, const char *buf, size_t count) +store_speed (struct cpufreq_policy *policy, const char *buf, size_t count) { - unsigned int cpu = to_cpu_nr(dev); unsigned int freq = 0; unsigned int ret; @@ -489,13 +481,16 @@ store_speed (struct device *dev, const char *buf, size_t count) if (ret != 1) return -EINVAL; - cpufreq_set(freq, cpu); + cpufreq_set(freq, policy->cpu); return count; } -static DEVICE_ATTR(scaling_setspeed, (S_IRUGO | S_IWUSR), show_speed, store_speed); - +static struct freq_attr freq_attr_scaling_setspeed = { + .attr = { .name = "scaling_setspeed", .mode = 0644 }, + .show = show_speed, + .store = store_speed, +}; static int cpufreq_governor_userspace(struct cpufreq_policy *policy, unsigned int event) @@ -511,7 +506,7 @@ static int cpufreq_governor_userspace(struct cpufreq_policy *policy, cpu_min_freq[cpu] = policy->min; cpu_max_freq[cpu] = policy->max; cpu_cur_freq[cpu] = policy->cur; - device_create_file (policy->dev, &dev_attr_scaling_setspeed); + sysfs_create_file (&policy->kobj, &freq_attr_scaling_setspeed.attr); memcpy (¤t_policy[cpu], policy, sizeof(struct cpufreq_policy)); up(&userspace_sem); break; @@ -520,7 +515,7 @@ static int cpufreq_governor_userspace(struct cpufreq_policy *policy, cpu_is_managed[cpu] = 0; cpu_min_freq[cpu] = 0; cpu_max_freq[cpu] = 0; - device_remove_file (policy->dev, &dev_attr_scaling_setspeed); + sysfs_remove_file (&policy->kobj, &freq_attr_scaling_setspeed.attr); up(&userspace_sem); module_put(THIS_MODULE); break; diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index a01154e1deb84..ba271064081ac 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -18,7 +18,8 @@ #include #include #include - +#include +#include #define CPUFREQ_NAME_LEN 16 @@ -194,6 +195,13 @@ static inline void cpufreq_verify_within_limits(struct cpufreq_policy *policy, u return; } +struct freq_attr { + struct attribute attr; + ssize_t (*show)(struct cpufreq_policy *, char *); + ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count); +}; + + /********************************************************************* * CPUFREQ 2.6. INTERFACE * *********************************************************************/ diff --git a/kernel/cpufreq.c b/kernel/cpufreq.c index 40bf19ed7bdb8..af8186efd4193 100644 --- a/kernel/cpufreq.c +++ b/kernel/cpufreq.c @@ -256,12 +256,6 @@ static ssize_t show_scaling_available_governors(struct cpufreq_policy * policy, } -struct freq_attr { - struct attribute attr; - ssize_t (*show)(struct cpufreq_policy *, char *); - ssize_t (*store)(struct cpufreq_policy *, const char *, size_t count); -}; - #define define_one_ro(_name) \ struct freq_attr _name = { \ .attr = { .name = __stringify(_name), .mode = 0444 }, \ -- 2.53.0