diff options
| author | Adrian Salido-Moreno <adrianm@codeaurora.org> | 2014-02-13 13:14:14 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:26:42 -0700 |
| commit | fd1dff9bf6881e60d524d0b6675a3fece5bc8fa3 (patch) | |
| tree | 70d7034069f5b5d0835ad955ef6abcdd5285a241 | |
| parent | bc487b64a729aa4315f5a7eb47a3305610465a5c (diff) | |
msm: mdss: ensure atomic access to pipe clock management
While accessing pipe clock status registers, need to ensure that updates
happen atomically while reading and changing the register value. Also
need to ensure mdp clock is enabled to access these registers.
Change-Id: I36aef4332633c33e9ce0f367a20d1b2a8824acd8
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_pipe.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_pipe.c b/drivers/video/fbdev/msm/mdss_mdp_pipe.c index 535c67fe2eb6..b9b6c8aea417 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_pipe.c +++ b/drivers/video/fbdev/msm/mdss_mdp_pipe.c @@ -564,6 +564,8 @@ static struct mdss_mdp_pipe *mdss_mdp_pipe_init(struct mdss_mdp_mixer *mixer, if (mdss_mdp_pipe_is_sw_reset_available(mdata)) { force_off_mask = BIT(pipe->clk_ctrl.bit_off + CLK_FORCE_OFF_OFFSET); + mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON, false); + mutex_lock(&mdata->reg_lock); reg_val = readl_relaxed(mdata->mdp_base + pipe->clk_ctrl.reg_off); if (reg_val & force_off_mask) { @@ -571,6 +573,8 @@ static struct mdss_mdp_pipe *mdss_mdp_pipe_init(struct mdss_mdp_mixer *mixer, writel_relaxed(reg_val, mdata->mdp_base + pipe->clk_ctrl.reg_off); } + mutex_unlock(&mdata->reg_lock); + mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); } if (pipe) { |
