diff options
| author | Adrian Salido-Moreno <adrianm@codeaurora.org> | 2014-11-24 13:59:34 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:36:31 -0700 |
| commit | 8076470c9f26c9d4be7635bcabd505d8033a9515 (patch) | |
| tree | da1de662ecc80753f22e4996832d8e5ff9dacabc | |
| parent | 147369ad56b299312ff7040ab7871f275e4dab5a (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.c | 20 |
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); |
