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:
parent
fec225ae45
commit
3f62bc4e09
1 changed files with 11 additions and 1 deletions
|
@ -3352,8 +3352,18 @@ int mdss_mdp_cmd_stop(struct mdss_mdp_ctl *ctl, int panel_power_state)
|
||||||
* mode.
|
* mode.
|
||||||
*/
|
*/
|
||||||
send_panel_events = true;
|
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;
|
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 {
|
} else {
|
||||||
/* Transitions between low power and ultra low power */
|
/* Transitions between low power and ultra low power */
|
||||||
if (mdss_panel_is_power_on_ulp(panel_power_state)) {
|
if (mdss_panel_is_power_on_ulp(panel_power_state)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue