diff options
| author | Adrian Salido-Moreno <adrianm@codeaurora.org> | 2015-03-09 19:00:13 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:40:09 -0700 |
| commit | 470f82b66845d2c451edf32d3ef38c84731c01d3 (patch) | |
| tree | e47bc99334f30428bd5bc2d159a636390ba46c49 | |
| parent | 311b9e420dd552093a6079b2434e723bb93e94d4 (diff) | |
mdss: rotator: remove ov_lock for rotator sessions
The ov_lock is meant to protect overlay/display pipeline.
Rotator has a different lock which synchronizes its resources.
Remove the ov_lock for rotator ioctl calls.
Change-Id: Ie38bb796c3430951636f8c6888bca4cfc8194aaf
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_overlay.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index 7f63e8e42709..b73fbd4ddf6f 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -1000,6 +1000,11 @@ static int mdss_mdp_overlay_set(struct msm_fb_data_type *mfd, struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd); int ret; + if (req->flags & MDSS_MDP_ROT_ONLY) { + ret = mdss_mdp_rotator_setup(mfd, req); + return ret; + } + ret = mutex_lock_interruptible(&mdp5_data->ov_lock); if (ret) return ret; @@ -1009,9 +1014,7 @@ static int mdss_mdp_overlay_set(struct msm_fb_data_type *mfd, return -EPERM; } - if (req->flags & MDSS_MDP_ROT_ONLY) { - ret = mdss_mdp_rotator_setup(mfd, req); - } else if (req->src.format == MDP_RGB_BORDERFILL) { + if (req->src.format == MDP_RGB_BORDERFILL) { req->id = BORDERFILL_NDX; } else { struct mdss_mdp_pipe *pipe; @@ -1980,6 +1983,11 @@ static int mdss_mdp_overlay_unset(struct msm_fb_data_type *mfd, int ndx) if (!mdp5_data || !mdp5_data->ctl) return -ENODEV; + if (ndx & MDSS_MDP_ROT_SESSION_MASK) { + ret = mdss_mdp_rotator_unset(ndx); + return ret; + } + ret = mutex_lock_interruptible(&mdp5_data->ov_lock); if (ret) return ret; @@ -1998,11 +2006,7 @@ static int mdss_mdp_overlay_unset(struct msm_fb_data_type *mfd, int ndx) pr_debug("unset ndx=%x\n", ndx); - if (ndx & MDSS_MDP_ROT_SESSION_MASK) { - ret = mdss_mdp_rotator_unset(ndx); - } else { - ret = mdss_mdp_overlay_release(mfd, ndx); - } + ret = mdss_mdp_overlay_release(mfd, ndx); done: mutex_unlock(&mdp5_data->ov_lock); @@ -2145,6 +2149,11 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd, pr_debug("play req id=%x\n", req->id); + if (req->id & MDSS_MDP_ROT_SESSION_MASK) { + ret = mdss_mdp_rotator_play(mfd, req); + return ret; + } + ret = mutex_lock_interruptible(&mdp5_data->ov_lock); if (ret) return ret; @@ -2154,9 +2163,7 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd, goto done; } - if (req->id & MDSS_MDP_ROT_SESSION_MASK) { - ret = mdss_mdp_rotator_play(mfd, req); - } else if (req->id == BORDERFILL_NDX) { + if (req->id == BORDERFILL_NDX) { pr_debug("borderfill enable\n"); mdp5_data->borderfill_enable = true; ret = mdss_mdp_overlay_free_fb_pipe(mfd); |
