mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
PM / devfreq: Add clearing transitions stats
Add clearing transition table and time in states devfreq statistics by writing 0 (zero) to trans_stat file in devfreq sysfs. An example use is like following: echo 0 > /sys/class/devfreq/devfreqX/trans_stat Signed-off-by: Kamil Konieczny <k.konieczny@samsung.com> [cw00.choi: Edit return value if entering the wrong value for reset and use arrary3_size() to get the size of 3-dimensional array] Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
This commit is contained in:
committed by
Chanwoo Choi
parent
b76b3479da
commit
14a3439681
@@ -55,12 +55,15 @@ What: /sys/class/devfreq/.../trans_stat
|
|||||||
Date: October 2012
|
Date: October 2012
|
||||||
Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
|
Contact: MyungJoo Ham <myungjoo.ham@samsung.com>
|
||||||
Description:
|
Description:
|
||||||
This ABI shows the statistics of devfreq behavior on a
|
This ABI shows or clears the statistics of devfreq behavior
|
||||||
specific device. It shows the time spent in each state and
|
on a specific device. It shows the time spent in each state
|
||||||
the number of transitions between states.
|
and the number of transitions between states.
|
||||||
In order to activate this ABI, the devfreq target device
|
In order to activate this ABI, the devfreq target device
|
||||||
driver should provide the list of available frequencies
|
driver should provide the list of available frequencies
|
||||||
with its profile.
|
with its profile. If need to reset the statistics of devfreq
|
||||||
|
behavior on a specific device, enter 0(zero) to 'trans_stat'
|
||||||
|
as following:
|
||||||
|
echo 0 > /sys/class/devfreq/.../trans_stat
|
||||||
|
|
||||||
What: /sys/class/devfreq/.../userspace/set_freq
|
What: /sys/class/devfreq/.../userspace/set_freq
|
||||||
Date: September 2011
|
Date: September 2011
|
||||||
|
@@ -1597,7 +1597,34 @@ static ssize_t trans_stat_show(struct device *dev,
|
|||||||
devfreq->total_trans);
|
devfreq->total_trans);
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR_RO(trans_stat);
|
|
||||||
|
static ssize_t trans_stat_store(struct device *dev,
|
||||||
|
struct device_attribute *attr,
|
||||||
|
const char *buf, size_t count)
|
||||||
|
{
|
||||||
|
struct devfreq *df = to_devfreq(dev);
|
||||||
|
int err, value;
|
||||||
|
|
||||||
|
if (df->profile->max_state == 0)
|
||||||
|
return count;
|
||||||
|
|
||||||
|
err = kstrtoint(buf, 10, &value);
|
||||||
|
if (err || value != 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
mutex_lock(&df->lock);
|
||||||
|
memset(df->time_in_state, 0, (df->profile->max_state *
|
||||||
|
sizeof(*df->time_in_state)));
|
||||||
|
memset(df->trans_table, 0, array3_size(sizeof(unsigned int),
|
||||||
|
df->profile->max_state,
|
||||||
|
df->profile->max_state));
|
||||||
|
df->total_trans = 0;
|
||||||
|
df->last_stat_updated = get_jiffies_64();
|
||||||
|
mutex_unlock(&df->lock);
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
static DEVICE_ATTR_RW(trans_stat);
|
||||||
|
|
||||||
static struct attribute *devfreq_attrs[] = {
|
static struct attribute *devfreq_attrs[] = {
|
||||||
&dev_attr_name.attr,
|
&dev_attr_name.attr,
|
||||||
|
Reference in New Issue
Block a user