diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-04-20 18:36:05 -0400 | 
| commit | 857c68f733eea07f11a061caea43a38fed61adb7 (patch) | |
| tree | 4567a9e91f717b22143ac1ccb0fb5323ac15afd3 /drivers/cpufreq | |
| parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) | |
| parent | 402a26f0c040077ed6f941eefac5a6971f0d5f40 (diff) | |
Merge branch 'master'
Diffstat (limited to 'drivers/cpufreq')
| -rw-r--r-- | drivers/cpufreq/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/cpufreq/cpufreq.c | 25 | ||||
| -rw-r--r-- | drivers/cpufreq/cpufreq_conservative.c | 6 | 
3 files changed, 21 insertions, 12 deletions
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig index 60c9be99c6d9..2cc71b66231e 100644 --- a/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig  | |||
| @@ -99,7 +99,7 @@ config CPU_FREQ_GOV_USERSPACE | |||
| 99 | Enable this cpufreq governor when you either want to set the | 99 | Enable this cpufreq governor when you either want to set the | 
| 100 | CPU frequency manually or when an userspace program shall | 100 | CPU frequency manually or when an userspace program shall | 
| 101 | be able to set the CPU dynamically, like on LART | 101 | be able to set the CPU dynamically, like on LART | 
| 102 | <http://www.lart.tudelft.nl/> | 102 | <http://www.lartmaker.nl/>. | 
| 103 | 103 | ||
| 104 | For details, take a look at <file:Documentation/cpu-freq/>. | 104 | For details, take a look at <file:Documentation/cpu-freq/>. | 
| 105 | 105 | ||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 9b6ae7dc8b8a..9759d05b1972 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c  | |||
| @@ -319,7 +319,6 @@ out: | |||
| 319 | } | 319 | } | 
| 320 | return -EINVAL; | 320 | return -EINVAL; | 
| 321 | } | 321 | } | 
| 322 | EXPORT_SYMBOL_GPL(cpufreq_parse_governor); | ||
| 323 | 322 | ||
| 324 | 323 | ||
| 325 | /* drivers/base/cpu.c */ | 324 | /* drivers/base/cpu.c */ | 
| @@ -346,6 +345,8 @@ show_one(scaling_min_freq, min); | |||
| 346 | show_one(scaling_max_freq, max); | 345 | show_one(scaling_max_freq, max); | 
| 347 | show_one(scaling_cur_freq, cur); | 346 | show_one(scaling_cur_freq, cur); | 
| 348 | 347 | ||
| 348 | static int __cpufreq_set_policy(struct cpufreq_policy *data, struct cpufreq_policy *policy); | ||
| 349 | |||
| 349 | /** | 350 | /** | 
| 350 | * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access | 351 | * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access | 
| 351 | */ | 352 | */ | 
| @@ -364,7 +365,10 @@ static ssize_t store_##file_name \ | |||
| 364 | if (ret != 1) \ | 365 | if (ret != 1) \ | 
| 365 | return -EINVAL; \ | 366 | return -EINVAL; \ | 
| 366 | \ | 367 | \ | 
| 367 | ret = cpufreq_set_policy(&new_policy); \ | 368 | mutex_lock(&policy->lock); \ | 
| 369 | ret = __cpufreq_set_policy(policy, &new_policy); \ | ||
| 370 | policy->user_policy.object = policy->object; \ | ||
| 371 | mutex_unlock(&policy->lock); \ | ||
| 368 | \ | 372 | \ | 
| 369 | return ret ? ret : count; \ | 373 | return ret ? ret : count; \ | 
| 370 | } | 374 | } | 
| @@ -420,7 +424,15 @@ static ssize_t store_scaling_governor (struct cpufreq_policy * policy, | |||
| 420 | if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)) | 424 | if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)) | 
| 421 | return -EINVAL; | 425 | return -EINVAL; | 
| 422 | 426 | ||
| 423 | ret = cpufreq_set_policy(&new_policy); | 427 | /* Do not use cpufreq_set_policy here or the user_policy.max | 
| 428 | will be wrongly overridden */ | ||
| 429 | mutex_lock(&policy->lock); | ||
| 430 | ret = __cpufreq_set_policy(policy, &new_policy); | ||
| 431 | |||
| 432 | policy->user_policy.policy = policy->policy; | ||
| 433 | policy->user_policy.governor = policy->governor; | ||
| 434 | mutex_unlock(&policy->lock); | ||
| 435 | |||
| 424 | return ret ? ret : count; | 436 | return ret ? ret : count; | 
| 425 | } | 437 | } | 
| 426 | 438 | ||
| @@ -685,7 +697,7 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
| 685 | if (!cpu_online(j)) | 697 | if (!cpu_online(j)) | 
| 686 | continue; | 698 | continue; | 
| 687 | 699 | ||
| 688 | dprintk("CPU already managed, adding link\n"); | 700 | dprintk("CPU %u already managed, adding link\n", j); | 
| 689 | cpufreq_cpu_get(cpu); | 701 | cpufreq_cpu_get(cpu); | 
| 690 | cpu_sys_dev = get_cpu_sysdev(j); | 702 | cpu_sys_dev = get_cpu_sysdev(j); | 
| 691 | sysfs_create_link(&cpu_sys_dev->kobj, &policy->kobj, | 703 | sysfs_create_link(&cpu_sys_dev->kobj, &policy->kobj, | 
| @@ -695,9 +707,8 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
| 695 | policy->governor = NULL; /* to assure that the starting sequence is | 707 | policy->governor = NULL; /* to assure that the starting sequence is | 
| 696 | * run in cpufreq_set_policy */ | 708 | * run in cpufreq_set_policy */ | 
| 697 | mutex_unlock(&policy->lock); | 709 | mutex_unlock(&policy->lock); | 
| 698 | 710 | ||
| 699 | /* set default policy */ | 711 | /* set default policy */ | 
| 700 | |||
| 701 | ret = cpufreq_set_policy(&new_policy); | 712 | ret = cpufreq_set_policy(&new_policy); | 
| 702 | if (ret) { | 713 | if (ret) { | 
| 703 | dprintk("setting policy failed\n"); | 714 | dprintk("setting policy failed\n"); | 
| @@ -707,7 +718,7 @@ static int cpufreq_add_dev (struct sys_device * sys_dev) | |||
| 707 | module_put(cpufreq_driver->owner); | 718 | module_put(cpufreq_driver->owner); | 
| 708 | dprintk("initialization complete\n"); | 719 | dprintk("initialization complete\n"); | 
| 709 | cpufreq_debug_enable_ratelimit(); | 720 | cpufreq_debug_enable_ratelimit(); | 
| 710 | 721 | ||
| 711 | return 0; | 722 | return 0; | 
| 712 | 723 | ||
| 713 | 724 | ||
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index 037f6bf4543c..e07a35487bde 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c  | |||
| @@ -176,8 +176,7 @@ static ssize_t store_up_threshold(struct cpufreq_policy *unused, | |||
| 176 | ret = sscanf (buf, "%u", &input); | 176 | ret = sscanf (buf, "%u", &input); | 
| 177 | 177 | ||
| 178 | mutex_lock(&dbs_mutex); | 178 | mutex_lock(&dbs_mutex); | 
| 179 | if (ret != 1 || input > 100 || input < 0 || | 179 | if (ret != 1 || input > 100 || input <= dbs_tuners_ins.down_threshold) { | 
| 180 | input <= dbs_tuners_ins.down_threshold) { | ||
| 181 | mutex_unlock(&dbs_mutex); | 180 | mutex_unlock(&dbs_mutex); | 
| 182 | return -EINVAL; | 181 | return -EINVAL; | 
| 183 | } | 182 | } | 
| @@ -196,8 +195,7 @@ static ssize_t store_down_threshold(struct cpufreq_policy *unused, | |||
| 196 | ret = sscanf (buf, "%u", &input); | 195 | ret = sscanf (buf, "%u", &input); | 
| 197 | 196 | ||
| 198 | mutex_lock(&dbs_mutex); | 197 | mutex_lock(&dbs_mutex); | 
| 199 | if (ret != 1 || input > 100 || input < 0 || | 198 | if (ret != 1 || input > 100 || input >= dbs_tuners_ins.up_threshold) { | 
| 200 | input >= dbs_tuners_ins.up_threshold) { | ||
| 201 | mutex_unlock(&dbs_mutex); | 199 | mutex_unlock(&dbs_mutex); | 
| 202 | return -EINVAL; | 200 | return -EINVAL; | 
| 203 | } | 201 | } | 
