msm: mdss: wait for pp done when switching from ON to LP1

If a low power mode switch is initiated while a kickoff is
in progress, the panel could be turned off before the
current frame transfer is completed causing a display hang.
This change recognizes this case and waits for the current
frame to finish before initiating the power state switch.

Change-Id: Ieea32acd67c56a7ed8a83ff92c3b49ad76d70086
Signed-off-by: Rajkumar Subbiah <rsubbia@codeaurora.org>
This commit is contained in:
Rajkumar Subbiah 2017-03-27 13:17:24 -04:00 committed by Gerrit - the friendly Code Review server
parent fec225ae45
commit 3f62bc4e09

View file

@ -3352,8 +3352,18 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state)
* mode.
*/
send_panel_events = true;
if (mdss_panel_is_power_on_ulp(panel_power_state))
if (mdss_panel_is_power_on_ulp(panel_power_state)) {
turn_off_clocks = true;
} else if (atomic_read(&ctx->koff_cnt)) {
/*
* Transition from interactive to low power
* Wait for kickoffs to finish
*/
MDSS_XLOG(ctl->num, atomic_read(&ctx->koff_cnt));
mdss_mdp_cmd_wait4pingpong(ctl, NULL);
if (sctl)
mdss_mdp_cmd_wait4pingpong(sctl, NULL);
}
} else {
/* Transitions between low power and ultra low power */
if (mdss_panel_is_power_on_ulp(panel_power_state)) {