Merge "disp: msm: dsi: Panic on getting continuous ESD check failures"

此提交包含在:
qctecmdr
2020-09-29 09:59:58 -07:00
提交者 Gerrit - the friendly Code Review server
當前提交 90c3cec488
共有 2 個檔案被更改,包括 32 行新增1 行删除

查看文件

@@ -2380,6 +2380,8 @@ static void _sde_connector_report_panel_dead(struct sde_connector *conn,
bool skip_pre_kickoff)
{
struct drm_event event;
struct dsi_display *display;
u32 const max_conseq_esd_fail_count = 5;
if (!conn)
return;
@@ -2403,6 +2405,17 @@ static void _sde_connector_report_panel_dead(struct sde_connector *conn,
conn->base.dev, &event, (u8 *)&conn->panel_dead);
SDE_ERROR("esd check failed report PANEL_DEAD conn_id: %d enc_id: %d\n",
conn->base.base.id, conn->encoder->base.id);
if (conn->connector_type != DRM_MODE_CONNECTOR_DSI)
return;
display = (struct dsi_display *)conn->display;
display->esd_fail_count++;
if (display->esd_fail_count == max_conseq_esd_fail_count) {
SDE_ERROR("Triggered reset on multiple PANEL_DEAD instances\n");
SDE_DBG_DUMP("all", "dbg_bus", "dsi_dbg_bus",
"vbif_dbg_bus", "panic");
}
}
int sde_connector_esd_status(struct drm_connector *conn)
@@ -2440,8 +2453,16 @@ int sde_connector_esd_status(struct drm_connector *conn)
SDE_DEBUG("Successfully received TE from panel\n");
ret = 0;
}
SDE_EVT32(ret);
if (sde_conn->connector_type == DRM_MODE_CONNECTOR_DSI) {
/* Reset esd_fail_count on recovery */
if (!ret)
display->esd_fail_count = 0;
SDE_EVT32(ret, display->esd_fail_count);
return ret;
}
SDE_EVT32(ret);
return ret;
}
@@ -2450,6 +2471,7 @@ static void sde_connector_check_status_work(struct work_struct *work)
struct sde_connector *conn;
int rc = 0;
struct device *dev;
struct dsi_display *display;
conn = container_of(to_delayed_work(work),
struct sde_connector, status_work);
@@ -2482,6 +2504,12 @@ static void sde_connector_check_status_work(struct work_struct *work)
conn->esd_status_interval : STATUS_CHECK_INTERVAL_MS;
schedule_delayed_work(&conn->status_work,
msecs_to_jiffies(interval));
/* Successful ESD check */
if (conn->connector_type == DRM_MODE_CONNECTOR_DSI) {
display = conn->display;
display->esd_fail_count = 0;
}
return;
}