aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRajendra Nayak <rnayak@codeaurora.org>2018-05-30 05:45:17 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-05-30 07:47:23 -0400
commite89128124c28cc9b74ce9e7a605b22dae031fe5d (patch)
tree2a26bcff435d88c71bad49093601b0497af6d228 /drivers
parent63ce228e61a44ef6317bd922923c51b2c4f967be (diff)
PM / domains: Add perf_state attribute to genpd debugfs
Now that genpd supports performance states, add this additional attribute as part of the power domains debugfs entry, to display the current performance state for the Power domain. Suggested-by: David Collins <collinsd@codeaurora.org> Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/base/power/domain.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 71a1cc79fbaa..166259053f8d 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -2713,6 +2713,19 @@ static int genpd_devices_show(struct seq_file *s, void *data)
2713 return ret; 2713 return ret;
2714} 2714}
2715 2715
2716static int genpd_perf_state_show(struct seq_file *s, void *data)
2717{
2718 struct generic_pm_domain *genpd = s->private;
2719
2720 if (genpd_lock_interruptible(genpd))
2721 return -ERESTARTSYS;
2722
2723 seq_printf(s, "%u\n", genpd->performance_state);
2724
2725 genpd_unlock(genpd);
2726 return 0;
2727}
2728
2716#define define_genpd_open_function(name) \ 2729#define define_genpd_open_function(name) \
2717static int genpd_##name##_open(struct inode *inode, struct file *file) \ 2730static int genpd_##name##_open(struct inode *inode, struct file *file) \
2718{ \ 2731{ \
@@ -2726,6 +2739,7 @@ define_genpd_open_function(idle_states);
2726define_genpd_open_function(active_time); 2739define_genpd_open_function(active_time);
2727define_genpd_open_function(total_idle_time); 2740define_genpd_open_function(total_idle_time);
2728define_genpd_open_function(devices); 2741define_genpd_open_function(devices);
2742define_genpd_open_function(perf_state);
2729 2743
2730#define define_genpd_debugfs_fops(name) \ 2744#define define_genpd_debugfs_fops(name) \
2731static const struct file_operations genpd_##name##_fops = { \ 2745static const struct file_operations genpd_##name##_fops = { \
@@ -2742,6 +2756,7 @@ define_genpd_debugfs_fops(idle_states);
2742define_genpd_debugfs_fops(active_time); 2756define_genpd_debugfs_fops(active_time);
2743define_genpd_debugfs_fops(total_idle_time); 2757define_genpd_debugfs_fops(total_idle_time);
2744define_genpd_debugfs_fops(devices); 2758define_genpd_debugfs_fops(devices);
2759define_genpd_debugfs_fops(perf_state);
2745 2760
2746static int __init genpd_debug_init(void) 2761static int __init genpd_debug_init(void)
2747{ 2762{
@@ -2775,6 +2790,9 @@ static int __init genpd_debug_init(void)
2775 d, genpd, &genpd_total_idle_time_fops); 2790 d, genpd, &genpd_total_idle_time_fops);
2776 debugfs_create_file("devices", 0444, 2791 debugfs_create_file("devices", 0444,
2777 d, genpd, &genpd_devices_fops); 2792 d, genpd, &genpd_devices_fops);
2793 if (genpd->set_performance_state)
2794 debugfs_create_file("perf_state", 0444,
2795 d, genpd, &genpd_perf_state_fops);
2778 } 2796 }
2779 2797
2780 return 0; 2798 return 0;