msm: mdss: try recovering from pingpong timeout without panic
In the current implementation, as soon as the ping pong timeout happens, driver dumps the relevant logs for debugging and panic. It is possible to recover from this situation without panic by performing MDSS control reset and panel write pointer reset. This change tries to recover from pingpong timeout. If the recovery is not successful for 10 consecutive frames, uevent is sent to HAL layer for performing blank and unblank of display driver. Change-Id: Iadc929a79a62bbf222b9022af5cf04f870079ded Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
This commit is contained in:
parent
0fae3b24d9
commit
e95e4f1d5c
1 changed files with 5 additions and 2 deletions
|
@ -20,7 +20,7 @@
|
|||
#include "mdss_mdp_trace.h"
|
||||
|
||||
#define VSYNC_EXPIRE_TICK 6
|
||||
|
||||
#define MAX_RECOVERY_TRIALS 10
|
||||
#define MAX_SESSIONS 2
|
||||
|
||||
#define SPLIT_MIXER_OFFSET 0x800
|
||||
|
@ -689,7 +689,10 @@ static int mdss_mdp_cmd_wait4pingpong(struct mdss_mdp_ctl *ctl, void *arg)
|
|||
}
|
||||
|
||||
if (rc <= 0) {
|
||||
if (!ctx->pp_timeout_report_cnt) {
|
||||
if (ctx->pp_timeout_report_cnt == 0) {
|
||||
MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
|
||||
"dsi1_ctrl", "dsi1_phy");
|
||||
} else if (ctx->pp_timeout_report_cnt == MAX_RECOVERY_TRIALS) {
|
||||
WARN(1, "cmd kickoff timed out (%d) ctl=%d\n",
|
||||
rc, ctl->num);
|
||||
MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
|
||||
|
|
Loading…
Add table
Reference in a new issue