disp: msm: dsi: flush CMD DMA of all ctrls in case of previous broadcast
We currently wait for the completion of previous ASYNC command transfers on a controller before initiating a new command transfer on that controller. However, in the case of split DSI usage, the controllers can encounter issues if a unicast command transfer occurs before the previous broadcast is complete on both controller. To prevent this issue, it’s required to flush the CMD DMA of both controllers before initiating the unicast command transfer following a previous broadcast. Change-Id: If2830bea81e32ab26d3b91754bcdf047c3cba483 Signed-off-by: Srihitha Tangudu <quic_tangudu@quicinc.com>
This commit is contained in:

committed by
Anand Tarakh

父節點
89c5866e4b
當前提交
5c4f488f8a
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
@@ -3450,6 +3450,17 @@ int dsi_host_transfer_sub(struct mipi_dsi_host *host, struct dsi_cmd_desc *cmd)
|
||||
|
||||
dsi_display_set_cmd_tx_ctrl_flags(display, cmd);
|
||||
|
||||
/*
|
||||
* Wait until any previous broadcast commands with ASYNC waits have been scheduled
|
||||
* and completed on both controllers.
|
||||
*/
|
||||
display_for_each_ctrl(i, display) {
|
||||
ctrl = &display->ctrl[i];
|
||||
if ((ctrl->ctrl->pending_cmd_flags & DSI_CTRL_CMD_BROADCAST) &&
|
||||
ctrl->ctrl->post_tx_queued)
|
||||
dsi_ctrl_flush_cmd_dma_queue(ctrl->ctrl);
|
||||
}
|
||||
|
||||
if (cmd->ctrl_flags & DSI_CTRL_CMD_BROADCAST) {
|
||||
rc = dsi_display_broadcast_cmd(display, cmd);
|
||||
if (rc) {
|
||||
|
Reference in New Issue
Block a user