diff options
| author | Nishanth Menon <nm@ti.com> | 2012-10-29 15:01:48 -0500 | 
|---|---|---|
| committer | MyungJoo Ham <myungjoo.ham@samsung.com> | 2012-11-20 18:46:24 +0900 | 
| commit | 50a5b33e0159f8783ef617cdb9d5fbb6a3955b6f (patch) | |
| tree | 0063869677d9da4bc78e4b32de852767e4cd15f0 /drivers/devfreq/devfreq.c | |
| parent | 0359d1afe4013d1a216908b6be4c6695a1db6fd6 (diff) | |
PM / devfreq: Add sysfs node to expose available governors
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>
Diffstat (limited to 'drivers/devfreq/devfreq.c')
| -rw-r--r-- | drivers/devfreq/devfreq.c | 22 | 
1 files changed, 22 insertions, 0 deletions
| diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index ff960f084c11..45e053e5b139 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -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), | 
