diff options
| author | Clarence Ip <cip@codeaurora.org> | 2016-02-24 17:55:10 -0500 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:44:59 -0700 |
| commit | 66fe527ab2ccc9cd9cc349aa26addefe97c91fde (patch) | |
| tree | c3c27055086f1469bf9812bac21d401b1db539da /drivers/video/fbdev | |
| parent | 9f9928018fb4a8d1441f6804f0c69cc45be863df (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.c | 63 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_debug.h | 8 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_hwio.h | 2 |
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 |
