msm: mdss: unstage pipes after entering display recovery sequence
When there are any issues halting pipes during free, we go into recovery sequence where pipes that cannot be cleaned up are forcefully staged to get recovered. After this we need to remove them to complete recovery sequence, otherwise it will remain active which is not the intention. Also add check to ensure we catch such cases for all dual mixer cases. Change-Id: If9fb04130de286eb1bf9a8171461df693dc2493d Signed-off-by: Adrian Salido-Moreno <adrianm@codeaurora.org>
This commit is contained in:
parent
b088d2f6a0
commit
b9ccfec1e8
2 changed files with 18 additions and 6 deletions
|
@ -1366,9 +1366,11 @@ static void __overlay_kickoff_requeue(struct msm_fb_data_type *mfd)
|
|||
mdss_mdp_display_commit(ctl, NULL, NULL);
|
||||
mdss_mdp_display_wait4comp(ctl);
|
||||
|
||||
ATRACE_BEGIN("sspp_programming");
|
||||
/* unstage any recovery pipes and re-queue used pipes */
|
||||
mdss_mdp_mixer_unstage_all(ctl->mixer_left);
|
||||
mdss_mdp_mixer_unstage_all(ctl->mixer_right);
|
||||
|
||||
__overlay_queue_pipes(mfd);
|
||||
ATRACE_END("sspp_programming");
|
||||
|
||||
mdss_mdp_display_commit(ctl, NULL, NULL);
|
||||
mdss_mdp_display_wait4comp(ctl);
|
||||
|
|
|
@ -1091,13 +1091,23 @@ static bool mdss_mdp_check_pipe_in_use(struct mdss_mdp_pipe *pipe)
|
|||
continue;
|
||||
|
||||
mixer = ctl->mixer_left;
|
||||
if (!mixer || mixer->rotator_mode)
|
||||
if (mixer && mixer->rotator_mode)
|
||||
continue;
|
||||
|
||||
mixercfg = mdss_mdp_get_mixercfg(mixer);
|
||||
if ((mixercfg & stage_off_mask) && ctl->play_cnt) {
|
||||
pr_err("BUG. pipe%d is active. mcfg:0x%x mask:0x%x\n",
|
||||
pipe->num, mixercfg, stage_off_mask);
|
||||
if (mixercfg & stage_off_mask) {
|
||||
pr_err("IN USE: mixer=%d pipe=%d mcfg:0x%x mask:0x%x\n",
|
||||
mixer->num, pipe->num,
|
||||
mixercfg, stage_off_mask);
|
||||
BUG();
|
||||
}
|
||||
|
||||
mixer = ctl->mixer_right;
|
||||
mixercfg = mdss_mdp_get_mixercfg(mixer);
|
||||
if (mixercfg & stage_off_mask) {
|
||||
pr_err("IN USE: mixer=%d pipe=%d mcfg:0x%x mask:0x%x\n",
|
||||
mixer->num, pipe->num,
|
||||
mixercfg, stage_off_mask);
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue