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>
This commit is contained in:
parent
9f9928018f
commit
66fe527ab2
3 changed files with 73 additions and 0 deletions
|
@ -1035,6 +1035,65 @@ static int mdss_debugfs_buffers_show(struct seq_file *s, void *v)
|
||||||
}
|
}
|
||||||
DEFINE_MDSS_DEBUGFS_SEQ_FOPS(mdss_debugfs_buffers);
|
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)
|
static void __stats_ctl_dump(struct mdss_mdp_ctl *ctl, struct seq_file *s)
|
||||||
{
|
{
|
||||||
if (!ctl->ref_cnt)
|
if (!ctl->ref_cnt)
|
||||||
|
@ -1106,6 +1165,10 @@ int mdss_mdp_debugfs_init(struct mdss_data_type *mdata)
|
||||||
&mdss_debugfs_buffers_fops);
|
&mdss_debugfs_buffers_fops);
|
||||||
debugfs_create_file("stat", 0644, mdd->root, mdata,
|
debugfs_create_file("stat", 0644, mdd->root, mdata,
|
||||||
&mdss_debugfs_stats_fops);
|
&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,
|
debugfs_create_u32("serialize_wait4pp", 0644, mdd->root,
|
||||||
(u32 *)&mdata->serialize_wait4pp);
|
(u32 *)&mdata->serialize_wait4pp);
|
||||||
debugfs_create_u32("enable_gate", 0644, mdd->root,
|
debugfs_create_u32("enable_gate", 0644, mdd->root,
|
||||||
|
|
|
@ -21,6 +21,14 @@
|
||||||
#include "mdss.h"
|
#include "mdss.h"
|
||||||
#include "mdss_mdp.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 inline const char *mdss_mdp_pipetype2str(u32 ptype)
|
||||||
{
|
{
|
||||||
static const char const *strings[] = {
|
static const char const *strings[] = {
|
||||||
|
|
|
@ -51,6 +51,8 @@
|
||||||
#define MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL 0x002E0
|
#define MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL 0x002E0
|
||||||
#define MDSS_MDP_REG_SPLIT_DISPLAY_EN 0x002F4
|
#define MDSS_MDP_REG_SPLIT_DISPLAY_EN 0x002F4
|
||||||
#define MDSS_MDP_REG_SPLIT_DISPLAY_UPPER_PIPE_CTRL 0x002F8
|
#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_SPLIT_DISPLAY_LOWER_PIPE_CTRL 0x003F0
|
||||||
#define MDSS_MDP_REG_DCE_SEL 0x00450
|
#define MDSS_MDP_REG_DCE_SEL 0x00450
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue