diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c index 2a0779e739d5..7b58ae8c5300 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_host.c +++ b/drivers/video/fbdev/msm/mdss_dsi_host.c @@ -2059,6 +2059,7 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) struct mdss_rect *roi = NULL; int ret = -EINVAL; int rc = 0; + bool hs_req = false; if (mdss_get_sd_client_cnt()) return -EPERM; @@ -2075,8 +2076,8 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) MDSS_XLOG(ctrl->ndx, from_mdp, ctrl->mdp_busy, current->pid, XLOG_FUNC_ENTRY); - if (req == NULL) - goto need_lock; + if (req && (req->flags & CMD_REQ_HS_MODE)) + hs_req = true; /* make sure dsi_cmd_mdp is idle */ mdss_dsi_cmd_mdp_busy(ctrl); @@ -2098,11 +2099,13 @@ int mdss_dsi_cmdlist_commit(struct mdss_dsi_ctrl_pdata *ctrl, int from_mdp) } } else { /* from dcs send */ if (ctrl->shared_data->cmd_clk_ln_recovery_en && - ctrl->panel_mode == DSI_CMD_MODE && - (req->flags & CMD_REQ_HS_MODE)) + ctrl->panel_mode == DSI_CMD_MODE && hs_req) mdss_dsi_cmd_start_hs_clk_lane(ctrl); } + if (!req) + goto need_lock; + MDSS_XLOG(ctrl->ndx, req->flags, req->cmds_cnt, from_mdp, current->pid); /*