disp: msm: dsi: trigger broadcast commands using DMA start window

As per the HW requirements it is highly recommended to use DMA start
window to trigger  broadcast commands. If not used then it can
result in a hardware hang with the DSI controllers going out
of sync. This behavior is even more prominent in cases of higher
refresh rates. As part of the change we change the default DMA
scheduling behavior to default to maximum possible DMA window
in case it is not specified in the panel device tree.

Change-Id: Ied4df9063664cedbc18ce009054d4e5ecae30ab2
Signed-off-by: Satya Rama Aditya Pinapala <psraditya30@codeaurora.org>
This commit is contained in:
Satya Rama Aditya Pinapala
2020-11-25 15:11:17 -08:00
parent ee8ad711e9
commit ae5b602b4f
6 changed files with 26 additions and 14 deletions

View File

@@ -1319,17 +1319,16 @@ static void dsi_configure_command_scheduling(struct dsi_ctrl *dsi_ctrl,
}
/*
* In case of command scheduling in command mode, the window size
* is reset to zero, if the total scheduling window is greater
* than the panel height.
* In case of command scheduling in command mode, set the maximum
* possible size of the DMA start window in case no schedule line and
* window size properties are defined by the panel.
*/
if ((dsi_ctrl->host_config.panel_mode == DSI_OP_CMD_MODE) &&
dsi_hw_ops.configure_cmddma_window) {
sched_line_no = line_no;
if ((sched_line_no + window) > timing->v_active)
window = 0;
sched_line_no = (line_no == 0) ? TEARCHECK_WINDOW_SIZE :
line_no;
window = (window == 0) ? timing->v_active : window;
sched_line_no += timing->v_active;
dsi_hw_ops.configure_cmddma_window(&dsi_ctrl->hw, cmd_mem,