]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
PM / devfreq: Add sysfs node to expose available governors
authorNishanth Menon <nm@ti.com>
Mon, 29 Oct 2012 20:01:48 +0000 (15:01 -0500)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Tue, 20 Nov 2012 09:46:24 +0000 (18:46 +0900)
Now that governor list can be variable, knowing the available governors
is useful to be able to select a governor using relevant sysfs node.

Cc: Rajagopal Venkat <rajagopal.venkat@linaro.org>
Cc: MyungJoo Ham <myungjoo.ham@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Kevin Hilman <khilman@ti.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Documentation/ABI/testing/sysfs-class-devfreq
drivers/devfreq/devfreq.c

index 66876debca18473c8912593c0f8fce13068660c3..0ba6ea2f89d9b831bdebdcc2419727464a59d88c 100644 (file)
@@ -71,3 +71,10 @@ Description:
                the available frequencies of the corresponding devfreq object.
                This is a snapshot of available frequencies and not limited
                by the min/max frequency restrictions.
+
+What:          /sys/class/devfreq/.../available_governors
+Date:          October 2012
+Contact:       Nishanth Menon <nm@ti.com>
+Description:
+               The /sys/class/devfreq/.../available_governors shows
+               currently available governors in the system.
index ff960f084c119632d2ca8a48c868be1c1526bce4..45e053e5b139aadc633e6cef6d7aabc3dd45629c 100644 (file)
@@ -730,6 +730,27 @@ out:
                ret = count;
        return ret;
 }
+static ssize_t show_available_governors(struct device *d,
+                                   struct device_attribute *attr,
+                                   char *buf)
+{
+       struct devfreq_governor *tmp_governor;
+       ssize_t count = 0;
+
+       mutex_lock(&devfreq_list_lock);
+       list_for_each_entry(tmp_governor, &devfreq_governor_list, node)
+               count += scnprintf(&buf[count], (PAGE_SIZE - count - 2),
+                                  "%s ", tmp_governor->name);
+       mutex_unlock(&devfreq_list_lock);
+
+       /* Truncate the trailing space */
+       if (count)
+               count--;
+
+       count += sprintf(&buf[count], "\n");
+
+       return count;
+}
 
 static ssize_t show_freq(struct device *dev,
                         struct device_attribute *attr, char *buf)
@@ -917,6 +938,7 @@ static ssize_t show_trans_table(struct device *dev, struct device_attribute *att
 
 static struct device_attribute devfreq_attrs[] = {
        __ATTR(governor, S_IRUGO | S_IWUSR, show_governor, store_governor),
+       __ATTR(available_governors, S_IRUGO, show_available_governors, NULL),
        __ATTR(cur_freq, S_IRUGO, show_freq, NULL),
        __ATTR(available_frequencies, S_IRUGO, show_available_freqs, NULL),
        __ATTR(target_freq, S_IRUGO, show_target_freq, NULL),