summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2004-12-28 16:51:32 -0500
committerDave Jones <davej@redhat.com>2004-12-28 16:51:32 -0500
commit2dc200fe05e824b4f24eb2748ff7d6dd6d22377d (patch)
tree4e410ff87173b9b35032e1a28a070f20de144e1d
parent53d36e36182c1873dfb7db67359913246aaffc54 (diff)
[CPUFREQ] cpufreq stat output in sysfs
From: "Zou, Nanhai" <nanhai.zou@intel.com> Export cpufreq transition information for drivers using the freq-table helpers via sysfs. Two minor updates from Dominik Brodowski: s/translation/transition Kconfig re-ordering Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r--drivers/cpufreq/Kconfig16
-rw-r--r--drivers/cpufreq/Makefile2
-rw-r--r--drivers/cpufreq/cpufreq.c6
-rw-r--r--drivers/cpufreq/freq_table.c5
-rw-r--r--include/linux/cpufreq.h5
5 files changed, 32 insertions, 2 deletions
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index aa8eaca6e2ea..85efbc791dfc 100644
--- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig
@@ -27,6 +27,22 @@ config CPU_FREQ_DEBUG
2 to activate CPUfreq drivers debugging, and
4 to activate CPUfreq governor debugging
+config CPU_FREQ_STAT
+ tristate "CPU frequency translation statistics"
+ depends on CPU_FREQ && CPU_FREQ_TABLE
+ default y
+ help
+ This driver exports CPU frequency statistics information through sysfs
+ file system
+
+config CPU_FREQ_STAT_DETAILS
+ bool "CPU frequency translation statistics details"
+ depends on CPU_FREQ && CPU_FREQ_STAT
+ default n
+ help
+ This will show detail CPU frequency translation table in sysfs file
+ system
+
config CPU_FREQ_PROC_INTF
tristate "/proc/cpufreq interface (deprecated)"
depends on CPU_FREQ && PROC_FS
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 50291abb4863..8e08fbf765da 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -1,5 +1,7 @@
# CPUfreq core
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
+# CPUfreq stats
+obj-$(CONFIG_CPU_FREQ_STAT) += cpufreq_stats.o
# CPUfreq governors
obj-$(CONFIG_CPU_FREQ_GOV_PERFORMANCE) += cpufreq_performance.o
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 5a4ff6fe8d57..39c89fd23b67 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -63,7 +63,7 @@ static DECLARE_RWSEM (cpufreq_notifier_rwsem);
static LIST_HEAD(cpufreq_governor_list);
static DECLARE_MUTEX (cpufreq_governor_sem);
-static struct cpufreq_policy * cpufreq_cpu_get(unsigned int cpu)
+struct cpufreq_policy * cpufreq_cpu_get(unsigned int cpu)
{
struct cpufreq_policy *data;
unsigned long flags;
@@ -102,12 +102,14 @@ static struct cpufreq_policy * cpufreq_cpu_get(unsigned int cpu)
err_out:
return NULL;
}
+EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
-static void cpufreq_cpu_put(struct cpufreq_policy *data)
+void cpufreq_cpu_put(struct cpufreq_policy *data)
{
kobject_put(&data->kobj);
module_put(cpufreq_driver->owner);
}
+EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
/*********************************************************************
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c
index 22e2ba6b14d4..ba460bdea60f 100644
--- a/drivers/cpufreq/freq_table.c
+++ b/drivers/cpufreq/freq_table.c
@@ -214,6 +214,11 @@ void cpufreq_frequency_table_put_attr(unsigned int cpu)
}
EXPORT_SYMBOL_GPL(cpufreq_frequency_table_put_attr);
+struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu)
+{
+ return show_table[cpu];
+}
+EXPORT_SYMBOL_GPL(cpufreq_frequency_get_table);
MODULE_AUTHOR ("Dominik Brodowski <linux@brodo.de>");
MODULE_DESCRIPTION ("CPUfreq frequency table helpers");
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 060cf3bba586..2128a3de8070 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -351,6 +351,11 @@ int cpufreq_frequency_table_target(struct cpufreq_policy *policy,
unsigned int relation,
unsigned int *index);
+/* the following 3 funtions are for cpufreq core use only */
+struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu);
+struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu);
+void cpufreq_cpu_put (struct cpufreq_policy *data);
+
/* the following are really really optional */
extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs;