Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 449cd877 authored by Jeevan Shriram's avatar Jeevan Shriram
Browse files

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: default avatarJeevan Shriram <jshriram@codeaurora.org>
parent 9afe9866
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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",