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:
@@ -995,7 +995,7 @@ static int dsi_display_cmd_rx(struct dsi_display *display,
|
||||
flags |= (DSI_CTRL_CMD_FETCH_MEMORY | DSI_CTRL_CMD_READ);
|
||||
if ((m_ctrl->ctrl->host_config.panel_mode == DSI_OP_VIDEO_MODE) ||
|
||||
((cmd->msg.flags & MIPI_DSI_MSG_CMD_DMA_SCHED) &&
|
||||
(display->panel->panel_initialized)))
|
||||
(display->enabled)))
|
||||
flags |= DSI_CTRL_CMD_CUSTOM_DMA_SCHED;
|
||||
|
||||
rc = dsi_ctrl_cmd_transfer(m_ctrl->ctrl, &cmd->msg, &flags);
|
||||
@@ -3084,8 +3084,12 @@ static int dsi_display_broadcast_cmd(struct dsi_display *display,
|
||||
m_flags |= DSI_CTRL_CMD_LAST_COMMAND;
|
||||
}
|
||||
|
||||
if ((msg->flags & MIPI_DSI_MSG_CMD_DMA_SCHED) &&
|
||||
(display->panel->panel_initialized)) {
|
||||
/*
|
||||
* During broadcast command dma scheduling is always recommended.
|
||||
* As long as the display is enabled and TE is running the
|
||||
* DSI_CTRL_CMD_CUSTOM_DMA_SCHED flag should be set.
|
||||
*/
|
||||
if (display->enabled) {
|
||||
flags |= DSI_CTRL_CMD_CUSTOM_DMA_SCHED;
|
||||
m_flags |= DSI_CTRL_CMD_CUSTOM_DMA_SCHED;
|
||||
}
|
||||
@@ -3261,7 +3265,7 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_host *host,
|
||||
cmd_flags |= DSI_CTRL_CMD_ASYNC_WAIT;
|
||||
|
||||
if ((msg->flags & MIPI_DSI_MSG_CMD_DMA_SCHED) &&
|
||||
(display->panel->panel_initialized))
|
||||
(display->enabled))
|
||||
cmd_flags |= DSI_CTRL_CMD_CUSTOM_DMA_SCHED;
|
||||
|
||||
rc = dsi_ctrl_cmd_transfer(display->ctrl[ctrl_idx].ctrl, msg,
|
||||
|
Reference in New Issue
Block a user