diff options
-rw-r--r-- | drivers/acpi/processor_perflib.c | 46 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 37 | ||||
-rw-r--r-- | include/linux/cpufreq.h | 1 |
3 files changed, 1 insertions, 83 deletions
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 2f2e7964226d..c4efc0c17f8f 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
@@ -433,49 +433,6 @@ static int acpi_processor_perf_open_fs(struct inode *inode, struct file *file) | |||
433 | PDE(inode)->data); | 433 | PDE(inode)->data); |
434 | } | 434 | } |
435 | 435 | ||
436 | static ssize_t | ||
437 | acpi_processor_write_performance(struct file *file, | ||
438 | const char __user * buffer, | ||
439 | size_t count, loff_t * data) | ||
440 | { | ||
441 | int result = 0; | ||
442 | struct seq_file *m = file->private_data; | ||
443 | struct acpi_processor *pr = m->private; | ||
444 | struct acpi_processor_performance *perf; | ||
445 | char state_string[12] = { '\0' }; | ||
446 | unsigned int new_state = 0; | ||
447 | struct cpufreq_policy policy; | ||
448 | |||
449 | |||
450 | if (!pr || (count > sizeof(state_string) - 1)) | ||
451 | return -EINVAL; | ||
452 | |||
453 | perf = pr->performance; | ||
454 | if (!perf) | ||
455 | return -EINVAL; | ||
456 | |||
457 | if (copy_from_user(state_string, buffer, count)) | ||
458 | return -EFAULT; | ||
459 | |||
460 | state_string[count] = '\0'; | ||
461 | new_state = simple_strtoul(state_string, NULL, 0); | ||
462 | |||
463 | if (new_state >= perf->state_count) | ||
464 | return -EINVAL; | ||
465 | |||
466 | cpufreq_get_policy(&policy, pr->id); | ||
467 | |||
468 | policy.cpu = pr->id; | ||
469 | policy.min = perf->states[new_state].core_frequency * 1000; | ||
470 | policy.max = perf->states[new_state].core_frequency * 1000; | ||
471 | |||
472 | result = cpufreq_set_policy(&policy); | ||
473 | if (result) | ||
474 | return result; | ||
475 | |||
476 | return count; | ||
477 | } | ||
478 | |||
479 | static void acpi_cpufreq_add_file(struct acpi_processor *pr) | 436 | static void acpi_cpufreq_add_file(struct acpi_processor *pr) |
480 | { | 437 | { |
481 | struct proc_dir_entry *entry = NULL; | 438 | struct proc_dir_entry *entry = NULL; |
@@ -487,10 +444,9 @@ static void acpi_cpufreq_add_file(struct acpi_processor *pr) | |||
487 | 444 | ||
488 | /* add file 'performance' [R/W] */ | 445 | /* add file 'performance' [R/W] */ |
489 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_PERFORMANCE, | 446 | entry = create_proc_entry(ACPI_PROCESSOR_FILE_PERFORMANCE, |
490 | S_IFREG | S_IRUGO | S_IWUSR, | 447 | S_IFREG | S_IRUGO, |
491 | acpi_device_dir(device)); | 448 | acpi_device_dir(device)); |
492 | if (entry){ | 449 | if (entry){ |
493 | acpi_processor_perf_fops.write = acpi_processor_write_performance; | ||
494 | entry->proc_fops = &acpi_processor_perf_fops; | 450 | entry->proc_fops = &acpi_processor_perf_fops; |
495 | entry->data = acpi_driver_data(device); | 451 | entry->data = acpi_driver_data(device); |
496 | entry->owner = THIS_MODULE; | 452 | entry->owner = THIS_MODULE; |
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index fcb86dd8903d..893dbaf386fb 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1626,43 +1626,6 @@ error_out: | |||
1626 | } | 1626 | } |
1627 | 1627 | ||
1628 | /** | 1628 | /** |
1629 | * cpufreq_set_policy - set a new CPUFreq policy | ||
1630 | * @policy: policy to be set. | ||
1631 | * | ||
1632 | * Sets a new CPU frequency and voltage scaling policy. | ||
1633 | */ | ||
1634 | int cpufreq_set_policy(struct cpufreq_policy *policy) | ||
1635 | { | ||
1636 | int ret = 0; | ||
1637 | struct cpufreq_policy *data; | ||
1638 | |||
1639 | if (!policy) | ||
1640 | return -EINVAL; | ||
1641 | |||
1642 | data = cpufreq_cpu_get(policy->cpu); | ||
1643 | if (!data) | ||
1644 | return -EINVAL; | ||
1645 | |||
1646 | if (unlikely(lock_policy_rwsem_write(policy->cpu))) | ||
1647 | return -EINVAL; | ||
1648 | |||
1649 | |||
1650 | ret = __cpufreq_set_policy(data, policy); | ||
1651 | data->user_policy.min = data->min; | ||
1652 | data->user_policy.max = data->max; | ||
1653 | data->user_policy.policy = data->policy; | ||
1654 | data->user_policy.governor = data->governor; | ||
1655 | |||
1656 | unlock_policy_rwsem_write(policy->cpu); | ||
1657 | |||
1658 | cpufreq_cpu_put(data); | ||
1659 | |||
1660 | return ret; | ||
1661 | } | ||
1662 | EXPORT_SYMBOL(cpufreq_set_policy); | ||
1663 | |||
1664 | |||
1665 | /** | ||
1666 | * cpufreq_update_policy - re-evaluate an existing cpufreq policy | 1629 | * cpufreq_update_policy - re-evaluate an existing cpufreq policy |
1667 | * @cpu: CPU which shall be re-evaluated | 1630 | * @cpu: CPU which shall be re-evaluated |
1668 | * | 1631 | * |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 0899e2cdcdd1..3ec6e7ff5fbd 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -257,7 +257,6 @@ struct freq_attr { | |||
257 | /********************************************************************* | 257 | /********************************************************************* |
258 | * CPUFREQ 2.6. INTERFACE * | 258 | * CPUFREQ 2.6. INTERFACE * |
259 | *********************************************************************/ | 259 | *********************************************************************/ |
260 | int cpufreq_set_policy(struct cpufreq_policy *policy); | ||
261 | int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); | 260 | int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu); |
262 | int cpufreq_update_policy(unsigned int cpu); | 261 | int cpufreq_update_policy(unsigned int cpu); |
263 | 262 | ||