diff options
| -rw-r--r-- | drivers/cpufreq/cpufreq_performance.c | 57 |
1 files changed, 13 insertions, 44 deletions
diff --git a/drivers/cpufreq/cpufreq_performance.c b/drivers/cpufreq/cpufreq_performance.c index fa39f5aec7f..dd79d1fb43c 100644 --- a/drivers/cpufreq/cpufreq_performance.c +++ b/drivers/cpufreq/cpufreq_performance.c | |||
| @@ -15,55 +15,24 @@ | |||
| 15 | #include <linux/cpufreq.h> | 15 | #include <linux/cpufreq.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | 17 | ||
| 18 | #include <linux/cpu.h> | ||
| 19 | #include <linux/cpumask.h> | ||
| 20 | 18 | ||
| 21 | static void cpu_up_work() | 19 | static int cpufreq_governor_performance(struct cpufreq_policy *policy, |
| 20 | unsigned int event) | ||
| 22 | { | 21 | { |
| 23 | int cpu; | 22 | switch (event) { |
| 24 | 23 | case CPUFREQ_GOV_START: | |
| 25 | for_each_cpu_not(cpu, cpu_online_mask) { | 24 | case CPUFREQ_GOV_LIMITS: |
| 26 | if (cpu == 0) | 25 | pr_debug("setting to %u kHz because of event %u\n", |
| 27 | continue; | 26 | policy->max, event); |
| 28 | cpu_up(cpu); | 27 | __cpufreq_driver_target(policy, policy->max, |
| 29 | } | 28 | CPUFREQ_RELATION_H); |
| 30 | } | 29 | break; |
| 31 | 30 | default: | |
| 32 | static void cpu_down_work() | 31 | break; |
| 33 | { | ||
| 34 | int cpu; | ||
| 35 | |||
| 36 | for_each_online_cpu(cpu) { | ||
| 37 | if (cpu == 0) | ||
| 38 | continue; | ||
| 39 | cpu_down(cpu); | ||
| 40 | } | 32 | } |
| 33 | return 0; | ||
| 41 | } | 34 | } |
| 42 | 35 | ||
| 43 | static DECLARE_WORK(performance_up_work, cpu_up_work); | ||
| 44 | static DECLARE_WORK(performance_down_work, cpu_down_work); | ||
| 45 | |||
| 46 | static int cpufreq_governor_performance(struct cpufreq_policy *policy, | ||
| 47 | unsigned int event) | ||
| 48 | { | ||
| 49 | switch (event) { | ||
| 50 | case CPUFREQ_GOV_START: | ||
| 51 | schedule_work_on(0, &performance_up_work); | ||
| 52 | case CPUFREQ_GOV_LIMITS: | ||
| 53 | pr_debug("setting to %u kHz because of event %u\n", | ||
| 54 | policy->max, event); | ||
| 55 | __cpufreq_driver_target(policy, policy->max, | ||
| 56 | CPUFREQ_RELATION_H); | ||
| 57 | break; | ||
| 58 | case CPUFREQ_GOV_STOP: | ||
| 59 | schedule_work_on(0, &performance_down_work); | ||
| 60 | break; | ||
| 61 | default: | ||
| 62 | break; | ||
| 63 | } | ||
| 64 | |||
| 65 | }; | ||
| 66 | |||
| 67 | #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE | 36 | #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE_MODULE |
| 68 | static | 37 | static |
| 69 | #endif | 38 | #endif |
