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

Commit c9660db2 authored by Vishnuvardhan Prodduturi's avatar Vishnuvardhan Prodduturi Committed by Sandeep Panda
Browse files

msm: mdss: add HW recommended delay for dfps feature.



When prefetch is enabled, MDSS HW works on 2 vsync
boundaries i.e. mdp_vsync and panel_vsync. In the current
implementation we are only waiting for mdp_vsync and there
might be scenarios where driver is configuring interface
flush before panel_vsync, which might lead to undefined
behavior in MDSS HW. So add the recommended delays before
and after dfps update to avoid such scenarios.

Change-Id: Idc801f7b63ea85d88949c8ded06fae322f90dbdb
Signed-off-by: default avatarVishnuvardhan Prodduturi <vproddut@codeaurora.org>
Signed-off-by: default avatarSandeep Panda <spanda@codeaurora.org>
parent 59a631bc
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -2533,8 +2533,6 @@ static void mdss_dsi_timing_db_ctrl(struct mdss_dsi_ctrl_pdata *ctrl,
		  MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_ON);
	MIPI_OUTP((ctrl->ctrl_base + 0x1e8), enable);
	wmb(); /* ensure timing db is disabled */
	MIPI_OUTP((ctrl->ctrl_base + 0x1e4), enable);
	wmb(); /* ensure timing flush is disabled */
	mdss_dsi_clk_ctrl(ctrl, ctrl->dsi_clk_handle,
		  MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_OFF);
}
+4 −1
Original line number Diff line number Diff line
@@ -1416,6 +1416,8 @@ static int mdss_mdp_video_config_fps(struct mdss_mdp_ctl *ctl, int new_fps)
		}
	}

	/* add HW recommended delay to handle panel_vsync */
	udelay(2000);
	mutex_lock(&ctl->offlock);
	pdata = ctl->panel_data;
	if (pdata == NULL) {
@@ -1545,7 +1547,8 @@ exit_dfps:
				if (rc < 0)
					pr_err("Error in dfps_wait: %d\n", rc);
			}

			/* add HW recommended delay to handle panel_vsync */
			udelay(2000);
			/* Disable interface timing double buffer */
			rc = mdss_mdp_ctl_intf_event(ctl,
				MDSS_EVENT_DSI_TIMING_DB_CTRL,