thermal: sysfs: Reuse cdev->max_state
Now that the cooling device structure stores the max_state value, reuse it and drop max_states from struct cooling_dev_stats. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
c408b3d1d9
commit
a365105c68
|
@ -661,7 +661,6 @@ struct cooling_dev_stats {
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
unsigned int total_trans;
|
unsigned int total_trans;
|
||||||
unsigned long state;
|
unsigned long state;
|
||||||
unsigned long max_states;
|
|
||||||
ktime_t last_time;
|
ktime_t last_time;
|
||||||
ktime_t *time_in_state;
|
ktime_t *time_in_state;
|
||||||
unsigned int *trans_table;
|
unsigned int *trans_table;
|
||||||
|
@ -691,7 +690,7 @@ void thermal_cooling_device_stats_update(struct thermal_cooling_device *cdev,
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
update_time_in_state(stats);
|
update_time_in_state(stats);
|
||||||
stats->trans_table[stats->state * stats->max_states + new_state]++;
|
stats->trans_table[stats->state * (cdev->max_state + 1) + new_state]++;
|
||||||
stats->state = new_state;
|
stats->state = new_state;
|
||||||
stats->total_trans++;
|
stats->total_trans++;
|
||||||
|
|
||||||
|
@ -725,7 +724,7 @@ time_in_state_ms_show(struct device *dev, struct device_attribute *attr,
|
||||||
spin_lock(&stats->lock);
|
spin_lock(&stats->lock);
|
||||||
update_time_in_state(stats);
|
update_time_in_state(stats);
|
||||||
|
|
||||||
for (i = 0; i < stats->max_states; i++) {
|
for (i = 0; i <= cdev->max_state; i++) {
|
||||||
len += sprintf(buf + len, "state%u\t%llu\n", i,
|
len += sprintf(buf + len, "state%u\t%llu\n", i,
|
||||||
ktime_to_ms(stats->time_in_state[i]));
|
ktime_to_ms(stats->time_in_state[i]));
|
||||||
}
|
}
|
||||||
|
@ -740,7 +739,7 @@ reset_store(struct device *dev, struct device_attribute *attr, const char *buf,
|
||||||
{
|
{
|
||||||
struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
struct thermal_cooling_device *cdev = to_cooling_device(dev);
|
||||||
struct cooling_dev_stats *stats = cdev->stats;
|
struct cooling_dev_stats *stats = cdev->stats;
|
||||||
int i, states = stats->max_states;
|
int i, states = cdev->max_state + 1;
|
||||||
|
|
||||||
spin_lock(&stats->lock);
|
spin_lock(&stats->lock);
|
||||||
|
|
||||||
|
@ -749,7 +748,7 @@ reset_store(struct device *dev, struct device_attribute *attr, const char *buf,
|
||||||
memset(stats->trans_table, 0,
|
memset(stats->trans_table, 0,
|
||||||
states * states * sizeof(*stats->trans_table));
|
states * states * sizeof(*stats->trans_table));
|
||||||
|
|
||||||
for (i = 0; i < stats->max_states; i++)
|
for (i = 0; i < states; i++)
|
||||||
stats->time_in_state[i] = ktime_set(0, 0);
|
stats->time_in_state[i] = ktime_set(0, 0);
|
||||||
|
|
||||||
spin_unlock(&stats->lock);
|
spin_unlock(&stats->lock);
|
||||||
|
@ -767,7 +766,7 @@ static ssize_t trans_table_show(struct device *dev,
|
||||||
|
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, " From : To\n");
|
len += snprintf(buf + len, PAGE_SIZE - len, " From : To\n");
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, " : ");
|
len += snprintf(buf + len, PAGE_SIZE - len, " : ");
|
||||||
for (i = 0; i < stats->max_states; i++) {
|
for (i = 0; i <= cdev->max_state; i++) {
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
break;
|
break;
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "state%2u ", i);
|
len += snprintf(buf + len, PAGE_SIZE - len, "state%2u ", i);
|
||||||
|
@ -777,17 +776,17 @@ static ssize_t trans_table_show(struct device *dev,
|
||||||
|
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
||||||
|
|
||||||
for (i = 0; i < stats->max_states; i++) {
|
for (i = 0; i <= cdev->max_state; i++) {
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "state%2u:", i);
|
len += snprintf(buf + len, PAGE_SIZE - len, "state%2u:", i);
|
||||||
|
|
||||||
for (j = 0; j < stats->max_states; j++) {
|
for (j = 0; j <= cdev->max_state; j++) {
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
break;
|
break;
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "%8u ",
|
len += snprintf(buf + len, PAGE_SIZE - len, "%8u ",
|
||||||
stats->trans_table[i * stats->max_states + j]);
|
stats->trans_table[i * (cdev->max_state + 1) + j]);
|
||||||
}
|
}
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
break;
|
break;
|
||||||
|
@ -823,14 +822,10 @@ static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
|
||||||
{
|
{
|
||||||
const struct attribute_group *stats_attr_group = NULL;
|
const struct attribute_group *stats_attr_group = NULL;
|
||||||
struct cooling_dev_stats *stats;
|
struct cooling_dev_stats *stats;
|
||||||
unsigned long states;
|
/* Total number of states is highest state + 1 */
|
||||||
|
unsigned long states = cdev->max_state + 1;
|
||||||
int var;
|
int var;
|
||||||
|
|
||||||
if (cdev->ops->get_max_state(cdev, &states))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
states++; /* Total number of states is highest state + 1 */
|
|
||||||
|
|
||||||
var = sizeof(*stats);
|
var = sizeof(*stats);
|
||||||
var += sizeof(*stats->time_in_state) * states;
|
var += sizeof(*stats->time_in_state) * states;
|
||||||
var += sizeof(*stats->trans_table) * states * states;
|
var += sizeof(*stats->trans_table) * states * states;
|
||||||
|
@ -843,7 +838,6 @@ static void cooling_device_stats_setup(struct thermal_cooling_device *cdev)
|
||||||
stats->trans_table = (unsigned int *)(stats->time_in_state + states);
|
stats->trans_table = (unsigned int *)(stats->time_in_state + states);
|
||||||
cdev->stats = stats;
|
cdev->stats = stats;
|
||||||
stats->last_time = ktime_get();
|
stats->last_time = ktime_get();
|
||||||
stats->max_states = states;
|
|
||||||
|
|
||||||
spin_lock_init(&stats->lock);
|
spin_lock_init(&stats->lock);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue