From bcd04f60da5128a6f85340831f55c8180b6e6027 Mon Sep 17 00:00:00 2001 From: Satya Rama Aditya Pinapala Date: Tue, 28 Sep 2021 10:41:38 -0700 Subject: [PATCH] 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 --- msm/dsi/dsi_display.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index eb68770b9c..1cd9dc991b 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -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;