summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Salido-Moreno <adrianm@codeaurora.org>2015-03-09 19:00:13 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:40:09 -0700
commit470f82b66845d2c451edf32d3ef38c84731c01d3 (patch)
treee47bc99334f30428bd5bc2d159a636390ba46c49
parent311b9e420dd552093a6079b2434e723bb93e94d4 (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.c29
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);