disp: msm: dsi: invoke DSI soft reset when video engine is stuck

During ESD check failure, DSI video engine can get stuck
sending data from display engine. In use cases where GDSC
toggle does not happen like DP MST connected or secure video
playback, display does not recover back after ESD failure.
This change adds support to perform soft reset when DSI
video engine gets stuck.

Change-Id: I9cb31e6c71c4da171f9fe22fc3bee9175711831d
Signed-off-by: Ritesh Kumar <riteshk@codeaurora.org>
Cette révision appartient à :
Ritesh Kumar
2020-10-21 16:56:35 +05:30
Parent 3668566409
révision 97dcdc695a
5 fichiers modifiés avec 35 ajouts et 2 suppressions

Voir le fichier

@@ -1687,3 +1687,18 @@ int dsi_ctrl_hw_cmn_wait4dynamic_refresh_done(struct dsi_ctrl_hw *ctrl)
return 0;
}
bool dsi_ctrl_hw_cmn_vid_engine_busy(struct dsi_ctrl_hw *ctrl)
{
u32 reg = 0, video_engine_busy = BIT(3);
int rc;
u32 const sleep_us = 1000;
u32 const timeout_us = 50000;
rc = readl_poll_timeout(ctrl->base + DSI_STATUS, reg,
!(reg & video_engine_busy), sleep_us, timeout_us);
if (rc)
return true;
return false;
}