summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorClarence Ip <cip@codeaurora.org>2016-02-24 17:55:10 -0500
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:44:59 -0700
commit66fe527ab2ccc9cd9cc349aa26addefe97c91fde (patch)
treec3c27055086f1469bf9812bac21d401b1db539da /drivers/video/fbdev
parent9f9928018fb4a8d1441f6804f0c69cc45be863df (diff)
mdss: mdp: add debugfs node for danger/safe on mdss
Add debugfs node to get the danger/safe status of mdp and source pipes on MDSS. Change-Id: I0c93d42b144cda932d80ba18221ae814bed3d3d4 Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org> [cip@codeaurora.org: Resolved merge conflict] Signed-off-by: Clarence Ip <cip@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_debug.c63
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_debug.h8
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_hwio.h2
3 files changed, 73 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_debug.c b/drivers/video/fbdev/msm/mdss_mdp_debug.c
index 57e5863ec745..00472a0cd669 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_debug.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_debug.c
@@ -1035,6 +1035,65 @@ static int mdss_debugfs_buffers_show(struct seq_file *s, void *v)
}
DEFINE_MDSS_DEBUGFS_SEQ_FOPS(mdss_debugfs_buffers);
+static int __danger_safe_signal_status(struct seq_file *s, bool danger_status)
+{
+ struct mdss_data_type *mdata = (struct mdss_data_type *)s->private;
+ u32 status;
+ int i, j;
+
+ mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON);
+ if (danger_status) {
+ seq_puts(s, "\nDanger signal status:\n");
+ status = readl_relaxed(mdata->mdp_base +
+ MDSS_MDP_DANGER_STATUS);
+ } else {
+ seq_puts(s, "\nSafe signal status:\n");
+ status = readl_relaxed(mdata->mdp_base +
+ MDSS_MDP_SAFE_STATUS);
+ }
+ mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF);
+
+ seq_printf(s, "MDP : 0x%lx\n",
+ DANGER_SAFE_STATUS(status, MDP_DANGER_SAFE_BIT_OFFSET));
+
+ for (i = 0, j = VIG_DANGER_SAFE_BIT_OFFSET; i < mdata->nvig_pipes;
+ i++, j += 2)
+ seq_printf(s, "VIG%d : 0x%lx \t", i,
+ DANGER_SAFE_STATUS(status, j));
+ seq_puts(s, "\n");
+
+ for (i = 0, j = RGB_DANGER_SAFE_BIT_OFFSET; i < mdata->nrgb_pipes;
+ i++, j += 2)
+ seq_printf(s, "RGB%d : 0x%lx \t", i,
+ DANGER_SAFE_STATUS(status, j));
+ seq_puts(s, "\n");
+ for (i = 0, j = DMA_DANGER_SAFE_BIT_OFFSET; i < mdata->ndma_pipes;
+ i++, j += 2)
+ seq_printf(s, "DMA%d : 0x%lx \t", i,
+ DANGER_SAFE_STATUS(status, j));
+ seq_puts(s, "\n");
+
+ for (i = 0, j = CURSOR_DANGER_SAFE_BIT_OFFSET; i < mdata->ncursor_pipes;
+ i++, j += 2)
+ seq_printf(s, "CURSOR%d : 0x%lx \t", i,
+ DANGER_SAFE_STATUS(status, j));
+ seq_puts(s, "\n");
+
+ return 0;
+}
+
+static int mdss_debugfs_danger_stats_show(struct seq_file *s, void *v)
+{
+ return __danger_safe_signal_status(s, true);
+}
+DEFINE_MDSS_DEBUGFS_SEQ_FOPS(mdss_debugfs_danger_stats);
+
+static int mdss_debugfs_safe_stats_show(struct seq_file *s, void *v)
+{
+ return __danger_safe_signal_status(s, false);
+}
+DEFINE_MDSS_DEBUGFS_SEQ_FOPS(mdss_debugfs_safe_stats);
+
static void __stats_ctl_dump(struct mdss_mdp_ctl *ctl, struct seq_file *s)
{
if (!ctl->ref_cnt)
@@ -1106,6 +1165,10 @@ int mdss_mdp_debugfs_init(struct mdss_data_type *mdata)
&mdss_debugfs_buffers_fops);
debugfs_create_file("stat", 0644, mdd->root, mdata,
&mdss_debugfs_stats_fops);
+ debugfs_create_file("danger_stat", 0644, mdd->root, mdata,
+ &mdss_debugfs_danger_stats_fops);
+ debugfs_create_file("safe_stat", 0644, mdd->root, mdata,
+ &mdss_debugfs_safe_stats_fops);
debugfs_create_u32("serialize_wait4pp", 0644, mdd->root,
(u32 *)&mdata->serialize_wait4pp);
debugfs_create_u32("enable_gate", 0644, mdd->root,
diff --git a/drivers/video/fbdev/msm/mdss_mdp_debug.h b/drivers/video/fbdev/msm/mdss_mdp_debug.h
index 05d310e6fd50..9a72577432ca 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_debug.h
+++ b/drivers/video/fbdev/msm/mdss_mdp_debug.h
@@ -21,6 +21,14 @@
#include "mdss.h"
#include "mdss_mdp.h"
+#define MDP_DANGER_SAFE_BIT_OFFSET 0
+#define VIG_DANGER_SAFE_BIT_OFFSET 4
+#define RGB_DANGER_SAFE_BIT_OFFSET 12
+#define DMA_DANGER_SAFE_BIT_OFFSET 20
+#define CURSOR_DANGER_SAFE_BIT_OFFSET 24
+
+#define DANGER_SAFE_STATUS(X, Y) (((X) & (BIT(Y) | BIT((Y)+1))) >> (Y))
+
static inline const char *mdss_mdp_pipetype2str(u32 ptype)
{
static const char const *strings[] = {
diff --git a/drivers/video/fbdev/msm/mdss_mdp_hwio.h b/drivers/video/fbdev/msm/mdss_mdp_hwio.h
index 06d2282e7789..7f3dbcaada2a 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_hwio.h
+++ b/drivers/video/fbdev/msm/mdss_mdp_hwio.h
@@ -51,6 +51,8 @@
#define MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL 0x002E0
#define MDSS_MDP_REG_SPLIT_DISPLAY_EN 0x002F4
#define MDSS_MDP_REG_SPLIT_DISPLAY_UPPER_PIPE_CTRL 0x002F8
+#define MDSS_MDP_DANGER_STATUS 0x00360
+#define MDSS_MDP_SAFE_STATUS 0x00364
#define MDSS_MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTRL 0x003F0
#define MDSS_MDP_REG_DCE_SEL 0x00450