cpufreq: Fix minor formatting issues
There were a few noticeable formatting issues in core cpufreq code. This cleans them up to make code look better. The changes include: - Whitespace cleanup. - Rearrangements of code. - Multiline comments fixes. - Formatting changes to fit 80 columns. Copyright information in cpufreq.c is also updated to include my name for 2013. [rjw: Changelog] Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
95731ebb11
Коммит
bb176f7d03
|
@ -3,6 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001 Russell King
|
* Copyright (C) 2001 Russell King
|
||||||
* (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
* (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
||||||
|
* (C) 2013 Viresh Kumar <viresh.kumar@linaro.org>
|
||||||
*
|
*
|
||||||
* Oct 2005 - Ashok Raj <ashok.raj@intel.com>
|
* Oct 2005 - Ashok Raj <ashok.raj@intel.com>
|
||||||
* Added handling for CPU hotplug
|
* Added handling for CPU hotplug
|
||||||
|
@ -12,7 +13,6 @@
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
@ -44,12 +44,13 @@
|
||||||
*/
|
*/
|
||||||
static struct cpufreq_driver *cpufreq_driver;
|
static struct cpufreq_driver *cpufreq_driver;
|
||||||
static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
|
static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
|
||||||
|
static DEFINE_RWLOCK(cpufreq_driver_lock);
|
||||||
|
static DEFINE_MUTEX(cpufreq_governor_lock);
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
/* This one keeps track of the previously set governor of a removed CPU */
|
/* This one keeps track of the previously set governor of a removed CPU */
|
||||||
static DEFINE_PER_CPU(char[CPUFREQ_NAME_LEN], cpufreq_cpu_governor);
|
static DEFINE_PER_CPU(char[CPUFREQ_NAME_LEN], cpufreq_cpu_governor);
|
||||||
#endif
|
#endif
|
||||||
static DEFINE_RWLOCK(cpufreq_driver_lock);
|
|
||||||
static DEFINE_MUTEX(cpufreq_governor_lock);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cpu_policy_rwsem is a per CPU reader-writer semaphore designed to cure
|
* cpu_policy_rwsem is a per CPU reader-writer semaphore designed to cure
|
||||||
|
@ -199,7 +200,6 @@ static struct cpufreq_policy *__cpufreq_cpu_get(unsigned int cpu, bool sysfs)
|
||||||
if (!try_module_get(cpufreq_driver->owner))
|
if (!try_module_get(cpufreq_driver->owner))
|
||||||
goto err_out_unlock;
|
goto err_out_unlock;
|
||||||
|
|
||||||
|
|
||||||
/* get the CPU */
|
/* get the CPU */
|
||||||
data = per_cpu(cpufreq_cpu_data, cpu);
|
data = per_cpu(cpufreq_cpu_data, cpu);
|
||||||
|
|
||||||
|
@ -269,7 +269,7 @@ static void cpufreq_cpu_put_sysfs(struct cpufreq_policy *data)
|
||||||
*/
|
*/
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
static unsigned long l_p_j_ref;
|
static unsigned long l_p_j_ref;
|
||||||
static unsigned int l_p_j_ref_freq;
|
static unsigned int l_p_j_ref_freq;
|
||||||
|
|
||||||
static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
|
static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
|
||||||
{
|
{
|
||||||
|
@ -282,7 +282,7 @@ static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
|
||||||
pr_debug("saving %lu as reference value for loops_per_jiffy; "
|
pr_debug("saving %lu as reference value for loops_per_jiffy; "
|
||||||
"freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
|
"freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
|
||||||
}
|
}
|
||||||
if ((val == CPUFREQ_POSTCHANGE && ci->old != ci->new) ||
|
if ((val == CPUFREQ_POSTCHANGE && ci->old != ci->new) ||
|
||||||
(val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) {
|
(val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) {
|
||||||
loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
|
loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
|
||||||
ci->new);
|
ci->new);
|
||||||
|
@ -297,7 +297,6 @@ static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
void __cpufreq_notify_transition(struct cpufreq_policy *policy,
|
void __cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||||
struct cpufreq_freqs *freqs, unsigned int state)
|
struct cpufreq_freqs *freqs, unsigned int state)
|
||||||
{
|
{
|
||||||
|
@ -343,6 +342,7 @@ void __cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_notify_transition - call notifier chain and adjust_jiffies
|
* cpufreq_notify_transition - call notifier chain and adjust_jiffies
|
||||||
* on frequency transition.
|
* on frequency transition.
|
||||||
|
@ -360,7 +360,6 @@ void cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||||
EXPORT_SYMBOL_GPL(cpufreq_notify_transition);
|
EXPORT_SYMBOL_GPL(cpufreq_notify_transition);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* SYSFS INTERFACE *
|
* SYSFS INTERFACE *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
@ -425,7 +424,6 @@ out:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_per_cpu_attr_read() / show_##file_name() -
|
* cpufreq_per_cpu_attr_read() / show_##file_name() -
|
||||||
* print out cpufreq information
|
* print out cpufreq information
|
||||||
|
@ -490,7 +488,6 @@ static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
|
||||||
return sprintf(buf, "%u\n", cur_freq);
|
return sprintf(buf, "%u\n", cur_freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* show_scaling_governor - show the current policy for the specified CPU
|
* show_scaling_governor - show the current policy for the specified CPU
|
||||||
*/
|
*/
|
||||||
|
@ -506,7 +503,6 @@ static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* store_scaling_governor - store policy for the specified CPU
|
* store_scaling_governor - store policy for the specified CPU
|
||||||
*/
|
*/
|
||||||
|
@ -529,8 +525,10 @@ static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
|
||||||
&new_policy.governor))
|
&new_policy.governor))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* Do not use cpufreq_set_policy here or the user_policy.max
|
/*
|
||||||
will be wrongly overridden */
|
* Do not use cpufreq_set_policy here or the user_policy.max
|
||||||
|
* will be wrongly overridden
|
||||||
|
*/
|
||||||
ret = __cpufreq_set_policy(policy, &new_policy);
|
ret = __cpufreq_set_policy(policy, &new_policy);
|
||||||
|
|
||||||
policy->user_policy.policy = policy->policy;
|
policy->user_policy.policy = policy->policy;
|
||||||
|
@ -1094,7 +1092,8 @@ static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
|
||||||
* Caller should already have policy_rwsem in write mode for this CPU.
|
* Caller should already have policy_rwsem in write mode for this CPU.
|
||||||
* This routine frees the rwsem before returning.
|
* This routine frees the rwsem before returning.
|
||||||
*/
|
*/
|
||||||
static int __cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
|
static int __cpufreq_remove_dev(struct device *dev,
|
||||||
|
struct subsys_interface *sif)
|
||||||
{
|
{
|
||||||
unsigned int cpu = dev->id, ret, cpus;
|
unsigned int cpu = dev->id, ret, cpus;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -1201,7 +1200,6 @@ static int __cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
|
static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
|
||||||
{
|
{
|
||||||
unsigned int cpu = dev->id;
|
unsigned int cpu = dev->id;
|
||||||
|
@ -1214,7 +1212,6 @@ static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void handle_update(struct work_struct *work)
|
static void handle_update(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct cpufreq_policy *policy =
|
struct cpufreq_policy *policy =
|
||||||
|
@ -1225,7 +1222,8 @@ static void handle_update(struct work_struct *work)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're in deep trouble.
|
* cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
|
||||||
|
* in deep trouble.
|
||||||
* @cpu: cpu number
|
* @cpu: cpu number
|
||||||
* @old_freq: CPU frequency the kernel thinks the CPU runs at
|
* @old_freq: CPU frequency the kernel thinks the CPU runs at
|
||||||
* @new_freq: CPU frequency the CPU actually runs at
|
* @new_freq: CPU frequency the CPU actually runs at
|
||||||
|
@ -1240,7 +1238,6 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
|
||||||
struct cpufreq_freqs freqs;
|
struct cpufreq_freqs freqs;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
|
||||||
pr_debug("Warning: CPU frequency out of sync: cpufreq and timing "
|
pr_debug("Warning: CPU frequency out of sync: cpufreq and timing "
|
||||||
"core thinks of %u, is %u kHz.\n", old_freq, new_freq);
|
"core thinks of %u, is %u kHz.\n", old_freq, new_freq);
|
||||||
|
|
||||||
|
@ -1255,7 +1252,6 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
|
||||||
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
|
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
|
* cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
|
||||||
* @cpu: CPU number
|
* @cpu: CPU number
|
||||||
|
@ -1301,7 +1297,6 @@ unsigned int cpufreq_quick_get_max(unsigned int cpu)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(cpufreq_quick_get_max);
|
EXPORT_SYMBOL(cpufreq_quick_get_max);
|
||||||
|
|
||||||
|
|
||||||
static unsigned int __cpufreq_get(unsigned int cpu)
|
static unsigned int __cpufreq_get(unsigned int cpu)
|
||||||
{
|
{
|
||||||
struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
|
struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
|
||||||
|
@ -1360,7 +1355,6 @@ static struct subsys_interface cpufreq_interface = {
|
||||||
.remove_dev = cpufreq_remove_dev,
|
.remove_dev = cpufreq_remove_dev,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_bp_suspend - Prepare the boot CPU for system suspend.
|
* cpufreq_bp_suspend - Prepare the boot CPU for system suspend.
|
||||||
*
|
*
|
||||||
|
@ -1497,11 +1491,10 @@ int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(cpufreq_register_notifier);
|
EXPORT_SYMBOL(cpufreq_register_notifier);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_unregister_notifier - unregister a driver with cpufreq
|
* cpufreq_unregister_notifier - unregister a driver with cpufreq
|
||||||
* @nb: notifier block to be unregistered
|
* @nb: notifier block to be unregistered
|
||||||
* @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
|
* @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
|
||||||
*
|
*
|
||||||
* Remove a driver from the CPU frequency notifier list.
|
* Remove a driver from the CPU frequency notifier list.
|
||||||
*
|
*
|
||||||
|
@ -1537,7 +1530,6 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
|
||||||
* GOVERNORS *
|
* GOVERNORS *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
unsigned int target_freq,
|
unsigned int target_freq,
|
||||||
unsigned int relation)
|
unsigned int relation)
|
||||||
|
@ -1678,7 +1670,6 @@ static int __cpufreq_governor(struct cpufreq_policy *policy,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cpufreq_register_governor(struct cpufreq_governor *governor)
|
int cpufreq_register_governor(struct cpufreq_governor *governor)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
@ -1703,7 +1694,6 @@ int cpufreq_register_governor(struct cpufreq_governor *governor)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cpufreq_register_governor);
|
EXPORT_SYMBOL_GPL(cpufreq_register_governor);
|
||||||
|
|
||||||
|
|
||||||
void cpufreq_unregister_governor(struct cpufreq_governor *governor)
|
void cpufreq_unregister_governor(struct cpufreq_governor *governor)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
|
@ -1733,7 +1723,6 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor)
|
||||||
EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
|
EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* POLICY INTERFACE *
|
* POLICY INTERFACE *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
@ -1762,7 +1751,6 @@ int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(cpufreq_get_policy);
|
EXPORT_SYMBOL(cpufreq_get_policy);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* data : current policy.
|
* data : current policy.
|
||||||
* policy : policy to be set.
|
* policy : policy to be set.
|
||||||
|
@ -1796,8 +1784,10 @@ static int __cpufreq_set_policy(struct cpufreq_policy *data,
|
||||||
blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
|
blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
|
||||||
CPUFREQ_INCOMPATIBLE, policy);
|
CPUFREQ_INCOMPATIBLE, policy);
|
||||||
|
|
||||||
/* verify the cpu speed can be set within this limit,
|
/*
|
||||||
which might be different to the first one */
|
* verify the cpu speed can be set within this limit, which might be
|
||||||
|
* different to the first one
|
||||||
|
*/
|
||||||
ret = cpufreq_driver->verify(policy);
|
ret = cpufreq_driver->verify(policy);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error_out;
|
goto error_out;
|
||||||
|
@ -1899,8 +1889,10 @@ int cpufreq_update_policy(unsigned int cpu)
|
||||||
policy.policy = data->user_policy.policy;
|
policy.policy = data->user_policy.policy;
|
||||||
policy.governor = data->user_policy.governor;
|
policy.governor = data->user_policy.governor;
|
||||||
|
|
||||||
/* BIOS might change freq behind our back
|
/*
|
||||||
-> ask driver for current freq and notify governors about a change */
|
* BIOS might change freq behind our back
|
||||||
|
* -> ask driver for current freq and notify governors about a change
|
||||||
|
*/
|
||||||
if (cpufreq_driver->get) {
|
if (cpufreq_driver->get) {
|
||||||
policy.cur = cpufreq_driver->get(cpu);
|
policy.cur = cpufreq_driver->get(cpu);
|
||||||
if (!data->cur) {
|
if (!data->cur) {
|
||||||
|
@ -1949,7 +1941,7 @@ static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb,
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct notifier_block __refdata cpufreq_cpu_notifier = {
|
static struct notifier_block __refdata cpufreq_cpu_notifier = {
|
||||||
.notifier_call = cpufreq_cpu_callback,
|
.notifier_call = cpufreq_cpu_callback,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
@ -1961,7 +1953,7 @@ static struct notifier_block __refdata cpufreq_cpu_notifier = {
|
||||||
* @driver_data: A struct cpufreq_driver containing the values#
|
* @driver_data: A struct cpufreq_driver containing the values#
|
||||||
* submitted by the CPU Frequency driver.
|
* submitted by the CPU Frequency driver.
|
||||||
*
|
*
|
||||||
* Registers a CPU Frequency driver to this core code. This code
|
* Registers a CPU Frequency driver to this core code. This code
|
||||||
* returns zero on success, -EBUSY when another driver got here first
|
* returns zero on success, -EBUSY when another driver got here first
|
||||||
* (and isn't unregistered in the meantime).
|
* (and isn't unregistered in the meantime).
|
||||||
*
|
*
|
||||||
|
@ -2028,11 +2020,10 @@ err_null_driver:
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cpufreq_register_driver);
|
EXPORT_SYMBOL_GPL(cpufreq_register_driver);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_unregister_driver - unregister the current CPUFreq driver
|
* cpufreq_unregister_driver - unregister the current CPUFreq driver
|
||||||
*
|
*
|
||||||
* Unregister the current CPUFreq driver. Only call this if you have
|
* Unregister the current CPUFreq driver. Only call this if you have
|
||||||
* the right to do so, i.e. if you have succeeded in initialising before!
|
* the right to do so, i.e. if you have succeeded in initialising before!
|
||||||
* Returns zero if successful, and -EINVAL if the cpufreq_driver is
|
* Returns zero if successful, and -EINVAL if the cpufreq_driver is
|
||||||
* currently not initialised.
|
* currently not initialised.
|
||||||
|
|
|
@ -81,7 +81,7 @@ static ssize_t show_##file_name##_gov_sys \
|
||||||
return sprintf(buf, "%u\n", tuners->file_name); \
|
return sprintf(buf, "%u\n", tuners->file_name); \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
static ssize_t show_##file_name##_gov_pol \
|
static ssize_t show_##file_name##_gov_pol \
|
||||||
(struct cpufreq_policy *policy, char *buf) \
|
(struct cpufreq_policy *policy, char *buf) \
|
||||||
{ \
|
{ \
|
||||||
struct dbs_data *dbs_data = policy->governor_data; \
|
struct dbs_data *dbs_data = policy->governor_data; \
|
||||||
|
@ -91,7 +91,7 @@ static ssize_t show_##file_name##_gov_pol \
|
||||||
|
|
||||||
#define store_one(_gov, file_name) \
|
#define store_one(_gov, file_name) \
|
||||||
static ssize_t store_##file_name##_gov_sys \
|
static ssize_t store_##file_name##_gov_sys \
|
||||||
(struct kobject *kobj, struct attribute *attr, const char *buf, size_t count) \
|
(struct kobject *kobj, struct attribute *attr, const char *buf, size_t count) \
|
||||||
{ \
|
{ \
|
||||||
struct dbs_data *dbs_data = _gov##_dbs_cdata.gdbs_data; \
|
struct dbs_data *dbs_data = _gov##_dbs_cdata.gdbs_data; \
|
||||||
return store_##file_name(dbs_data, buf, count); \
|
return store_##file_name(dbs_data, buf, count); \
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <linux/cpufreq.h>
|
#include <linux/cpufreq.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.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)
|
||||||
{
|
{
|
||||||
|
@ -44,19 +43,16 @@ struct cpufreq_governor cpufreq_gov_performance = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static int __init cpufreq_gov_performance_init(void)
|
static int __init cpufreq_gov_performance_init(void)
|
||||||
{
|
{
|
||||||
return cpufreq_register_governor(&cpufreq_gov_performance);
|
return cpufreq_register_governor(&cpufreq_gov_performance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __exit cpufreq_gov_performance_exit(void)
|
static void __exit cpufreq_gov_performance_exit(void)
|
||||||
{
|
{
|
||||||
cpufreq_unregister_governor(&cpufreq_gov_performance);
|
cpufreq_unregister_governor(&cpufreq_gov_performance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
|
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
|
||||||
MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
|
MODULE_DESCRIPTION("CPUfreq policy governor 'performance'");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* linux/drivers/cpufreq/cpufreq_powersave.c
|
* linux/drivers/cpufreq/cpufreq_powersave.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
* Copyright (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -48,13 +48,11 @@ static int __init cpufreq_gov_powersave_init(void)
|
||||||
return cpufreq_register_governor(&cpufreq_gov_powersave);
|
return cpufreq_register_governor(&cpufreq_gov_powersave);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __exit cpufreq_gov_powersave_exit(void)
|
static void __exit cpufreq_gov_powersave_exit(void)
|
||||||
{
|
{
|
||||||
cpufreq_unregister_governor(&cpufreq_gov_powersave);
|
cpufreq_unregister_governor(&cpufreq_gov_powersave);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
|
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>");
|
||||||
MODULE_DESCRIPTION("CPUfreq policy governor 'powersave'");
|
MODULE_DESCRIPTION("CPUfreq policy governor 'powersave'");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
|
@ -27,7 +27,7 @@ static spinlock_t cpufreq_stats_lock;
|
||||||
struct cpufreq_stats {
|
struct cpufreq_stats {
|
||||||
unsigned int cpu;
|
unsigned int cpu;
|
||||||
unsigned int total_trans;
|
unsigned int total_trans;
|
||||||
unsigned long long last_time;
|
unsigned long long last_time;
|
||||||
unsigned int max_state;
|
unsigned int max_state;
|
||||||
unsigned int state_num;
|
unsigned int state_num;
|
||||||
unsigned int last_index;
|
unsigned int last_index;
|
||||||
|
@ -116,7 +116,7 @@ static ssize_t show_trans_table(struct cpufreq_policy *policy, char *buf)
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "%9u: ",
|
len += snprintf(buf + len, PAGE_SIZE - len, "%9u: ",
|
||||||
stat->freq_table[i]);
|
stat->freq_table[i]);
|
||||||
|
|
||||||
for (j = 0; j < stat->state_num; j++) {
|
for (j = 0; j < stat->state_num; j++) {
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
break;
|
break;
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "%9u ",
|
len += snprintf(buf + len, PAGE_SIZE - len, "%9u ",
|
||||||
|
|
|
@ -55,7 +55,6 @@ static int cpufreq_set(struct cpufreq_policy *policy, unsigned int freq)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static ssize_t show_speed(struct cpufreq_policy *policy, char *buf)
|
static ssize_t show_speed(struct cpufreq_policy *policy, char *buf)
|
||||||
{
|
{
|
||||||
return sprintf(buf, "%u\n", policy->cur);
|
return sprintf(buf, "%u\n", policy->cur);
|
||||||
|
@ -101,7 +100,6 @@ static int cpufreq_governor_userspace(struct cpufreq_policy *policy,
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE
|
#ifndef CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE
|
||||||
static
|
static
|
||||||
#endif
|
#endif
|
||||||
|
@ -118,13 +116,11 @@ static int __init cpufreq_gov_userspace_init(void)
|
||||||
return cpufreq_register_governor(&cpufreq_gov_userspace);
|
return cpufreq_register_governor(&cpufreq_gov_userspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __exit cpufreq_gov_userspace_exit(void)
|
static void __exit cpufreq_gov_userspace_exit(void)
|
||||||
{
|
{
|
||||||
cpufreq_unregister_governor(&cpufreq_gov_userspace);
|
cpufreq_unregister_governor(&cpufreq_gov_userspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>, "
|
MODULE_AUTHOR("Dominik Brodowski <linux@brodo.de>, "
|
||||||
"Russell King <rmk@arm.linux.org.uk>");
|
"Russell King <rmk@arm.linux.org.uk>");
|
||||||
MODULE_DESCRIPTION("CPUfreq policy governor 'userspace'");
|
MODULE_DESCRIPTION("CPUfreq policy governor 'userspace'");
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* linux/include/linux/cpufreq.h
|
* linux/include/linux/cpufreq.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001 Russell King
|
* Copyright (C) 2001 Russell King
|
||||||
* (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
* (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -26,7 +26,6 @@
|
||||||
/* Print length for names. Extra 1 space for accomodating '\n' in prints */
|
/* Print length for names. Extra 1 space for accomodating '\n' in prints */
|
||||||
#define CPUFREQ_NAME_PLEN (CPUFREQ_NAME_LEN + 1)
|
#define CPUFREQ_NAME_PLEN (CPUFREQ_NAME_LEN + 1)
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* CPUFREQ NOTIFIER INTERFACE *
|
* CPUFREQ NOTIFIER INTERFACE *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
@ -153,17 +152,18 @@ struct cpufreq_freqs {
|
||||||
u8 flags; /* flags of cpufreq_driver, see below. */
|
u8 flags; /* flags of cpufreq_driver, see below. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cpufreq_scale - "old * mult / div" calculation for large values (32-bit-arch safe)
|
* cpufreq_scale - "old * mult / div" calculation for large values (32-bit-arch
|
||||||
|
* safe)
|
||||||
* @old: old value
|
* @old: old value
|
||||||
* @div: divisor
|
* @div: divisor
|
||||||
* @mult: multiplier
|
* @mult: multiplier
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* new = old * mult / div
|
* new = old * mult / div
|
||||||
*/
|
*/
|
||||||
static inline unsigned long cpufreq_scale(unsigned long old, u_int div, u_int mult)
|
static inline unsigned long cpufreq_scale(unsigned long old, u_int div,
|
||||||
|
u_int mult)
|
||||||
{
|
{
|
||||||
#if BITS_PER_LONG == 32
|
#if BITS_PER_LONG == 32
|
||||||
|
|
||||||
|
@ -216,14 +216,12 @@ extern int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
unsigned int target_freq,
|
unsigned int target_freq,
|
||||||
unsigned int relation);
|
unsigned int relation);
|
||||||
|
|
||||||
|
|
||||||
extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy,
|
extern int __cpufreq_driver_getavg(struct cpufreq_policy *policy,
|
||||||
unsigned int cpu);
|
unsigned int cpu);
|
||||||
|
|
||||||
int cpufreq_register_governor(struct cpufreq_governor *governor);
|
int cpufreq_register_governor(struct cpufreq_governor *governor);
|
||||||
void cpufreq_unregister_governor(struct cpufreq_governor *governor);
|
void cpufreq_unregister_governor(struct cpufreq_governor *governor);
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* CPUFREQ DRIVER INTERFACE *
|
* CPUFREQ DRIVER INTERFACE *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
@ -234,7 +232,7 @@ void cpufreq_unregister_governor(struct cpufreq_governor *governor);
|
||||||
struct freq_attr;
|
struct freq_attr;
|
||||||
|
|
||||||
struct cpufreq_driver {
|
struct cpufreq_driver {
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
char name[CPUFREQ_NAME_LEN];
|
char name[CPUFREQ_NAME_LEN];
|
||||||
u8 flags;
|
u8 flags;
|
||||||
/*
|
/*
|
||||||
|
@ -282,11 +280,11 @@ struct cpufreq_driver {
|
||||||
int cpufreq_register_driver(struct cpufreq_driver *driver_data);
|
int cpufreq_register_driver(struct cpufreq_driver *driver_data);
|
||||||
int cpufreq_unregister_driver(struct cpufreq_driver *driver_data);
|
int cpufreq_unregister_driver(struct cpufreq_driver *driver_data);
|
||||||
|
|
||||||
|
|
||||||
void cpufreq_notify_transition(struct cpufreq_policy *policy,
|
void cpufreq_notify_transition(struct cpufreq_policy *policy,
|
||||||
struct cpufreq_freqs *freqs, unsigned int state);
|
struct cpufreq_freqs *freqs, unsigned int state);
|
||||||
|
|
||||||
static inline void cpufreq_verify_within_limits(struct cpufreq_policy *policy, unsigned int min, unsigned int max)
|
static inline void cpufreq_verify_within_limits(struct cpufreq_policy *policy,
|
||||||
|
unsigned int min, unsigned int max)
|
||||||
{
|
{
|
||||||
if (policy->min < min)
|
if (policy->min < min)
|
||||||
policy->min = min;
|
policy->min = min;
|
||||||
|
@ -349,7 +347,9 @@ bool have_governor_per_policy(void);
|
||||||
struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy);
|
struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy);
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_FREQ
|
#ifdef CONFIG_CPU_FREQ
|
||||||
/* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */
|
/*
|
||||||
|
* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it
|
||||||
|
*/
|
||||||
unsigned int cpufreq_get(unsigned int cpu);
|
unsigned int cpufreq_get(unsigned int cpu);
|
||||||
#else
|
#else
|
||||||
static inline unsigned int cpufreq_get(unsigned int cpu)
|
static inline unsigned int cpufreq_get(unsigned int cpu)
|
||||||
|
@ -358,7 +358,9 @@ static inline unsigned int cpufreq_get(unsigned int cpu)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it */
|
/*
|
||||||
|
* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it
|
||||||
|
*/
|
||||||
#ifdef CONFIG_CPU_FREQ
|
#ifdef CONFIG_CPU_FREQ
|
||||||
unsigned int cpufreq_quick_get(unsigned int cpu);
|
unsigned int cpufreq_quick_get(unsigned int cpu);
|
||||||
unsigned int cpufreq_quick_get_max(unsigned int cpu);
|
unsigned int cpufreq_quick_get_max(unsigned int cpu);
|
||||||
|
@ -373,16 +375,14 @@ static inline unsigned int cpufreq_quick_get_max(unsigned int cpu)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* CPUFREQ DEFAULT GOVERNOR *
|
* CPUFREQ DEFAULT GOVERNOR *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Performance governor is fallback governor if any other gov failed to
|
* Performance governor is fallback governor if any other gov failed to auto
|
||||||
auto load due latency restrictions
|
* load due latency restrictions
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
|
#ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
|
||||||
extern struct cpufreq_governor cpufreq_gov_performance;
|
extern struct cpufreq_governor cpufreq_gov_performance;
|
||||||
#endif
|
#endif
|
||||||
|
@ -402,7 +402,6 @@ extern struct cpufreq_governor cpufreq_gov_conservative;
|
||||||
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_conservative)
|
#define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_conservative)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
* FREQUENCY TABLE HELPERS *
|
* FREQUENCY TABLE HELPERS *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче