disp: msm: dsi: swap DSI timing engine programming and ROI cmd tx
The ROI commands are sent with an asynchronous command transfer wait. If the queued CMD DMA wait for done gets scheduled before the DSI controller timing engine programming, the later will be blocked waiting on the ctrl_lock, which was acquired by the queued DMA wait for done work. This effectively negates any advantage of having the async wait flag for ROI commands blocking the main commit thread. The change swaps this order to ensure that such a scenario never happens. Change-Id: I8a971c0c7733eea3d435b637ca41b34fa60adfc1 Signed-off-by: Satya Rama Aditya Pinapala <psraditya30@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
c460ffbd27
commit
bcd04f60da
@@ -8135,19 +8135,19 @@ static int dsi_display_set_roi(struct dsi_display *display,
|
||||
if (!changed)
|
||||
continue;
|
||||
|
||||
/* send the new roi to the panel via dcs commands */
|
||||
rc = dsi_panel_send_roi_dcs(display->panel, i, &ctrl_roi);
|
||||
if (rc) {
|
||||
DSI_ERR("dsi_panel_set_roi failed rc %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* re-program the ctrl with the timing based on the new roi */
|
||||
rc = dsi_ctrl_timing_setup(ctrl->ctrl);
|
||||
if (rc) {
|
||||
DSI_ERR("dsi_ctrl_setup failed rc %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* send the new roi to the panel via dcs commands */
|
||||
rc = dsi_panel_send_roi_dcs(display->panel, i, &ctrl_roi);
|
||||
if (rc) {
|
||||
DSI_ERR("dsi_panel_set_roi failed rc %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
Reference in New Issue
Block a user