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>
This commit is contained in:
@@ -3683,6 +3683,7 @@ int dsi_ctrl_set_vid_engine_state(struct dsi_ctrl *dsi_ctrl,
|
||||
{
|
||||
int rc = 0;
|
||||
bool on;
|
||||
bool vid_eng_busy;
|
||||
|
||||
if (!dsi_ctrl || (state >= DSI_CTRL_ENGINE_MAX)) {
|
||||
DSI_CTRL_ERR(dsi_ctrl, "Invalid params\n");
|
||||
@@ -3702,9 +3703,17 @@ int dsi_ctrl_set_vid_engine_state(struct dsi_ctrl *dsi_ctrl,
|
||||
if (!skip_op) {
|
||||
on = (state == DSI_CTRL_ENGINE_ON) ? true : false;
|
||||
dsi_ctrl->hw.ops.video_engine_en(&dsi_ctrl->hw, on);
|
||||
vid_eng_busy = dsi_ctrl->hw.ops.vid_engine_busy(&dsi_ctrl->hw);
|
||||
|
||||
/* perform a reset when turning off video engine */
|
||||
if (!on && dsi_ctrl->version < DSI_CTRL_VERSION_1_3)
|
||||
/*
|
||||
* 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.
|
||||
* Perform a reset if video engine is stuck.
|
||||
*/
|
||||
if (!on && (dsi_ctrl->version < DSI_CTRL_VERSION_1_3 ||
|
||||
vid_eng_busy))
|
||||
dsi_ctrl->hw.ops.soft_reset(&dsi_ctrl->hw);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user