summaryrefslogtreecommitdiff
path: root/drivers/edp
diff options
context:
space:
mode:
authorSivaram Nair <sivaramn@nvidia.com>2013-06-12 15:12:04 +0300
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 13:32:43 -0700
commit25c8dfd8f10c017f404146f71dab6270562e7773 (patch)
tree6e639e4ad18870fe2fe375ebceb30e542169e1d0 /drivers/edp
parent790226db5094cf5557c806e24f76ee09360587e4 (diff)
EDP: tegra: add core status debugfs attr
Add a new debugfs node for printing out the current AP+DRAM EDP capping decisions. Bug 1257143 Change-Id: Ie42c78233e3462ea786456ffb9e321895a437c9f Signed-off-by: Sivaram Nair <sivaramn@nvidia.com> Reviewed-on: http://git-master/r/238035 (cherry picked from commit 7741dd6b9dd6aaeb89f5a0268fb343bcca500228) Reviewed-on: http://git-master/r/250625 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/edp')
-rw-r--r--drivers/edp/tegra_core.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/drivers/edp/tegra_core.c b/drivers/edp/tegra_core.c
index 9816a09aed31..7c82328f24b9 100644
--- a/drivers/edp/tegra_core.c
+++ b/drivers/edp/tegra_core.c
@@ -152,6 +152,11 @@ static inline bool gpu_priority(void)
return gpu_busy || force_gpu_pri;
}
+static inline struct tegra_sysedp_devcap *get_devcap(void)
+{
+ return gpu_priority() ? &cur_corecap->gpupri : &cur_corecap->cpupri;
+}
+
static void __do_cap_control(void)
{
struct tegra_sysedp_devcap *cap;
@@ -159,7 +164,7 @@ static void __do_cap_control(void)
if (!cur_corecap)
return;
- cap = gpu_priority() ? &cur_corecap->gpupri : &cur_corecap->cpupri;
+ cap = get_devcap();
apply_caps(cap);
}
@@ -416,6 +421,28 @@ static int corecaps_show(struct seq_file *file, void *data)
return 0;
}
+static int status_show(struct seq_file *file, void *data)
+{
+ mutex_lock(&core_lock);
+
+ seq_printf(file, "cpus online : %u\n", online_cpu_count);
+ seq_printf(file, "gpu priority: %u\n", gpu_priority());
+ seq_printf(file, "E-state : %u\n", core_edp_states[core_state]);
+ seq_printf(file, "gain : %u\n", core_platdata->core_gain);
+ seq_printf(file, "loan : %u\n", core_loan);
+ seq_printf(file, "core cap : %u\n", cur_corecap->power);
+ seq_printf(file, "cpu balance : %u\n", cpu_power_balance);
+ seq_printf(file, "cpu offset : %u\n", cpu_power_offset);
+ seq_printf(file, "cpu power : %u\n", get_devcap()->cpu_power +
+ cpu_power_balance + cpu_power_offset);
+ seq_printf(file, "cpu cap : %u kHz\n", cur_caps.cpu);
+ seq_printf(file, "gpu cap : %u kHz\n", cur_caps.gpu);
+ seq_printf(file, "emc cap : %u kHz\n", cur_caps.emc);
+
+ mutex_unlock(&core_lock);
+ return 0;
+}
+
static int longattr_open(struct inode *inode, struct file *file)
{
return single_open(file, inode->i_private, NULL);
@@ -455,6 +482,7 @@ static void init_debug(void)
create_longattr("corecaps", corecaps_show);
create_longattr("cpucaps", cpucaps_show);
+ create_longattr("status", status_show);
}
#else
static inline void init_debug(void) {}