Commit 4eb5178c authored by Rafael J. Wysocki's avatar Rafael J. Wysocki

Merge back earlier 'pm-cpufreq' material.

parents b36f4be3 5025d628
...@@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain? ...@@ -50,8 +50,6 @@ What shall this struct cpufreq_driver contain?
cpufreq_driver.name - The name of this driver. cpufreq_driver.name - The name of this driver.
cpufreq_driver.owner - THIS_MODULE;
cpufreq_driver.init - A pointer to the per-CPU initialization cpufreq_driver.init - A pointer to the per-CPU initialization
function. function.
......
...@@ -942,35 +942,6 @@ extern int set_tsc_mode(unsigned int val); ...@@ -942,35 +942,6 @@ extern int set_tsc_mode(unsigned int val);
extern u16 amd_get_nb_id(int cpu); extern u16 amd_get_nb_id(int cpu);
struct aperfmperf {
u64 aperf, mperf;
};
static inline void get_aperfmperf(struct aperfmperf *am)
{
WARN_ON_ONCE(!boot_cpu_has(X86_FEATURE_APERFMPERF));
rdmsrl(MSR_IA32_APERF, am->aperf);
rdmsrl(MSR_IA32_MPERF, am->mperf);
}
#define APERFMPERF_SHIFT 10
static inline
unsigned long calc_aperfmperf_ratio(struct aperfmperf *old,
struct aperfmperf *new)
{
u64 aperf = new->aperf - old->aperf;
u64 mperf = new->mperf - old->mperf;
unsigned long ratio = aperf;
mperf >>= APERFMPERF_SHIFT;
if (mperf)
ratio = div64_u64(aperf, mperf);
return ratio;
}
extern unsigned long arch_align_stack(unsigned long sp); extern unsigned long arch_align_stack(unsigned long sp);
extern void free_init_pages(char *what, unsigned long begin, unsigned long end); extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
......
...@@ -17,37 +17,47 @@ config ARM_DT_BL_CPUFREQ ...@@ -17,37 +17,47 @@ config ARM_DT_BL_CPUFREQ
big.LITTLE platform. This gets frequency tables from DT. big.LITTLE platform. This gets frequency tables from DT.
config ARM_EXYNOS_CPUFREQ config ARM_EXYNOS_CPUFREQ
bool "SAMSUNG EXYNOS SoCs" bool
depends on ARCH_EXYNOS
select CPU_FREQ_TABLE select CPU_FREQ_TABLE
default y
help
This adds the CPUFreq driver common part for Samsung
EXYNOS SoCs.
If in doubt, say N.
config ARM_EXYNOS4210_CPUFREQ config ARM_EXYNOS4210_CPUFREQ
def_bool CPU_EXYNOS4210 bool "SAMSUNG EXYNOS4210"
depends on CPU_EXYNOS4210
default y
select ARM_EXYNOS_CPUFREQ
help help
This adds the CPUFreq driver for Samsung EXYNOS4210 This adds the CPUFreq driver for Samsung EXYNOS4210
SoC (S5PV310 or S5PC210). SoC (S5PV310 or S5PC210).
If in doubt, say N.
config ARM_EXYNOS4X12_CPUFREQ config ARM_EXYNOS4X12_CPUFREQ
def_bool (SOC_EXYNOS4212 || SOC_EXYNOS4412) bool "SAMSUNG EXYNOS4x12"
depends on (SOC_EXYNOS4212 || SOC_EXYNOS4412)
default y
select ARM_EXYNOS_CPUFREQ
help help
This adds the CPUFreq driver for Samsung EXYNOS4X12 This adds the CPUFreq driver for Samsung EXYNOS4X12
SoC (EXYNOS4212 or EXYNOS4412). SoC (EXYNOS4212 or EXYNOS4412).
If in doubt, say N.
config ARM_EXYNOS5250_CPUFREQ config ARM_EXYNOS5250_CPUFREQ
def_bool SOC_EXYNOS5250 bool "SAMSUNG EXYNOS5250"
depends on SOC_EXYNOS5250
default y
select ARM_EXYNOS_CPUFREQ
help help
This adds the CPUFreq driver for Samsung EXYNOS5250 This adds the CPUFreq driver for Samsung EXYNOS5250
SoC. SoC.
If in doubt, say N.
config ARM_EXYNOS5440_CPUFREQ config ARM_EXYNOS5440_CPUFREQ
def_bool SOC_EXYNOS5440 bool "SAMSUNG EXYNOS5440"
depends on SOC_EXYNOS5440
depends on HAVE_CLK && PM_OPP && OF depends on HAVE_CLK && PM_OPP && OF
default y
select CPU_FREQ_TABLE select CPU_FREQ_TABLE
help help
This adds the CPUFreq driver for Samsung EXYNOS5440 This adds the CPUFreq driver for Samsung EXYNOS5440
...@@ -55,6 +65,8 @@ config ARM_EXYNOS5440_CPUFREQ ...@@ -55,6 +65,8 @@ config ARM_EXYNOS5440_CPUFREQ
different than previous exynos controllers so not using different than previous exynos controllers so not using
the common exynos framework. the common exynos framework.
If in doubt, say N.
config ARM_HIGHBANK_CPUFREQ config ARM_HIGHBANK_CPUFREQ
tristate "Calxeda Highbank-based" tristate "Calxeda Highbank-based"
depends on ARCH_HIGHBANK depends on ARCH_HIGHBANK
......
...@@ -23,7 +23,7 @@ obj-$(CONFIG_GENERIC_CPUFREQ_CPU0) += cpufreq-cpu0.o ...@@ -23,7 +23,7 @@ obj-$(CONFIG_GENERIC_CPUFREQ_CPU0) += cpufreq-cpu0.o
# powernow-k8 can load then. ACPI is preferred to all other hardware-specific drivers. # powernow-k8 can load then. ACPI is preferred to all other hardware-specific drivers.
# speedstep-* is preferred over p4-clockmod. # speedstep-* is preferred over p4-clockmod.
obj-$(CONFIG_X86_ACPI_CPUFREQ) += acpi-cpufreq.o mperf.o obj-$(CONFIG_X86_ACPI_CPUFREQ) += acpi-cpufreq.o
obj-$(CONFIG_X86_POWERNOW_K8) += powernow-k8.o obj-$(CONFIG_X86_POWERNOW_K8) += powernow-k8.o
obj-$(CONFIG_X86_PCC_CPUFREQ) += pcc-cpufreq.o obj-$(CONFIG_X86_PCC_CPUFREQ) += pcc-cpufreq.o
obj-$(CONFIG_X86_POWERNOW_K6) += powernow-k6.o obj-$(CONFIG_X86_POWERNOW_K6) += powernow-k6.o
......
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
#include <asm/msr.h> #include <asm/msr.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/cpufeature.h> #include <asm/cpufeature.h>
#include "mperf.h"
MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski"); MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski");
MODULE_DESCRIPTION("ACPI Processor P-States Driver"); MODULE_DESCRIPTION("ACPI Processor P-States Driver");
...@@ -198,7 +197,7 @@ static ssize_t show_cpb(struct cpufreq_policy *policy, char *buf) ...@@ -198,7 +197,7 @@ static ssize_t show_cpb(struct cpufreq_policy *policy, char *buf)
return sprintf(buf, "%u\n", boost_enabled); return sprintf(buf, "%u\n", boost_enabled);
} }
static struct freq_attr cpb = __ATTR(cpb, 0644, show_cpb, store_cpb); cpufreq_freq_attr_rw(cpb);
#endif #endif
static int check_est_cpu(unsigned int cpuid) static int check_est_cpu(unsigned int cpuid)
...@@ -710,7 +709,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -710,7 +709,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
return blacklisted; return blacklisted;
#endif #endif
data = kzalloc(sizeof(struct acpi_cpufreq_data), GFP_KERNEL); data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) if (!data)
return -ENOMEM; return -ENOMEM;
...@@ -800,7 +799,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -800,7 +799,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
goto err_unreg; goto err_unreg;
} }
data->freq_table = kmalloc(sizeof(struct cpufreq_frequency_table) * data->freq_table = kmalloc(sizeof(*data->freq_table) *
(perf->state_count+1), GFP_KERNEL); (perf->state_count+1), GFP_KERNEL);
if (!data->freq_table) { if (!data->freq_table) {
result = -ENOMEM; result = -ENOMEM;
...@@ -861,10 +860,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -861,10 +860,6 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
/* notify BIOS that we exist */ /* notify BIOS that we exist */
acpi_processor_notify_smm(THIS_MODULE); acpi_processor_notify_smm(THIS_MODULE);
/* Check for APERF/MPERF support in hardware */
if (boot_cpu_has(X86_FEATURE_APERFMPERF))
acpi_cpufreq_driver.getavg = cpufreq_get_measured_perf;
pr_debug("CPU%u - ACPI performance management activated.\n", cpu); pr_debug("CPU%u - ACPI performance management activated.\n", cpu);
for (i = 0; i < perf->state_count; i++) for (i = 0; i < perf->state_count; i++)
pr_debug(" %cP%d: %d MHz, %d mW, %d uS\n", pr_debug(" %cP%d: %d MHz, %d mW, %d uS\n",
...@@ -941,7 +936,6 @@ static struct cpufreq_driver acpi_cpufreq_driver = { ...@@ -941,7 +936,6 @@ static struct cpufreq_driver acpi_cpufreq_driver = {
.exit = acpi_cpufreq_cpu_exit, .exit = acpi_cpufreq_cpu_exit,
.resume = acpi_cpufreq_resume, .resume = acpi_cpufreq_resume,
.name = "acpi-cpufreq", .name = "acpi-cpufreq",
.owner = THIS_MODULE,
.attr = acpi_cpufreq_attr, .attr = acpi_cpufreq_attr,
}; };
......
...@@ -108,7 +108,6 @@ static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy) ...@@ -108,7 +108,6 @@ static int __init at32_cpufreq_driver_init(struct cpufreq_policy *policy)
static struct cpufreq_driver at32_driver = { static struct cpufreq_driver at32_driver = {
.name = "at32ap", .name = "at32ap",
.owner = THIS_MODULE,
.init = at32_cpufreq_driver_init, .init = at32_cpufreq_driver_init,
.verify = at32_verify_speed, .verify = at32_verify_speed,
.target = at32_set_target, .target = at32_set_target,
......
...@@ -225,7 +225,6 @@ static struct cpufreq_driver bfin_driver = { ...@@ -225,7 +225,6 @@ static struct cpufreq_driver bfin_driver = {
.get = bfin_getfreq_khz, .get = bfin_getfreq_khz,
.init = __bfin_cpu_init, .init = __bfin_cpu_init,
.name = "bfin cpufreq", .name = "bfin cpufreq",
.owner = THIS_MODULE,
.attr = bfin_freq_attr, .attr = bfin_freq_attr,
}; };
......
...@@ -69,7 +69,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy, ...@@ -69,7 +69,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
if (cpu_reg) { if (!IS_ERR(cpu_reg)) {
rcu_read_lock(); rcu_read_lock();
opp = opp_find_freq_ceil(cpu_dev, &freq_Hz); opp = opp_find_freq_ceil(cpu_dev, &freq_Hz);
if (IS_ERR(opp)) { if (IS_ERR(opp)) {
...@@ -90,7 +90,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy, ...@@ -90,7 +90,7 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
freqs.new / 1000, volt ? volt / 1000 : -1); freqs.new / 1000, volt ? volt / 1000 : -1);
/* scaling up? scale voltage before frequency */ /* scaling up? scale voltage before frequency */
if (cpu_reg && freqs.new > freqs.old) { if (!IS_ERR(cpu_reg) && freqs.new > freqs.old) {
ret = regulator_set_voltage_tol(cpu_reg, volt, tol); ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
if (ret) { if (ret) {
pr_err("failed to scale voltage up: %d\n", ret); pr_err("failed to scale voltage up: %d\n", ret);
...@@ -102,14 +102,14 @@ static int cpu0_set_target(struct cpufreq_policy *policy, ...@@ -102,14 +102,14 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
ret = clk_set_rate(cpu_clk, freq_exact); ret = clk_set_rate(cpu_clk, freq_exact);
if (ret) { if (ret) {
pr_err("failed to set clock rate: %d\n", ret); pr_err("failed to set clock rate: %d\n", ret);
if (cpu_reg) if (!IS_ERR(cpu_reg))
regulator_set_voltage_tol(cpu_reg, volt_old, tol); regulator_set_voltage_tol(cpu_reg, volt_old, tol);
freqs.new = freqs.old; freqs.new = freqs.old;
goto post_notify; goto post_notify;
} }
/* scaling down? scale voltage after frequency */ /* scaling down? scale voltage after frequency */
if (cpu_reg && freqs.new < freqs.old) { if (!IS_ERR(cpu_reg) && freqs.new < freqs.old) {
ret = regulator_set_voltage_tol(cpu_reg, volt, tol); ret = regulator_set_voltage_tol(cpu_reg, volt, tol);
if (ret) { if (ret) {
pr_err("failed to scale voltage down: %d\n", ret); pr_err("failed to scale voltage down: %d\n", ret);
...@@ -210,7 +210,6 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev) ...@@ -210,7 +210,6 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
} }
pr_warn("failed to get cpu0 regulator: %ld\n", pr_warn("failed to get cpu0 regulator: %ld\n",
PTR_ERR(cpu_reg)); PTR_ERR(cpu_reg));
cpu_reg = NULL;
} }
cpu_clk = devm_clk_get(cpu_dev, NULL); cpu_clk = devm_clk_get(cpu_dev, NULL);
......
...@@ -379,7 +379,6 @@ static struct cpufreq_driver nforce2_driver = { ...@@ -379,7 +379,6 @@ static struct cpufreq_driver nforce2_driver = {
.get = nforce2_get, .get = nforce2_get,
.init = nforce2_cpu_init, .init = nforce2_cpu_init,
.exit = nforce2_cpu_exit, .exit = nforce2_cpu_exit,
.owner = THIS_MODULE,
}; };
#ifdef MODULE #ifdef MODULE
......
This diff is collapsed.
...@@ -11,19 +11,7 @@ ...@@ -11,19 +11,7 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <linux/cpufreq.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/kobject.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/notifier.h>
#include <linux/percpu-defs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/sysfs.h>
#include <linux/types.h>
#include "cpufreq_governor.h" #include "cpufreq_governor.h"
/* Conservative governor macros */ /* Conservative governor macros */
...@@ -329,7 +317,7 @@ static int cs_init(struct dbs_data *dbs_data) ...@@ -329,7 +317,7 @@ static int cs_init(struct dbs_data *dbs_data)
{ {
struct cs_dbs_tuners *tuners; struct cs_dbs_tuners *tuners;
tuners = kzalloc(sizeof(struct cs_dbs_tuners), GFP_KERNEL); tuners = kzalloc(sizeof(*tuners), GFP_KERNEL);
if (!tuners) { if (!tuners) {
pr_err("%s: kzalloc failed\n", __func__); pr_err("%s: kzalloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
......
...@@ -16,15 +16,9 @@ ...@@ -16,15 +16,9 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <asm/cputime.h>
#include <linux/cpufreq.h>
#include <linux/cpumask.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/kernel_stat.h> #include <linux/kernel_stat.h>
#include <linux/mutex.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/types.h>
#include <linux/workqueue.h>
#include "cpufreq_governor.h" #include "cpufreq_governor.h"
...@@ -53,7 +47,7 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu) ...@@ -53,7 +47,7 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu)
policy = cdbs->cur_policy; policy = cdbs->cur_policy;
/* Get Absolute Load (in terms of freq for ondemand gov) */ /* Get Absolute Load */
for_each_cpu(j, policy->cpus) { for_each_cpu(j, policy->cpus) {
struct cpu_dbs_common_info *j_cdbs; struct cpu_dbs_common_info *j_cdbs;
u64 cur_wall_time, cur_idle_time; u64 cur_wall_time, cur_idle_time;
...@@ -104,14 +98,6 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu) ...@@ -104,14 +98,6 @@ void dbs_check_cpu(struct dbs_data *dbs_data, int cpu)
load = 100 * (wall_time - idle_time) / wall_time; load = 100 * (wall_time - idle_time) / wall_time;
if (dbs_data->cdata->governor == GOV_ONDEMAND) {
int freq_avg = __cpufreq_driver_getavg(policy, j);
if (freq_avg <= 0)
freq_avg = policy->cur;
load *= freq_avg;
}
if (load > max_load) if (load > max_load)
max_load = load; max_load = load;
} }
......
...@@ -18,10 +18,9 @@ ...@@ -18,10 +18,9 @@
#define _CPUFREQ_GOVERNOR_H #define _CPUFREQ_GOVERNOR_H
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/kobject.h> #include <linux/kernel_stat.h>
#include <linux/module.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/workqueue.h>
#include <linux/sysfs.h>
/* /*
* The polling frequency depends on the capability of the processor. Default * The polling frequency depends on the capability of the processor. Default
...@@ -169,7 +168,6 @@ struct od_dbs_tuners { ...@@ -169,7 +168,6 @@ struct od_dbs_tuners {
unsigned int sampling_rate; unsigned int sampling_rate;
unsigned int sampling_down_factor; unsigned int sampling_down_factor;
unsigned int up_threshold; unsigned int up_threshold;
unsigned int adj_up_threshold;
unsigned int powersave_bias; unsigned int powersave_bias;
unsigned int io_is_busy; unsigned int io_is_busy;
}; };
...@@ -223,7 +221,7 @@ struct od_ops { ...@@ -223,7 +221,7 @@ struct od_ops {
void (*powersave_bias_init_cpu)(int cpu); void (*powersave_bias_init_cpu)(int cpu);
unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy, unsigned int (*powersave_bias_target)(struct cpufreq_policy *policy,
unsigned int freq_next, unsigned int relation); unsigned int freq_next, unsigned int relation);
void (*freq_increase)(struct cpufreq_policy *p, unsigned int freq); void (*freq_increase)(struct cpufreq_policy *policy, unsigned int freq);
}; };
struct cs_ops { struct cs_ops {
......
...@@ -12,28 +12,16 @@ ...@@ -12,28 +12,16 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/cpufreq.h> #include <linux/cpu.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kernel_stat.h>
#include <linux/kobject.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/percpu-defs.h> #include <linux/percpu-defs.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/sysfs.h>
#include <linux/tick.h> #include <linux/tick.h>
#include <linux/types.h>
#include <linux/cpu.h>
#include "cpufreq_governor.h" #include "cpufreq_governor.h"
/* On-demand governor macros */ /* On-demand governor macros */
#define DEF_FREQUENCY_DOWN_DIFFERENTIAL (10)
#define DEF_FREQUENCY_UP_THRESHOLD (80) #define DEF_FREQUENCY_UP_THRESHOLD (80)
#define DEF_SAMPLING_DOWN_FACTOR (1) #define DEF_SAMPLING_DOWN_FACTOR (1)
#define MAX_SAMPLING_DOWN_FACTOR (100000) #define MAX_SAMPLING_DOWN_FACTOR (100000)
#define MICRO_FREQUENCY_DOWN_DIFFERENTIAL (3)
#define MICRO_FREQUENCY_UP_THRESHOLD (95) #define MICRO_FREQUENCY_UP_THRESHOLD (95)
#define MICRO_FREQUENCY_MIN_SAMPLE_RATE (10000) #define MICRO_FREQUENCY_MIN_SAMPLE_RATE (10000)
#define MIN_FREQUENCY_UP_THRESHOLD (11) #define MIN_FREQUENCY_UP_THRESHOLD (11)
...@@ -144,31 +132,27 @@ static void ondemand_powersave_bias_init(void) ...@@ -144,31 +132,27 @@ static void ondemand_powersave_bias_init(void)
} }
} }
static void dbs_freq_increase(struct cpufreq_policy *p, unsigned int freq) static void dbs_freq_increase(struct cpufreq_policy *policy, unsigned int freq)
{ {
struct dbs_data *dbs_data = p->governor_data; struct dbs_data *dbs_data = policy->governor_data;
struct od_dbs_tuners *od_tuners = dbs_data->tuners; struct od_dbs_tuners *od_tuners = dbs_data->tuners;
if (od_tuners->powersave_bias) if (od_tuners->powersave_bias)
freq = od_ops.powersave_bias_target(p, freq, freq = od_ops.powersave_bias_target(policy, freq,
CPUFREQ_RELATION_H); CPUFREQ_RELATION_H);
else if (p->cur == p->max) else if (policy->cur == policy->max)
return; return;
__cpufreq_driver_target(p, freq, od_tuners->powersave_bias ? __cpufreq_driver_target(policy, freq, od_tuners->powersave_bias ?
CPUFREQ_RELATION_L : CPUFREQ_RELATION_H); CPUFREQ_RELATION_L : CPUFREQ_RELATION_H);
} }
/* /*
* Every sampling_rate, we check, if current idle time is less than 20% * Every sampling_rate, we check, if current idle time is less than 20%
* (default), then we try to increase frequency. Every sampling_rate, we look * (default), then we try to increase frequency. Else, we adjust the frequency
* for the lowest frequency which can sustain the load while keeping idle time * proportional to load.
* over 30%. If such a frequency exist, we try to decrease to this frequency.
*
* Any frequency increase takes it to the maximum frequency. Frequency reduction
* happens at minimum steps of 5% (default) of current frequency
*/ */
static void od_check_cpu(int cpu, unsigned int load_freq) static void od_check_cpu(int cpu, unsigned int load)
{ {
struct od_cpu_dbs_info_s *dbs_info = &per_cpu(od_cpu_dbs_info, cpu); struct od_cpu_dbs_info_s *dbs_info = &per_cpu(od_cpu_dbs_info, cpu);
struct cpufreq_policy *policy = dbs_info->cdbs.cur_policy; struct cpufreq_policy *policy = dbs_info->cdbs.cur_policy;
...@@ -178,29 +162,17 @@ static void od_check_cpu(int cpu, unsigned int load_freq) ...@@ -178,29 +162,17 @@ static void od_check_cpu(int cpu, unsigned int load_freq)
dbs_info->freq_lo = 0; dbs_info->freq_lo = 0;
/* Check for frequency increase */ /* Check for frequency increase */
if (load_freq > od_tuners->up_threshold * policy->cur) { if (load > od_tuners->up_threshold) {
/* If switching to max speed, apply sampling_down_factor */ /* If switching to max speed, apply sampling_down_factor */
if (policy->cur < policy->max) if (policy->cur < policy->max)
dbs_info->rate_mult = dbs_info->rate_mult =
od_tuners->sampling_down_factor; od_tuners->sampling_down_factor;
dbs_freq_increase(policy, policy->max); dbs_freq_increase(policy, policy->max);
return; return;
} } else {
/* Calculate the next frequency proportional to load */
/* Check for frequency decrease */
/* if we cannot reduce the frequency anymore, break out early */
if (policy->cur == policy->min)
return;
/*
* The optimal frequency is the frequency that is the lowest that can
* support the current CPU usage without triggering the up policy. To be
* safe, we focus 10 points under the threshold.
*/
if (load_freq < od_tuners->adj_up_threshold
* policy->cur) {
unsigned int freq_next; unsigned int freq_next;
freq_next = load_freq / od_tuners->adj_up_threshold; freq_next = load * policy->cpuinfo.max_freq / 100;
/* No longer fully busy, reset rate_mult */ /* No longer fully busy, reset rate_mult */
dbs_info->rate_mult = 1; dbs_info->rate_mult = 1;
...@@ -374,9 +346,6 @@ static ssize_t store_up_threshold(struct dbs_data *dbs_data, const char *buf, ...@@ -374,9 +346,6 @@ static ssize_t store_up_threshold(struct dbs_data *dbs_data, const char *buf,
input < MIN_FREQUENCY_UP_THRESHOLD) { input < MIN_FREQUENCY_UP_THRESHOLD) {
return -EINVAL; return -EINVAL;
} }
/* Calculate the new adj_up_threshold */
od_tuners->adj_up_threshold += input;
od_tuners->adj_up_threshold -= od_tuners->up_threshold;
od_tuners->up_threshold = input; od_tuners->up_threshold = input;
return count; return count;
...@@ -513,7 +482,7 @@ static int od_init(struct dbs_data *dbs_data) ...@@ -513,7 +482,7 @@ static int od_init(struct dbs_data *dbs_data)
u64 idle_time; u64 idle_time;
int cpu; int cpu;
tuners = kzalloc(sizeof(struct od_dbs_tuners), GFP_KERNEL); tuners = kzalloc(sizeof(*tuners), GFP_KERNEL);
if (!tuners) { if (!tuners) {
pr_err("%s: kzalloc failed\n", __func__); pr_err("%s: kzalloc failed\n", __func__);
return -ENOMEM; return -ENOMEM;
...@@ -525,8 +494,6 @@ static int od_init(struct dbs_data *dbs_data) ...@@ -525,8 +494,6 @@ static int od_init(struct dbs_data *dbs_data)
if (idle_time != -1ULL) { if (idle_time != -1ULL) {
/* Idle micro accounting is supported. Use finer thresholds */ /* Idle micro accounting is supported. Use finer thresholds */
tuners->up_threshold = MICRO_FREQUENCY_UP_THRESHOLD; tuners->up_threshold = MICRO_FREQUENCY_UP_THRESHOLD;
tuners->adj_up_threshold = MICRO_FREQUENCY_UP_THRESHOLD -
MICRO_FREQUENCY_DOWN_DIFFERENTIAL;
/* /*
* In nohz/micro accounting case we set the minimum frequency * In nohz/micro accounting case we set the minimum frequency
* not depending on HZ, but fixed (very low). The deferred * not depending on HZ, but fixed (very low). The deferred
...@@ -535,8 +502,6 @@ static int od_init(struct dbs_data *dbs_data) ...@@ -535,8 +502,6 @@ static int od_init(struct dbs_data *dbs_data)
dbs_data->min_sampling_rate = MICRO_FREQUENCY_MIN_SAMPLE_RATE; dbs_data->min_sampling_rate = MICRO_FREQUENCY_MIN_SAMPLE_RATE;
} else { } else {
tuners->up_threshold = DEF_FREQUENCY_UP_THRESHOLD; tuners->up_threshold = DEF_FREQUENCY_UP_THRESHOLD;
tuners->adj_up_threshold = DEF_FREQUENCY_UP_THRESHOLD -
DEF_FREQUENCY_DOWN_DIFFERENTIAL;
/* For correct statistics, we need 10 ticks for each measure */ /* For correct statistics, we need 10 ticks for each measure */
dbs_data->min_sampling_rate = MIN_SAMPLING_RATE_RATIO * dbs_data->min_sampling_rate = MIN_SAMPLING_RATE_RATIO *
......
...@@ -12,10 +12,9 @@ ...@@ -12,10 +12,9 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
static int cpufreq_governor_performance(struct cpufreq_policy *policy, static int cpufreq_governor_performance(struct cpufreq_policy *policy,
unsigned int event) unsigned int event)
......
...@@ -12,10 +12,9 @@ ...@@ -12,10 +12,9 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h>
static int cpufreq_governor_powersave(struct cpufreq_policy *policy, static int cpufreq_governor_powersave(struct cpufreq_policy *policy,
unsigned int event) unsigned int event)
......
...@@ -9,17 +9,10 @@ ...@@ -9,17 +9,10 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/sysfs.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/jiffies.h> #include <linux/slab.h>
#include <linux/percpu.h>
#include <linux/kobject.h>
#include <linux/spinlock.h>
#include <linux/notifier.h>
#include <asm/cputime.h> #include <asm/cputime.h>
static spinlock_t cpufreq_stats_lock; static spinlock_t cpufreq_stats_lock;
...@@ -200,22 +193,22 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy, ...@@ -200,22 +193,22 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy,
{ {
unsigned int i, j, count = 0, ret = 0; unsigned int i, j, count = 0, ret = 0;
struct cpufreq_stats *stat; struct cpufreq_stats *stat;
struct cpufreq_policy *data; struct cpufreq_policy *current_policy;
unsigned int alloc_size; unsigned int alloc_size;
unsigned int cpu = policy->cpu; unsigned int cpu = policy->cpu;
if (per_cpu(cpufreq_stats_table, cpu)) if (per_cpu(cpufreq_stats_table, cpu))
return -EBUSY; return -EBUSY;
stat = kzalloc(sizeof(struct cpufreq_stats), GFP_KERNEL); stat = kzalloc(sizeof(*stat), GFP_KERNEL);
if ((stat) == NULL) if ((stat) == NULL)
return -ENOMEM; return -ENOMEM;
data = cpufreq_cpu_get(cpu); current_policy = cpufreq_cpu_get(cpu);
if (data == NULL) { if (current_policy == NULL) {
ret = -EINVAL; ret = -EINVAL;
goto error_get_fail; goto error_get_fail;
} }
ret = sysfs_create_group(&data->kobj, &stats_attr_group); ret = sysfs_create_group(&current_policy->kobj, &stats_attr_group);
if (ret) if (ret)
goto error_out; goto error_out;
...@@ -258,10 +251,10 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy, ...@@ -258,10 +251,10 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy,
stat->last_time = get_jiffies_64(); stat->last_time = get_jiffies_64();
stat->last_index = freq_table_get_index(stat, policy->cur); stat->last_index = freq_table_get_index(stat, policy->cur);
spin_unlock(&cpufreq_stats_lock); spin_unlock(&cpufreq_stats_lock);
cpufreq_cpu_put(data); cpufreq_cpu_put(current_policy);
return 0; return 0;
error_out: error_out:
cpufreq_cpu_put(data); cpufreq_cpu_put(current_policy);
error_get_fail: error_get_fail:
kfree(stat); kfree(stat);
per_cpu(cpufreq_stats_table, cpu) = NULL; per_cpu(cpufreq_stats_table, cpu) = NULL;
...@@ -348,16 +341,10 @@ static int cpufreq_stat_cpu_callback(struct notifier_block *nfb, ...@@ -348,16 +341,10 @@ static int cpufreq_stat_cpu_callback(struct notifier_block *nfb,
unsigned int cpu = (unsigned long)hcpu; unsigned int cpu = (unsigned long)hcpu;
switch (action) { switch (action) {
case CPU_ONLINE:
case CPU_ONLINE_FROZEN:
cpufreq_update_policy(cpu);
break;
case CPU_DOWN_PREPARE: case CPU_DOWN_PREPARE:
case CPU_DOWN_PREPARE_FROZEN:
cpufreq_stats_free_sysfs(cpu); cpufreq_stats_free_sysfs(cpu);
break; break;
case CPU_DEAD: case CPU_DEAD:
case CPU_DEAD_FROZEN:
cpufreq_stats_free_table(cpu); cpufreq_stats_free_table(cpu);
break; break;
} }
...@@ -390,8 +377,6 @@ static int __init cpufreq_stats_init(void) ...@@ -390,8 +377,6 @@ static int __init cpufreq_stats_init(void)
return ret; return ret;
register_hotcpu_notifier(&cpufreq_stat_cpu_notifier); register_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu)
cpufreq_update_policy(cpu);
ret = cpufreq_register_notifier(&notifier_trans_block, ret = cpufreq_register_notifier(&notifier_trans_block,
CPUFREQ_TRANSITION_NOTIFIER); CPUFREQ_TRANSITION_NOTIFIER);
......
...@@ -111,7 +111,6 @@ static struct cpufreq_driver cris_freq_driver = { ...@@ -111,7 +111,6 @@ static struct cpufreq_driver cris_freq_driver = {
.init = cris_freq_cpu_init, .init = cris_freq_cpu_init,
.exit = cris_freq_cpu_exit, .exit = cris_freq_cpu_exit,
.name = "cris_freq", .name = "cris_freq",
.owner = THIS_MODULE,
.attr = cris_freq_attr, .attr = cris_freq_attr,
}; };
......
...@@ -108,7 +108,6 @@ static struct cpufreq_driver cris_freq_driver = { ...@@ -108,7 +108,6 @@ static struct cpufreq_driver cris_freq_driver = {
.init = cris_freq_cpu_init, .init = cris_freq_cpu_init,
.exit = cris_freq_cpu_exit, .exit = cris_freq_cpu_exit,
.name = "cris_freq", .name = "cris_freq",
.owner = THIS_MODULE,
.attr = cris_freq_attr, .attr = cris_freq_attr,
}; };
......
...@@ -54,7 +54,7 @@ static struct acpi_processor_performance *eps_acpi_cpu_perf; ...@@ -54,7 +54,7 @@ static struct acpi_processor_performance *eps_acpi_cpu_perf;
/* Minimum necessary to get acpi_processor_get_bios_limit() working */ /* Minimum necessary to get acpi_processor_get_bios_limit() working */
static int eps_acpi_init(void) static int eps_acpi_init(void)
{ {
eps_acpi_cpu_perf = kzalloc(sizeof(struct acpi_processor_performance), eps_acpi_cpu_perf = kzalloc(sizeof(*eps_acpi_cpu_perf),
GFP_KERNEL); GFP_KERNEL);
if (!eps_acpi_cpu_perf) if (!eps_acpi_cpu_perf)
return -ENOMEM; return -ENOMEM;
...@@ -366,7 +366,7 @@ static int eps_cpu_init(struct cpufreq_policy *policy) ...@@ -366,7 +366,7 @@ static int eps_cpu_init(struct cpufreq_policy *policy)
states = 2; states = 2;
/* Allocate private data and frequency table for current cpu */ /* Allocate private data and frequency table for current cpu */
centaur = kzalloc(sizeof(struct eps_cpu_data) centaur = kzalloc(sizeof(*centaur)
+ (states + 1) * sizeof(struct cpufreq_frequency_table), + (states + 1) * sizeof(struct cpufreq_frequency_table),
GFP_KERNEL); GFP_KERNEL);
if (!centaur) if (!centaur)
...@@ -436,7 +436,6 @@ static struct cpufreq_driver eps_driver = { ...@@ -436,7 +436,6 @@ static struct cpufreq_driver eps_driver = {
.exit = eps_cpu_exit, .exit = eps_cpu_exit,
.get = eps_get, .get = eps_get,
.name = "e_powersaver", .name = "e_powersaver",
.owner = THIS_MODULE,
.attr = eps_attr, .attr = eps_attr,
}; };
......
...@@ -274,7 +274,6 @@ static struct cpufreq_driver elanfreq_driver = { ...@@ -274,7 +274,6 @@ static struct cpufreq_driver elanfreq_driver = {
.init = elanfreq_cpu_init, .init = elanfreq_cpu_init,
.exit = elanfreq_cpu_exit, .exit = elanfreq_cpu_exit,
.name = "elanfreq", .name = "elanfreq",
.owner = THIS_MODULE,
.attr = elanfreq_attr, .attr = elanfreq_attr,
}; };
......
...@@ -289,7 +289,7 @@ static int __init exynos_cpufreq_init(void) ...@@ -289,7 +289,7 @@ static int __init exynos_cpufreq_init(void)
{ {
int ret = -EINVAL; int ret = -EINVAL;
exynos_info = kzalloc(sizeof(struct exynos_dvfs_info), GFP_KERNEL); exynos_info = kzalloc(sizeof(*exynos_info), GFP_KERNEL);
if (!exynos_info) if (!exynos_info)
return -ENOMEM; return -ENOMEM;
...@@ -332,7 +332,6 @@ static int __init exynos_cpufreq_init(void) ...@@ -332,7 +332,6 @@ static int __init exynos_cpufreq_init(void)
regulator_put(arm_regulator); regulator_put(arm_regulator);
err_vdd_arm: err_vdd_arm:
kfree(exynos_info); kfree(exynos_info);
pr_debug("%s: failed initialization\n", __func__);
return -EINVAL; return -EINVAL;
} }
late_initcall(exynos_cpufreq_init); late_initcall(exynos_cpufreq_init);
...@@ -43,6 +43,27 @@ struct exynos_dvfs_info { ...@@ -43,6 +43,27 @@ struct exynos_dvfs_info {
bool (*need_apll_change)(unsigned int, unsigned int); bool (*need_apll_change)(unsigned int, unsigned int);
}; };
#ifdef CONFIG_ARM_EXYNOS4210_CPUFREQ
extern int exynos4210_cpufreq_init(struct exynos_dvfs_info *); extern int exynos4210_cpufreq_init(struct exynos_dvfs_info *);
#else
static inline int exynos4210_cpufreq_init(struct exynos_dvfs_info *info)
{
return -EOPNOTSUPP;
}
#endif
#ifdef CONFIG_ARM_EXYNOS4X12_CPUFREQ
extern int exynos4x12_cpufreq_init(struct exynos_dvfs_info *); extern int exynos4x12_cpufreq_init(struct exynos_dvfs_info *);
#else
static inline int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info)
{
return -EOPNOTSUPP;
}
#endif
#ifdef CONFIG_ARM_EXYNOS5250_CPUFREQ
extern int exynos5250_cpufreq_init(struct exynos_dvfs_info *); extern int exynos5250_cpufreq_init(struct exynos_dvfs_info *);
#else
static inline int exynos5250_cpufreq_init(struct exynos_dvfs_info *info)
{
return -EOPNOTSUPP;
}
#endif
...@@ -238,6 +238,9 @@ static int exynos_target(struct cpufreq_policy *policy, ...@@ -238,6 +238,9 @@ static int exynos_target(struct cpufreq_policy *policy,
freqs.old = dvfs_info->cur_frequency; freqs.old = dvfs_info->cur_frequency;
freqs.new = freq_table[index].frequency; freqs.new = freq_table[index].frequency;
if (freqs.old == freqs.new)
goto out;
cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE); cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
/* Set the target frequency in all C0_3_PSTATE register */ /* Set the target frequency in all C0_3_PSTATE register */
......
...@@ -11,10 +11,8 @@ ...@@ -11,10 +11,8 @@
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/module.h>
/********************************************************************* /*********************************************************************
* FREQUENCY TABLE HELPERS * * FREQUENCY TABLE HELPERS *
......
...@@ -183,7 +183,7 @@ static void gx_write_byte(int reg, int value) ...@@ -183,7 +183,7 @@ static void gx_write_byte(int reg, int value)
* gx_detect_chipset: * gx_detect_chipset:
* *
**/ **/
static __init struct pci_dev *gx_detect_chipset(void) static struct pci_dev * __init gx_detect_chipset(void)
{ {
struct pci_dev *gx_pci = NULL; struct pci_dev *gx_pci = NULL;
...@@ -446,7 +446,6 @@ static struct cpufreq_driver gx_suspmod_driver = { ...@@ -446,7 +446,6 @@ static struct cpufreq_driver gx_suspmod_driver = {
.target = cpufreq_gx_target, .target = cpufreq_gx_target,
.init = cpufreq_gx_cpu_init, .init = cpufreq_gx_cpu_init,
.name = "gx-suspmod", .name = "gx-suspmod",
.owner = THIS_MODULE,
}; };
static int __init cpufreq_gx_init(void) static int __init cpufreq_gx_init(void)
...@@ -466,7 +465,7 @@ static int __init cpufreq_gx_init(void) ...@@ -466,7 +465,7 @@ static int __init cpufreq_gx_init(void)
pr_debug("geode suspend modulation available.\n"); pr_debug("geode suspend modulation available.\n");
params = kzalloc(sizeof(struct gxfreq_params), GFP_KERNEL); params = kzalloc(sizeof(*params), GFP_KERNEL);
if (params == NULL) if (params == NULL)
return -ENOMEM; return -ENOMEM;
......
...@@ -274,7 +274,7 @@ acpi_cpufreq_cpu_init ( ...@@ -274,7 +274,7 @@ acpi_cpufreq_cpu_init (
pr_debug("acpi_cpufreq_cpu_init\n"); pr_debug("acpi_cpufreq_cpu_init\n");
data = kzalloc(sizeof(struct cpufreq_acpi_io), GFP_KERNEL); data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) if (!data)
return (-ENOMEM); return (-ENOMEM);
...@@ -304,7 +304,7 @@ acpi_cpufreq_cpu_init ( ...@@ -304,7 +304,7 @@ acpi_cpufreq_cpu_init (
} }
/* alloc freq_table */ /* alloc freq_table */
data->freq_table = kmalloc(sizeof(struct cpufreq_frequency_table) * data->freq_table = kmalloc(sizeof(*data->freq_table) *
(data->acpi_data.state_count + 1), (data->acpi_data.state_count + 1),
GFP_KERNEL); GFP_KERNEL);
if (!data->freq_table) { if (!data->freq_table) {
...@@ -409,7 +409,6 @@ static struct cpufreq_driver acpi_cpufreq_driver = { ...@@ -409,7 +409,6 @@ static struct cpufreq_driver acpi_cpufreq_driver = {
.init = acpi_cpufreq_cpu_init, .init = acpi_cpufreq_cpu_init,
.exit = acpi_cpufreq_cpu_exit, .exit = acpi_cpufreq_cpu_exit,
.name = "acpi-cpufreq", .name = "acpi-cpufreq",
.owner = THIS_MODULE,
.attr = acpi_cpufreq_attr, .attr = acpi_cpufreq_attr,
}; };
......
...@@ -665,7 +665,6 @@ static struct cpufreq_driver intel_pstate_driver = { ...@@ -665,7 +665,6 @@ static struct cpufreq_driver intel_pstate_driver = {
.init = intel_pstate_cpu_init, .init = intel_pstate_cpu_init,
.exit = intel_pstate_cpu_exit, .exit = intel_pstate_cpu_exit,
.name = "intel_pstate", .name = "intel_pstate",
.owner = THIS_MODULE,
}; };
static int __initdata no_load; static int __initdata no_load;
......
...@@ -158,7 +158,6 @@ static struct cpufreq_driver kirkwood_cpufreq_driver = { ...@@ -158,7 +158,6 @@ static struct cpufreq_driver kirkwood_cpufreq_driver = {
.init = kirkwood_cpufreq_cpu_init, .init = kirkwood_cpufreq_cpu_init,
.exit = kirkwood_cpufreq_cpu_exit, .exit = kirkwood_cpufreq_cpu_exit,
.name = "kirkwood-cpufreq", .name = "kirkwood-cpufreq",
.owner = THIS_MODULE,
.attr = kirkwood_cpufreq_attr, .attr = kirkwood_cpufreq_attr,
}; };
......
...@@ -948,7 +948,6 @@ static struct cpufreq_driver longhaul_driver = { ...@@ -948,7 +948,6 @@ static struct cpufreq_driver longhaul_driver = {
.init = longhaul_cpu_init, .init = longhaul_cpu_init,
.exit = longhaul_cpu_exit, .exit = longhaul_cpu_exit,
.name = "longhaul", .name = "longhaul",
.owner = THIS_MODULE,
.attr = longhaul_attr, .attr = longhaul_attr,
}; };
......
...@@ -286,7 +286,6 @@ static struct cpufreq_driver longrun_driver = { ...@@ -286,7 +286,6 @@ static struct cpufreq_driver longrun_driver = {
.get = longrun_get, .get = longrun_get,
.init = longrun_cpu_init, .init = longrun_cpu_init,
.name = "longrun", .name = "longrun",
.owner = THIS_MODULE,
}; };
static const struct x86_cpu_id longrun_ids[] = { static const struct x86_cpu_id longrun_ids[] = {
......
...@@ -158,7 +158,6 @@ static struct freq_attr *loongson2_table_attr[] = { ...@@ -158,7 +158,6 @@ static struct freq_attr *loongson2_table_attr[] = {
}; };
static struct cpufreq_driver loongson2_cpufreq_driver = { static struct cpufreq_driver loongson2_cpufreq_driver = {
.owner = THIS_MODULE,
.name = "loongson2", .name = "loongson2",
.init = loongson2_cpufreq_cpu_init, .init = loongson2_cpufreq_cpu_init,
.verify = loongson2_cpufreq_verify, .verify = loongson2_cpufreq_verify,
......
...@@ -190,7 +190,6 @@ static int maple_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -190,7 +190,6 @@ static int maple_cpufreq_cpu_init(struct cpufreq_policy *policy)
static struct cpufreq_driver maple_cpufreq_driver = { static struct cpufreq_driver maple_cpufreq_driver = {
.name = "maple", .name = "maple",
.owner = THIS_MODULE,
.flags = CPUFREQ_CONST_LOOPS, .flags = CPUFREQ_CONST_LOOPS,
.init = maple_cpufreq_cpu_init, .init = maple_cpufreq_cpu_init,
.verify = maple_cpufreq_verify, .verify = maple_cpufreq_verify,
......
#include <linux/kernel.h>
#include <linux/smp.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/cpufreq.h>
#include <linux/slab.h>
#include "mperf.h"
static DEFINE_PER_CPU(struct aperfmperf, acfreq_old_perf);
/* Called via smp_call_function_single(), on the target CPU */
static void read_measured_perf_ctrs(void *_cur)
{
struct aperfmperf *am = _cur;
get_aperfmperf(am);
}
/*
* Return the measured active (C0) frequency on this CPU since last call
* to this function.
* Input: cpu number
* Return: Average CPU frequency in terms of max frequency (zero on error)
*
* We use IA32_MPERF and IA32_APERF MSRs to get the measured performance
* over a period of time, while CPU is in C0 state.
* IA32_MPERF counts at the rate of max advertised frequency
* IA32_APERF counts at the rate of actual CPU frequency
* Only IA32_APERF/IA32_MPERF ratio is architecturally defined and
* no meaning should be associated with absolute values of these MSRs.
*/
unsigned int cpufreq_get_measured_perf(struct cpufreq_policy *policy,
unsigned int cpu)
{
struct aperfmperf perf;
unsigned long ratio;
unsigned int retval;
if (smp_call_function_single(cpu, read_measured_perf_ctrs, &perf, 1))
return 0;
ratio = calc_aperfmperf_ratio(&per_cpu(acfreq_old_perf, cpu), &perf);
per_cpu(acfreq_old_perf, cpu) = perf;
retval = (policy->cpuinfo.max_freq * ratio) >> APERFMPERF_SHIFT;
return retval;
}
EXPORT_SYMBOL_GPL(cpufreq_get_measured_perf);
MODULE_LICENSE("GPL");
/*
* (c) 2010 Advanced Micro Devices, Inc.
* Your use of this code is subject to the terms and conditions of the
* GNU general public license version 2. See "COPYING" or
* http://www.gnu.org/licenses/gpl.html
*/
unsigned int cpufreq_get_measured_perf(struct cpufreq_policy *policy,
unsigned int cpu);
...@@ -279,7 +279,6 @@ static struct cpufreq_driver p4clockmod_driver = { ...@@ -279,7 +279,6 @@ static struct cpufreq_driver p4clockmod_driver = {
.exit = cpufreq_p4_cpu_exit, .exit = cpufreq_p4_cpu_exit,
.get = cpufreq_p4_get, .get = cpufreq_p4_get,
.name = "p4-clockmod", .name = "p4-clockmod",
.owner = THIS_MODULE,
.attr = p4clockmod_attr, .attr = p4clockmod_attr,
}; };
......
...@@ -297,7 +297,6 @@ static int pas_cpufreq_target(struct cpufreq_policy *policy, ...@@ -297,7 +297,6 @@ static int pas_cpufreq_target(struct cpufreq_policy *policy,
static struct cpufreq_driver pas_cpufreq_driver = { static struct cpufreq_driver pas_cpufreq_driver = {
.name = "pas-cpufreq", .name = "pas-cpufreq",
.owner = THIS_MODULE,
.flags = CPUFREQ_CONST_LOOPS, .flags = CPUFREQ_CONST_LOOPS,
.init = pas_cpufreq_cpu_init, .init = pas_cpufreq_cpu_init,
.exit = pas_cpufreq_cpu_exit, .exit = pas_cpufreq_cpu_exit,
......
...@@ -587,7 +587,6 @@ static struct cpufreq_driver pcc_cpufreq_driver = { ...@@ -587,7 +587,6 @@ static struct cpufreq_driver pcc_cpufreq_driver = {
.init = pcc_cpufreq_cpu_init, .init = pcc_cpufreq_cpu_init,
.exit = pcc_cpufreq_cpu_exit, .exit = pcc_cpufreq_cpu_exit,
.name = "pcc-cpufreq", .name = "pcc-cpufreq",
.owner = THIS_MODULE,
}; };
static int __init pcc_cpufreq_init(void) static int __init pcc_cpufreq_init(void)
......
...@@ -477,7 +477,6 @@ static struct cpufreq_driver pmac_cpufreq_driver = { ...@@ -477,7 +477,6 @@ static struct cpufreq_driver pmac_cpufreq_driver = {
.flags = CPUFREQ_PM_NO_WARN, .flags = CPUFREQ_PM_NO_WARN,
.attr = pmac_cpu_freqs_attr, .attr = pmac_cpu_freqs_attr,
.name = "powermac", .name = "powermac",
.owner = THIS_MODULE,
}; };
......
...@@ -371,7 +371,6 @@ static int g5_cpufreq_cpu_init(struct cpufreq_policy *policy) ...@@ -371,7 +371,6 @@ static int g5_cpufreq_cpu_init(struct cpufreq_policy *policy)
static struct cpufreq_driver g5_cpufreq_driver = { static struct cpufreq_driver g5_cpufreq_driver = {
.name = "powermac", .name = "powermac",
.owner = THIS_MODULE,
.flags = CPUFREQ_CONST_LOOPS, .flags = CPUFREQ_CONST_LOOPS,
.init = g5_cpufreq_cpu_init, .init = g5_cpufreq_cpu_init,
.verify = g5_cpufreq_verify, .verify = g5_cpufreq_verify,
...@@ -447,9 +446,8 @@ static int __init g5_neo2_cpufreq_init(struct device_node *cpus) ...@@ -447,9 +446,8 @@ static int __init g5_neo2_cpufreq_init(struct device_node *cpus)
if (!shdr) if (!shdr)
goto bail_noprops; goto bail_noprops;
g5_fvt_table = (struct smu_sdbp_fvt *)&shdr[1]; g5_fvt_table = (struct smu_sdbp_fvt *)&shdr[1];
ssize = (shdr->len * sizeof(u32)) - ssize = (shdr->len * sizeof(u32)) - sizeof(*shdr);
sizeof(struct smu_sdbp_header); g5_fvt_count = ssize / sizeof(*g5_fvt_table);
g5_fvt_count = ssize / sizeof(struct smu_sdbp_fvt);
g5_fvt_cur = 0; g5_fvt_cur = 0;
/* Sanity checking */ /* Sanity checking */
......
...@@ -207,7 +207,6 @@ static struct cpufreq_driver powernow_k6_driver = { ...@@ -207,7 +207,6 @@ static struct cpufreq_driver powernow_k6_driver = {
.exit = powernow_k6_cpu_exit, .exit = powernow_k6_cpu_exit,
.get = powernow_k6_get, .get = powernow_k6_get,
.name = "powernow-k6", .name = "powernow-k6",
.owner = THIS_MODULE,
.attr = powernow_k6_attr, .attr = powernow_k6_attr,
}; };
......
...@@ -177,7 +177,7 @@ static int get_ranges(unsigned char *pst) ...@@ -177,7 +177,7 @@ static int get_ranges(unsigned char *pst)
unsigned int speed; unsigned int speed;
u8 fid, vid; u8 fid, vid;
powernow_table = kzalloc((sizeof(struct cpufreq_frequency_table) * powernow_table = kzalloc((sizeof(*powernow_table) *
(number_scales + 1)), GFP_KERNEL); (number_scales + 1)), GFP_KERNEL);
if (!powernow_table) if (!powernow_table)
return -ENOMEM; return -ENOMEM;
...@@ -309,8 +309,7 @@ static int powernow_acpi_init(void) ...@@ -309,8 +309,7 @@ static int powernow_acpi_init(void)
goto err0; goto err0;
} }
acpi_processor_perf = kzalloc(sizeof(struct acpi_processor_performance), acpi_processor_perf = kzalloc(sizeof(*acpi_processor_perf), GFP_KERNEL);
GFP_KERNEL);
if (!acpi_processor_perf) { if (!acpi_processor_perf) {
retval = -ENOMEM; retval = -ENOMEM;
goto err0; goto err0;
...@@ -346,7 +345,7 @@ static int powernow_acpi_init(void) ...@@ -346,7 +345,7 @@ static int powernow_acpi_init(void)
goto err2; goto err2;
} }
powernow_table = kzalloc((sizeof(struct cpufreq_frequency_table) * powernow_table = kzalloc((sizeof(*powernow_table) *
(number_scales + 1)), GFP_KERNEL); (number_scales + 1)), GFP_KERNEL);
if (!powernow_table) { if (!powernow_table) {
retval = -ENOMEM; retval = -ENOMEM;
...@@ -497,7 +496,7 @@ static int powernow_decode_bios(int maxfid, int startvid) ...@@ -497,7 +496,7 @@ static int powernow_decode_bios(int maxfid, int startvid)
"relevant to this CPU).\n", "relevant to this CPU).\n",
psb->numpst); psb->numpst);
p += sizeof(struct psb_s); p += sizeof(*psb);
pst = (struct pst_s *) p; pst = (struct pst_s *) p;
...@@ -510,12 +509,12 @@ static int powernow_decode_bios(int maxfid, int startvid) ...@@ -510,12 +509,12 @@ static int powernow_decode_bios(int maxfid, int startvid)
(maxfid == pst->maxfid) && (maxfid == pst->maxfid) &&
(startvid == pst->startvid)) { (startvid == pst->startvid)) {
print_pst_entry(pst, j); print_pst_entry(pst, j);
p = (char *)pst + sizeof(struct pst_s); p = (char *)pst + sizeof(*pst);
ret = get_ranges(p); ret = get_ranges(p);
return ret; return ret;
} else { } else {
unsigned int k; unsigned int k;
p = (char *)pst + sizeof(struct pst_s); p = (char *)pst + sizeof(*pst);
for (k = 0; k < number_scales; k++) for (k = 0; k < number_scales; k++)
p += 2; p += 2;
} }
...@@ -717,7 +716,6 @@ static struct cpufreq_driver powernow_driver = { ...@@ -717,7 +716,6 @@ static struct cpufreq_driver powernow_driver = {
.init = powernow_cpu_init, .init = powernow_cpu_init,
.exit = powernow_cpu_exit, .exit = powernow_cpu_exit,
.name = "powernow-k7", .name = "powernow-k7",
.owner = THIS_MODULE,
.attr = powernow_table_attr, .attr = powernow_table_attr,
}; };
......
...@@ -623,7 +623,7 @@ static int fill_powernow_table(struct powernow_k8_data *data, ...@@ -623,7 +623,7 @@ static int fill_powernow_table(struct powernow_k8_data *data,
if (check_pst_table(data, pst, maxvid)) if (check_pst_table(data, pst, maxvid))
return -EINVAL; return -EINVAL;
powernow_table = kmalloc((sizeof(struct cpufreq_frequency_table) powernow_table = kmalloc((sizeof(*powernow_table)
* (data->numps + 1)), GFP_KERNEL); * (data->numps + 1)), GFP_KERNEL);
if (!powernow_table) { if (!powernow_table) {
printk(KERN_ERR PFX "powernow_table memory alloc failure\n"); printk(KERN_ERR PFX "powernow_table memory alloc failure\n");
...@@ -793,7 +793,7 @@ static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data) ...@@ -793,7 +793,7 @@ static int powernow_k8_cpu_init_acpi(struct powernow_k8_data *data)
} }
/* fill in data->powernow_table */ /* fill in data->powernow_table */
powernow_table = kmalloc((sizeof(struct cpufreq_frequency_table) powernow_table = kmalloc((sizeof(*powernow_table)
* (data->acpi_data.state_count + 1)), GFP_KERNEL); * (data->acpi_data.state_count + 1)), GFP_KERNEL);
if (!powernow_table) { if (!powernow_table) {
pr_debug("powernow_table memory alloc failure\n"); pr_debug("powernow_table memory alloc failure\n");
...@@ -1106,7 +1106,7 @@ static int powernowk8_cpu_init(struct cpufreq_policy *pol) ...@@ -1106,7 +1106,7 @@ static int powernowk8_cpu_init(struct cpufreq_policy *pol)
if (rc) if (rc)
return -ENODEV; return -ENODEV;
data = kzalloc(sizeof(struct powernow_k8_data), GFP_KERNEL); data = kzalloc(sizeof(*data), GFP_KERNEL);
if (!data) { if (!data) {
printk(KERN_ERR PFX "unable to alloc powernow_k8_data"); printk(KERN_ERR PFX "unable to alloc powernow_k8_data");
return -ENOMEM; return -ENOMEM;
...@@ -1240,7 +1240,6 @@ static struct cpufreq_driver cpufreq_amd64_driver = { ...@@ -1240,7 +1240,6 @@ static struct cpufreq_driver cpufreq_amd64_driver = {
.exit = powernowk8_cpu_exit, .exit = powernowk8_cpu_exit,
.get = powernowk8_get, .get = powernowk8_get,
.name = "powernow-k8", .name = "powernow-k8",
.owner = THIS_MODULE,
.attr = powernow_k8_attr, .attr = powernow_k8_attr,
}; };
......
...@@ -300,7 +300,6 @@ static struct freq_attr *corenet_cpufreq_attr[] = { ...@@ -300,7 +300,6 @@ static struct freq_attr *corenet_cpufreq_attr[] = {
static struct cpufreq_driver ppc_corenet_cpufreq_driver = { static struct cpufreq_driver ppc_corenet_cpufreq_driver = {
.name = "ppc_cpufreq", .name = "ppc_cpufreq",
.owner = THIS_MODULE,
.flags = CPUFREQ_CONST_LOOPS, .flags = CPUFREQ_CONST_LOOPS,
.init = corenet_cpufreq_cpu_init, .init = corenet_cpufreq_cpu_init,
.exit = __exit_p(corenet_cpufreq_cpu_exit), .exit = __exit_p(corenet_cpufreq_cpu_exit),
......
...@@ -181,7 +181,6 @@ static struct cpufreq_driver cbe_cpufreq_driver = { ...@@ -181,7 +181,6 @@ static struct cpufreq_driver cbe_cpufreq_driver = {
.init = cbe_cpufreq_cpu_init, .init = cbe_cpufreq_cpu_init,
.exit = cbe_cpufreq_cpu_exit, .exit = cbe_cpufreq_cpu_exit,
.name = "cbe-cpufreq", .name = "cbe-cpufreq",
.owner = THIS_MODULE,
.flags = CPUFREQ_CONST_LOOPS, .flags = CPUFREQ_CONST_LOOPS,
}; };
......
...@@ -191,7 +191,7 @@ static int pxa_cpufreq_change_voltage(pxa_freqs_t *pxa_freq) ...@@ -191,7 +191,7 @@ static int pxa_cpufreq_change_voltage(pxa_freqs_t *pxa_freq)
return ret; return ret;
} }
static __init void pxa_cpufreq_init_voltages(void) static void __init pxa_cpufreq_init_voltages(void)
{ {
vcc_core = regulator_get(NULL, "vcc_core"); vcc_core = regulator_get(NULL, "vcc_core");
if (IS_ERR(vcc_core)) { if (IS_ERR(vcc_core)) {
...@@ -207,7 +207,7 @@ static int pxa_cpufreq_change_voltage(pxa_freqs_t *pxa_freq) ...@@ -207,7 +207,7 @@ static int pxa_cpufreq_change_voltage(pxa_freqs_t *pxa_freq)
return 0; return 0;
} }
static __init void pxa_cpufreq_init_voltages(void) { } static void __init pxa_cpufreq_init_voltages(void) { }
#endif #endif
static void find_freq_tables(struct cpufreq_frequency_table **freq_table, static void find_freq_tables(struct cpufreq_frequency_table **freq_table,
......
...@@ -213,10 +213,12 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy) ...@@ -213,10 +213,12 @@ static int pxa3xx_cpufreq_init(struct cpufreq_policy *policy)
policy->cur = policy->min = policy->max; policy->cur = policy->min = policy->max;
if (cpu_is_pxa300() || cpu_is_pxa310()) if (cpu_is_pxa300() || cpu_is_pxa310())
ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa300_freqs)); ret = setup_freqs_table(policy, pxa300_freqs,
ARRAY_SIZE(pxa300_freqs));
if (cpu_is_pxa320()) if (cpu_is_pxa320())
ret = setup_freqs_table(policy, ARRAY_AND_SIZE(pxa320_freqs)); ret = setup_freqs_table(policy, pxa320_freqs,
ARRAY_SIZE(pxa320_freqs));
if (ret) { if (ret) {
pr_err("failed to setup frequency table\n"); pr_err("failed to setup frequency table\n");
......
...@@ -524,7 +524,6 @@ static struct freq_attr *s3c2416_cpufreq_attr[] = { ...@@ -524,7 +524,6 @@ static struct freq_attr *s3c2416_cpufreq_attr[] = {
}; };
static struct cpufreq_driver s3c2416_cpufreq_driver = { static struct cpufreq_driver s3c2416_cpufreq_driver = {
.owner = THIS_MODULE,
.flags = 0, .flags = 0,
.verify = s3c2416_cpufreq_verify_speed, .verify = s3c2416_cpufreq_verify_speed,
.target = s3c2416_cpufreq_set_target, .target = s3c2416_cpufreq_set_target,
......
...@@ -392,7 +392,7 @@ static int s3c_cpufreq_init(struct cpufreq_policy *policy) ...@@ -392,7 +392,7 @@ static int s3c_cpufreq_init(struct cpufreq_policy *policy)
return 0; return 0;
} }
static __init int s3c_cpufreq_initclks(void) static int __init s3c_cpufreq_initclks(void)
{ {
_clk_mpll = s3c_cpufreq_clk_get(NULL, "mpll"); _clk_mpll = s3c_cpufreq_clk_get(NULL, "mpll");
_clk_xtal = s3c_cpufreq_clk_get(NULL, "xtal"); _clk_xtal = s3c_cpufreq_clk_get(NULL, "xtal");
...@@ -522,7 +522,7 @@ int __init s3c_cpufreq_setboard(struct s3c_cpufreq_board *board) ...@@ -522,7 +522,7 @@ int __init s3c_cpufreq_setboard(struct s3c_cpufreq_board *board)
/* Copy the board information so that each board can make this /* Copy the board information so that each board can make this
* initdata. */ * initdata. */
ours = kzalloc(sizeof(struct s3c_cpufreq_board), GFP_KERNEL); ours = kzalloc(sizeof(*ours), GFP_KERNEL);
if (ours == NULL) { if (ours == NULL) {
printk(KERN_ERR "%s: no memory\n", __func__); printk(KERN_ERR "%s: no memory\n", __func__);
return -ENOMEM; return -ENOMEM;
...@@ -615,7 +615,7 @@ static int s3c_cpufreq_build_freq(void) ...@@ -615,7 +615,7 @@ static int s3c_cpufreq_build_freq(void)
size = cpu_cur.info->calc_freqtable(&cpu_cur, NULL, 0); size = cpu_cur.info->calc_freqtable(&cpu_cur, NULL, 0);
size++; size++;
ftab = kmalloc(sizeof(struct cpufreq_frequency_table) * size, GFP_KERNEL); ftab = kmalloc(sizeof(*ftab) * size, GFP_KERNEL);
if (!ftab) { if (!ftab) {
printk(KERN_ERR "%s: no memory for tables\n", __func__); printk(KERN_ERR "%s: no memory for tables\n", __func__);
return -ENOMEM; return -ENOMEM;
...@@ -691,7 +691,7 @@ int __init s3c_plltab_register(struct cpufreq_frequency_table *plls, ...@@ -691,7 +691,7 @@ int __init s3c_plltab_register(struct cpufreq_frequency_table *plls,
struct cpufreq_frequency_table *vals; struct cpufreq_frequency_table *vals;
unsigned int size; unsigned int size;
size = sizeof(struct cpufreq_frequency_table) * (plls_no + 1); size = sizeof(*vals) * (plls_no + 1);
vals = kmalloc(size, GFP_KERNEL); vals = kmalloc(size, GFP_KERNEL);
if (vals) { if (vals) {
......
...@@ -263,7 +263,6 @@ static int s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy) ...@@ -263,7 +263,6 @@ static int s3c64xx_cpufreq_driver_init(struct cpufreq_policy *policy)
} }
static struct cpufreq_driver s3c64xx_cpufreq_driver = { static struct cpufreq_driver s3c64xx_cpufreq_driver = {
.owner = THIS_MODULE,
.flags = 0, .flags = 0,
.verify = s3c64xx_cpufreq_verify_speed, .verify = s3c64xx_cpufreq_verify_speed,
.target = s3c64xx_cpufreq_set_target, .target = s3c64xx_cpufreq_set_target,
......
...@@ -147,7 +147,6 @@ static struct cpufreq_driver sc520_freq_driver = { ...@@ -147,7 +147,6 @@ static struct cpufreq_driver sc520_freq_driver = {
.init = sc520_freq_cpu_init, .init = sc520_freq_cpu_init,
.exit = sc520_freq_cpu_exit, .exit = sc520_freq_cpu_exit,
.name = "sc520_freq", .name = "sc520_freq",
.owner = THIS_MODULE,
.attr = sc520_freq_attr, .attr = sc520_freq_attr,
}; };
......
...@@ -160,7 +160,6 @@ static struct freq_attr *sh_freq_attr[] = { ...@@ -160,7 +160,6 @@ static struct freq_attr *sh_freq_attr[] = {
}; };
static struct cpufreq_driver sh_cpufreq_driver = { static struct cpufreq_driver sh_cpufreq_driver = {
.owner = THIS_MODULE,
.name = "sh", .name = "sh",
.get = sh_cpufreq_get, .get = sh_cpufreq_get,
.target = sh_cpufreq_target, .target = sh_cpufreq_target,
......
...@@ -351,12 +351,11 @@ static int __init us2e_freq_init(void) ...@@ -351,12 +351,11 @@ static int __init us2e_freq_init(void)
struct cpufreq_driver *driver; struct cpufreq_driver *driver;
ret = -ENOMEM; ret = -ENOMEM;
driver = kzalloc(sizeof(struct cpufreq_driver), GFP_KERNEL); driver = kzalloc(sizeof(*driver), GFP_KERNEL);
if (!driver) if (!driver)
goto err_out; goto err_out;
us2e_freq_table = kzalloc( us2e_freq_table = kzalloc((NR_CPUS * sizeof(*us2e_freq_table)),
(NR_CPUS * sizeof(struct us2e_freq_percpu_info)),
GFP_KERNEL); GFP_KERNEL);
if (!us2e_freq_table) if (!us2e_freq_table)
goto err_out; goto err_out;
...@@ -366,7 +365,6 @@ static int __init us2e_freq_init(void) ...@@ -366,7 +365,6 @@ static int __init us2e_freq_init(void)
driver->target = us2e_freq_target; driver->target = us2e_freq_target;
driver->get = us2e_freq_get; driver->get = us2e_freq_get;
driver->exit = us2e_freq_cpu_exit; driver->exit = us2e_freq_cpu_exit;
driver->owner = THIS_MODULE,
strcpy(driver->name, "UltraSPARC-IIe"); strcpy(driver->name, "UltraSPARC-IIe");
cpufreq_us2e_driver = driver; cpufreq_us2e_driver = driver;
......
...@@ -212,12 +212,11 @@ static int __init us3_freq_init(void) ...@@ -212,12 +212,11 @@ static int __init us3_freq_init(void)
struct cpufreq_driver *driver; struct cpufreq_driver *driver;
ret = -ENOMEM; ret = -ENOMEM;
driver = kzalloc(sizeof(struct cpufreq_driver), GFP_KERNEL); driver = kzalloc(sizeof(*driver), GFP_KERNEL);
if (!driver) if (!driver)
goto err_out; goto err_out;
us3_freq_table = kzalloc( us3_freq_table = kzalloc((NR_CPUS * sizeof(*us3_freq_table)),
(NR_CPUS * sizeof(struct us3_freq_percpu_info)),
GFP_KERNEL); GFP_KERNEL);
if (!us3_freq_table) if (!us3_freq_table)
goto err_out; goto err_out;
...@@ -227,7 +226,6 @@ static int __init us3_freq_init(void) ...@@ -227,7 +226,6 @@ static int __init us3_freq_init(void)
driver->target = us3_freq_target; driver->target = us3_freq_target;
driver->get = us3_freq_get; driver->get = us3_freq_get;
driver->exit = us3_freq_cpu_exit; driver->exit = us3_freq_cpu_exit;
driver->owner = THIS_MODULE,
strcpy(driver->name, "UltraSPARC-III"); strcpy(driver->name, "UltraSPARC-III");
cpufreq_us3_driver = driver; cpufreq_us3_driver = driver;
......
...@@ -575,7 +575,6 @@ static struct cpufreq_driver centrino_driver = { ...@@ -575,7 +575,6 @@ static struct cpufreq_driver centrino_driver = {
.target = centrino_target, .target = centrino_target,
.get = get_cur_freq, .get = get_cur_freq,
.attr = centrino_attr, .attr = centrino_attr,
.owner = THIS_MODULE,
}; };
/* /*
......
...@@ -378,7 +378,6 @@ static struct cpufreq_driver speedstep_driver = { ...@@ -378,7 +378,6 @@ static struct cpufreq_driver speedstep_driver = {
.init = speedstep_cpu_init, .init = speedstep_cpu_init,
.exit = speedstep_cpu_exit, .exit = speedstep_cpu_exit,
.get = speedstep_get, .get = speedstep_get,
.owner = THIS_MODULE,
.attr = speedstep_attr, .attr = speedstep_attr,
}; };
......
...@@ -375,7 +375,6 @@ static struct cpufreq_driver speedstep_driver = { ...@@ -375,7 +375,6 @@ static struct cpufreq_driver speedstep_driver = {
.exit = speedstep_cpu_exit, .exit = speedstep_cpu_exit,
.get = speedstep_get, .get = speedstep_get,
.resume = speedstep_resume, .resume = speedstep_resume,
.owner = THIS_MODULE,
.attr = speedstep_attr, .attr = speedstep_attr,
}; };
......
...@@ -24,7 +24,7 @@ static struct cpufreq_driver ucv2_driver; ...@@ -24,7 +24,7 @@ static struct cpufreq_driver ucv2_driver;
/* make sure that only the "userspace" governor is run /* make sure that only the "userspace" governor is run
* -- anything else wouldn't make sense on this platform, anyway. * -- anything else wouldn't make sense on this platform, anyway.
*/ */
int ucv2_verify_speed(struct cpufreq_policy *policy) static int ucv2_verify_speed(struct cpufreq_policy *policy)
{ {
if (policy->cpu) if (policy->cpu)
return -EINVAL; return -EINVAL;
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment