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

Cette révision appartient à :
qctecmdr
2020-10-22 11:28:20 -07:00
révisé par Gerrit - the friendly Code Review server
révision a27dce97f8
5 fichiers modifiés avec 35 ajouts et 2 suppressions

Voir le fichier

@@ -3703,6 +3703,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");
@@ -3722,9 +3723,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);
}