Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcba699d authored by Kalyan Thota's avatar Kalyan Thota Committed by Krishna Chaitanya Devarakonda
Browse files

msm: mdss: avoid requesting ov_lock in esd thread



From DSI HW version 103 onwards, for smart panels command and
data arbitration is possible in the h/w with the help of burst mode
feature in DSI controller. Hence removing the synchronization
mechanism which can cause performance issues.

CRs-Fixed: 1042240

Change-Id: I8eeb3508e2258318538e893069a2c74c068026fc
Signed-off-by: default avatarKalyan Thota <kalyant@codeaurora.org>
parent 638d25fd
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -123,16 +123,20 @@ void mdss_check_dsi_ctrl_status(struct work_struct *work, uint32_t interval)
	 * to acquire ov_lock in case of video mode. Removing this
	 * lock to fix issues so that ESD thread would not block other
	 * overlay operations. Need refine this lock for command mode
	 *
	 * If Burst mode is enabled then we dont have to acquire ov_lock as
	 * command and data arbitration is possible in h/w
	 */

	if (mipi->mode == DSI_CMD_MODE)
	if ((mipi->mode == DSI_CMD_MODE) && !ctrl_pdata->burst_mode_enabled)
		mutex_lock(&mdp5_data->ov_lock);
	mutex_lock(&ctl->offlock);

	if (mdss_panel_is_power_off(pstatus_data->mfd->panel_power_state) ||
			pstatus_data->mfd->shutdown_pending) {
		mutex_unlock(&ctl->offlock);
		if (mipi->mode == DSI_CMD_MODE)
		if ((mipi->mode == DSI_CMD_MODE) &&
		    !ctrl_pdata->burst_mode_enabled)
			mutex_unlock(&mdp5_data->ov_lock);
		pr_err("%s: DSI turning off, avoiding panel status check\n",
							__func__);
@@ -149,7 +153,7 @@ void mdss_check_dsi_ctrl_status(struct work_struct *work, uint32_t interval)
	 * display reset not to be proper. Hence, wait for DMA_P done
	 * for command mode panels before triggering BTA.
	 */
	if (ctl->ops.wait_pingpong)
	if (ctl->ops.wait_pingpong && !ctrl_pdata->burst_mode_enabled)
		ctl->ops.wait_pingpong(ctl, NULL);

	pr_debug("%s: DSI ctrl wait for ping pong done\n", __func__);
@@ -159,7 +163,7 @@ void mdss_check_dsi_ctrl_status(struct work_struct *work, uint32_t interval)
	mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF);

	mutex_unlock(&ctl->offlock);
	if (mipi->mode == DSI_CMD_MODE)
	if ((mipi->mode == DSI_CMD_MODE) && !ctrl_pdata->burst_mode_enabled)
		mutex_unlock(&mdp5_data->ov_lock);

	if ((pstatus_data->mfd->panel_power_state == MDSS_PANEL_POWER_ON)) {