summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Salido-Moreno <adrianm@codeaurora.org>2014-11-24 13:59:34 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:36:31 -0700
commit8076470c9f26c9d4be7635bcabd505d8033a9515 (patch)
treeda1de662ecc80753f22e4996832d8e5ff9dacabc
parent147369ad56b299312ff7040ab7871f275e4dab5a (diff)
msm: mdss: fix software reset logic hw programming
While refactoring VBIF registers programming (commit 41efd125ffe5403698155043073dd826abc534cf) software reset programming was switched from using mdp based to vbif base, this is incorrect programming and software reset wouldn't work in case hardware behaves incorrectly. Change-Id: I8738bc4fc96ec8ba7130a891231c34bd4ce10449 Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_pipe.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_pipe.c b/drivers/video/fbdev/msm/mdss_mdp_pipe.c
index abbcf38fa67a..e83f21184a42 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_pipe.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_pipe.c
@@ -1198,11 +1198,9 @@ int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe)
reg_val | BIT(pipe->xin_id), is_nrt_vbif);
if (sw_reset_avail) {
- reg_val = MDSS_VBIF_READ(mdata, sw_reset_off,
- is_nrt_vbif);
- MDSS_VBIF_WRITE(mdata, sw_reset_off,
- reg_val | BIT(pipe->sw_reset.bit_off),
- is_nrt_vbif);
+ reg_val = readl_relaxed(mdata->mdp_base + sw_reset_off);
+ writel_relaxed(reg_val | BIT(pipe->sw_reset.bit_off),
+ mdata->mdp_base + sw_reset_off);
wmb();
}
mutex_unlock(&mdata->reg_lock);
@@ -1225,16 +1223,16 @@ int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe)
reg_val & ~BIT(pipe->xin_id), is_nrt_vbif);
if (sw_reset_avail) {
- MDSS_VBIF_WRITE(mdata, sw_reset_off, reg_val &
- ~BIT(pipe->sw_reset.bit_off), is_nrt_vbif);
+ reg_val = readl_relaxed(mdata->mdp_base + sw_reset_off);
+ writel_relaxed(reg_val & ~BIT(pipe->sw_reset.bit_off),
+ mdata->mdp_base + sw_reset_off);
wmb();
- reg_val = MDSS_VBIF_READ(mdata, clk_ctrl_off,
- is_nrt_vbif);
+ reg_val = readl_relaxed(mdata->mdp_base + clk_ctrl_off);
reg_val |= BIT(pipe->clk_ctrl.bit_off +
CLK_FORCE_OFF_OFFSET);
- MDSS_VBIF_WRITE(mdata, clk_ctrl_off, reg_val,
- is_nrt_vbif);
+ writel_relaxed(reg_val,
+ mdata->mdp_base + clk_ctrl_off);
}
mutex_unlock(&mdata->reg_lock);
mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF);