diff options
| author | Jayant Shekhar <jshekhar@codeaurora.org> | 2014-05-07 20:09:28 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:29:42 -0700 |
| commit | c6d38586a759212b5cd73342c7ac5bf74dcee012 (patch) | |
| tree | e886526c9f76ca64386274ef6f4e11850e3b2e1b | |
| parent | 5d518cef788c38ad026aff194c3d1eee69ad0c6d (diff) | |
msm: mdss: Acquire shared lock after getting frame on wfd
Currently there is a deadlock when wfd and rotation is done
simultaneously and trying to acquire the shared lock. To
prevent this, acquire shared lock after rotated frame is
ready for wfd.
Change-Id: I3865f02c345ddadd985ee35134454a789936a79a
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 3 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_overlay.c | 9 |
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index 620b41dbf153..138d43c9e0df 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -2746,7 +2746,8 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) } } - mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_READY); + if (!ctl->shared_lock) + mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_READY); if (ctl->wait_pingpong) ctl->wait_pingpong(ctl, NULL); diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index d2795d3e9cf1..74401cdc34d5 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -1297,8 +1297,11 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd, int ret = 0; int sd_in_pipe = 0; - if (ctl->shared_lock) + if (ctl->shared_lock) { + mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_BEGIN); + mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_READY); mutex_lock(ctl->shared_lock); + } mutex_lock(&mdp5_data->ov_lock); mutex_lock(&mdp5_data->list_lock); @@ -1322,7 +1325,9 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd, mdp5_data->sd_enabled = 0; } - mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_BEGIN); + if (!ctl->shared_lock) + mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_BEGIN); + mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON, false); if (data) |
