diff options
author | Dhaval Patel <pdhaval@codeaurora.org> | 2016-03-03 13:50:52 -0800 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:02:59 -0700 |
commit | 43181da2a11a3ea335234573f15fddb3e276eb0d (patch) | |
tree | d3ac50ee30dd08292c54e35c12a21513e01d04e8 /drivers | |
parent | 06318cbfa1eeb9c0d4a6d5e256733e046710b2db (diff) |
msm: mdss: fix mdp busy wait race condition
DSI software does not wait for MDP_DONE ISR
before sending new frame if burst mode feature is
enabled. It leads to race condition in below case
* MDP kicks off frame-N and mdp_busy sets to true
* MDP receives new frame-N+1 and waits for
PP_DONE interrupt before sending N+1 frame.
* MDP receives PP_DONE interrupt and kicks off
frame-N+1 (DSI_MDP_DONE interrupt is not received yet).
* Frame-N+1 kickoff sets the mdp_busy wait to true.
* DSI receives DSI_MDP_DONE interrupt for frame-N and
reset the mdp_busy to false.
* Any clock off call can turn off the clock at this moment.
DSI software must always execute busy_wait when kickoff
happens from mdp. That avoids the busy wait race condition.
Change-Id: I462cd5ad21d6ccc08dfb862e98fd6fafeef686d4
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_host.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c index f0652870c582..8a552c09544f 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_host.c +++ b/drivers/video/fbdev/msm/mdss_dsi_host.c @@ -2487,8 +2487,7 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) if (req && (req->flags & CMD_REQ_HS_MODE)) hs_req = true; - if (!ctrl->burst_mode_enabled || - (from_mdp && ctrl->shared_data->cmd_clk_ln_recovery_en)) { + if ((!ctrl->burst_mode_enabled) || from_mdp) { /* make sure dsi_cmd_mdp is idle */ mdss_dsi_cmd_mdp_busy(ctrl); } |