diff options
| author | Adrian Salido-Moreno <adrianm@codeaurora.org> | 2014-03-17 13:24:05 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:33:18 -0700 |
| commit | ea7e2b048104a61df5c4412cd7397dc0cfdfed8b (patch) | |
| tree | acfd08a2f25b170a16f686ae2b7369ebacd8fdbf /drivers/video/fbdev/msm | |
| parent | b9b85ba1d94b5805ebb1994485c1d6ba0f91b5bf (diff) | |
msm: mdss: ensure rotator work is done before reconfiguring session
When queuing new parameters to rotator, need to ensure that current work
is done before reconfiguring pipe parameters, otherwise there may be a
mismatch on parameters with the buffers programmed once work is
scheduled.
Change-Id: I258aedca82bb10498d0ef4cbaa697a29c3c34a99
Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev/msm')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_rotator.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_rotator.c b/drivers/video/fbdev/msm/mdss_mdp_rotator.c index 5750cbd2faa4..1cf1fba24d0c 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_rotator.c +++ b/drivers/video/fbdev/msm/mdss_mdp_rotator.c @@ -526,13 +526,18 @@ int mdss_mdp_rotator_setup(struct msm_fb_data_type *mfd, list_add(&rot->list, &mdp5_data->rot_proc_list); } else if (req->id & MDSS_MDP_ROT_SESSION_MASK) { rot = mdss_mdp_rotator_session_get(req->id); - if (!rot) { pr_err("rotator session=%x not found\n", req->id); ret = -ENODEV; goto rot_err; } + if (work_pending(&rot->commit_work)) { + mutex_unlock(&rotator_lock); + flush_work(&rot->commit_work); + mutex_lock(&rotator_lock); + } + if (rot->format != fmt->format) format_changed = true; @@ -648,6 +653,12 @@ static int mdss_mdp_rotator_finish(struct mdss_mdp_rotator_session *rot) rot_pipe = rot->pipe; if (rot_pipe) { + if (work_pending(&rot->commit_work)) { + mutex_unlock(&rotator_lock); + cancel_work_sync(&rot->commit_work); + mutex_lock(&rotator_lock); + } + mdss_mdp_rotator_busy_wait(rot); list_del(&rot->head); } |
