diff options
author | David Keitel <dkeitel@codeaurora.org> | 2016-09-13 15:41:52 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-10-11 15:05:27 -0700 |
commit | 626da03683087ad2980df18dba9e3751b5a70d80 (patch) | |
tree | f8248ebfb266838d878114b184fac634eb174615 | |
parent | c5cfd3c491b6fafbdc7995e605b189c184f1f2a5 (diff) |
PM / devfreq: memlat: add device attribute to show core to device bw map
This adds the freq_map device attribute to the mem_latency governor in
order to display a given device's core frequency to device bandwidth.
The output should be printed in the formatted in the same way as the
example:
Core freq (MHz) Device BW
300 1525
480 3143
900 4173
1017 7759
1296 9887
1555 11863
1804 13763
Change-Id: I6bef33a1239329f0687ee3983c2c02d84e984284
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
-rw-r--r-- | drivers/devfreq/governor_memlat.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/devfreq/governor_memlat.c b/drivers/devfreq/governor_memlat.c index 010f9defe33e..a3c826e152e1 100644 --- a/drivers/devfreq/governor_memlat.c +++ b/drivers/devfreq/governor_memlat.c @@ -81,6 +81,29 @@ show_attr(__attr) \ store_attr(__attr, min, max) \ static DEVICE_ATTR(__attr, 0644, show_##__attr, store_##__attr) +static ssize_t show_map(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct devfreq *df = to_devfreq(dev); + struct memlat_node *n = df->data; + struct core_dev_map *map = n->hw->freq_map; + unsigned int cnt = 0; + + cnt += snprintf(buf, PAGE_SIZE, "Core freq (MHz)\tDevice BW\n"); + + while (map->core_mhz && cnt < PAGE_SIZE) { + cnt += snprintf(buf + cnt, PAGE_SIZE - cnt, "%15u\t%9u\n", + map->core_mhz, map->target_freq); + map++; + } + if (cnt < PAGE_SIZE) + cnt += snprintf(buf + cnt, PAGE_SIZE - cnt, "\n"); + + return cnt; +} + +static DEVICE_ATTR(freq_map, 0444, show_map, NULL); + static unsigned long core_to_dev_freq(struct memlat_node *node, unsigned long coref) { @@ -247,6 +270,7 @@ gov_attr(ratio_ceil, 1U, 10000U); static struct attribute *dev_attr[] = { &dev_attr_ratio_ceil.attr, + &dev_attr_freq_map.attr, NULL, }; |