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

Commit 22d2e04c authored by Veera Sundaram Sankaran's avatar Veera Sundaram Sankaran
Browse files

msm: mdss: dsi: add xlog for BTA DONE and few error messages



Add xlog entry when BTA DONE interrupt is received. And add
proper error messages before panic in few places, to make it
easy to identify the reason and place of the crash.

Change-Id: Ie9e24d2caeff12601058ea3c76af4e3dca0cd09c
Signed-off-by: default avatarVeera Sundaram Sankaran <veeras@codeaurora.org>
parent 8ebfb6cc
Loading
Loading
Loading
Loading
+11 −3
Original line number Original line Diff line number Diff line
@@ -840,7 +840,8 @@ static void mdss_dsi_ctl_phy_reset(struct mdss_dsi_ctrl_pdata *ctrl, u32 event)
		if (i == loop) {
		if (i == loop) {
			MDSS_XLOG(ctrl0->ndx, ln0, 0x1f1f);
			MDSS_XLOG(ctrl0->ndx, ln0, 0x1f1f);
			MDSS_XLOG(ctrl1->ndx, ln1, 0x1f1f);
			MDSS_XLOG(ctrl1->ndx, ln1, 0x1f1f);
			pr_err("Clock lane still in stop state");
			pr_err("%s: Clock lane still in stop state\n",
					__func__);
			MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
			MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
				"dsi1_ctrl", "dsi1_phy", "panic");
				"dsi1_ctrl", "dsi1_phy", "panic");
		}
		}
@@ -911,7 +912,8 @@ static void mdss_dsi_ctl_phy_reset(struct mdss_dsi_ctrl_pdata *ctrl, u32 event)
		}
		}
		if (i == loop) {
		if (i == loop) {
			MDSS_XLOG(ctrl->ndx, ln0, 0x1f1f);
			MDSS_XLOG(ctrl->ndx, ln0, 0x1f1f);
			pr_err("Clock lane still in stop state");
			pr_err("%s: Clock lane still in stop state\n",
					__func__);
			MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
			MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl", "dsi0_phy",
				"dsi1_ctrl", "dsi1_phy", "panic");
				"dsi1_ctrl", "dsi1_phy", "panic");
		}
		}
@@ -2679,6 +2681,8 @@ static int dsi_event_thread(void *data)
						  MDSS_DSI_ALL_CLKS,
						  MDSS_DSI_ALL_CLKS,
						  MDSS_DSI_CLK_OFF);
						  MDSS_DSI_CLK_OFF);
			} else {
			} else {
				pr_err("%s: ctrl recovery not defined\n",
						__func__);
				MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl",
				MDSS_XLOG_TOUT_HANDLER("mdp", "dsi0_ctrl",
				"dsi0_phy", "dsi1_ctrl", "dsi1_phy", "vbif",
				"dsi0_phy", "dsi1_ctrl", "dsi1_phy", "vbif",
				"vbif_nrt", "dbg_bus", "vbif_dbg_bus", "panic");
				"vbif_nrt", "dbg_bus", "vbif_dbg_bus", "panic");
@@ -2913,10 +2917,13 @@ static void __dsi_error_counter(struct dsi_err_container *err_container)
	prev_time = err_container->err_time[prev_index];
	prev_time = err_container->err_time[prev_index];


	if (prev_time &&
	if (prev_time &&
		((curr_time - prev_time) < err_container->err_time_delta))
		((curr_time - prev_time) < err_container->err_time_delta)) {
		pr_err("%s: panic in WQ as dsi error intrs within:%dms\n",
				__func__, err_container->err_time_delta);
		MDSS_XLOG_TOUT_HANDLER_WQ("mdp", "dsi0_ctrl", "dsi0_phy",
		MDSS_XLOG_TOUT_HANDLER_WQ("mdp", "dsi0_ctrl", "dsi0_phy",
			"dsi1_ctrl", "dsi1_phy", "panic");
			"dsi1_ctrl", "dsi1_phy", "panic");
	}
	}
}


void mdss_dsi_error(struct mdss_dsi_ctrl_pdata *ctrl)
void mdss_dsi_error(struct mdss_dsi_ctrl_pdata *ctrl)
{
{
@@ -2970,6 +2977,7 @@ irqreturn_t mdss_dsi_isr(int irq, void *ptr)
	pr_debug("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);
	pr_debug("%s: ndx=%d isr=%x\n", __func__, ctrl->ndx, isr);


	if (isr & DSI_INTR_BTA_DONE) {
	if (isr & DSI_INTR_BTA_DONE) {
		MDSS_XLOG(ctrl->ndx, ctrl->mdp_busy, isr, 0x96);
		spin_lock(&ctrl->mdp_lock);
		spin_lock(&ctrl->mdp_lock);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_BTA_TERM);
		mdss_dsi_disable_irq_nosync(ctrl, DSI_BTA_TERM);
		complete(&ctrl->bta_comp);
		complete(&ctrl->bta_comp);