[STATS_NUM_TRANSITIONS] = "stats/total_trans"
 };
 
-
-static unsigned long sysfs_cpufreq_get_one_value(unsigned int cpu,
-                                                enum cpufreq_value which)
+unsigned long cpufreq_get_sysfs_value_from_table(unsigned int cpu,
+                                                const char **table,
+                                                unsigned int index,
+                                                unsigned int size)
 {
        unsigned long value;
        unsigned int len;
        char linebuf[MAX_LINE_LEN];
        char *endp;
 
-       if (which >= MAX_CPUFREQ_VALUE_READ_FILES)
+       if (!table || index >= size || !table[index])
                return 0;
 
-       len = sysfs_cpufreq_read_file(cpu, cpufreq_value_files[which],
-                               linebuf, sizeof(linebuf));
+       len = sysfs_cpufreq_read_file(cpu, table[index], linebuf,
+                                     sizeof(linebuf));
 
        if (len == 0)
                return 0;
        return value;
 }
 
+static unsigned long sysfs_cpufreq_get_one_value(unsigned int cpu,
+                                                enum cpufreq_value which)
+{
+       return cpufreq_get_sysfs_value_from_table(cpu, cpufreq_value_files,
+                                                 which,
+                                                 MAX_CPUFREQ_VALUE_READ_FILES);
+}
+
 /* read access to files which contain one string */
 
 enum cpufreq_string {
 
 
 static char *sysfs_cpufreq_get_one_string(unsigned int cpu,
-                                          enum cpufreq_string which)
+                                         enum cpufreq_string which)
 {
        char linebuf[MAX_LINE_LEN];
        char *result;
 
 int cpufreq_set_frequency(unsigned int cpu,
                                unsigned long target_frequency);
 
+/*
+ * get the sysfs value from specific table
+ *
+ * Read the value with the sysfs file name from specific table. Does
+ * only work if the cpufreq driver has the specific sysfs interfaces.
+ */
+
+unsigned long cpufreq_get_sysfs_value_from_table(unsigned int cpu,
+                                                const char **table,
+                                                unsigned int index,
+                                                unsigned int size);
+
 #ifdef __cplusplus
 }
 #endif