|
@@ -370,13 +370,6 @@ static void dsi_ctrl_dma_cmd_wait_for_done(struct dsi_ctrl *dsi_ctrl)
|
|
|
dsi_hw_ops = dsi_ctrl->hw.ops;
|
|
|
SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY);
|
|
|
|
|
|
- /*
|
|
|
- * This atomic state will be set if ISR has been triggered,
|
|
|
- * so the wait is not needed.
|
|
|
- */
|
|
|
- if (atomic_read(&dsi_ctrl->dma_irq_trig))
|
|
|
- return;
|
|
|
-
|
|
|
ret = wait_for_completion_timeout(
|
|
|
&dsi_ctrl->irq_info.cmd_dma_done,
|
|
|
msecs_to_jiffies(DSI_CTRL_TX_TO_MS));
|
|
@@ -397,6 +390,7 @@ static void dsi_ctrl_dma_cmd_wait_for_done(struct dsi_ctrl *dsi_ctrl)
|
|
|
dsi_ctrl_disable_status_interrupt(dsi_ctrl,
|
|
|
DSI_SINT_CMD_MODE_DMA_DONE);
|
|
|
}
|
|
|
+ SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_EXIT);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -439,7 +433,8 @@ static void dsi_ctrl_post_cmd_transfer(struct dsi_ctrl *dsi_ctrl)
|
|
|
if ((dsi_ctrl->pending_cmd_flags & DSI_CTRL_CMD_BROADCAST) &&
|
|
|
!(dsi_ctrl->pending_cmd_flags & DSI_CTRL_CMD_BROADCAST_MASTER)) {
|
|
|
dsi_ctrl_clear_dma_status(dsi_ctrl);
|
|
|
- } else {
|
|
|
+ } else if (!(dsi_ctrl->pending_cmd_flags & DSI_CTRL_CMD_READ)) {
|
|
|
+ /* Wait for read command transfer to complete is done in dsi_message_rx. */
|
|
|
dsi_ctrl_dma_cmd_wait_for_done(dsi_ctrl);
|
|
|
}
|
|
|
|
|
@@ -1507,7 +1502,7 @@ static int dsi_message_tx(struct dsi_ctrl *dsi_ctrl, struct dsi_cmd_desc *cmd_de
|
|
|
goto error;
|
|
|
}
|
|
|
|
|
|
- SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, *flags);
|
|
|
+ SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, *flags, dsi_ctrl->cmd_len);
|
|
|
|
|
|
if (*flags & DSI_CTRL_CMD_NON_EMBEDDED_MODE) {
|
|
|
cmd_mem.offset = dsi_ctrl->cmd_buffer_iova;
|
|
@@ -2957,7 +2952,10 @@ void dsi_ctrl_enable_status_interrupt(struct dsi_ctrl *dsi_ctrl,
|
|
|
intr_idx >= DSI_STATUS_INTERRUPT_COUNT)
|
|
|
return;
|
|
|
|
|
|
- SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, intr_idx);
|
|
|
+ SDE_EVT32(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, intr_idx,
|
|
|
+ dsi_ctrl->irq_info.irq_num, dsi_ctrl->irq_info.irq_stat_mask,
|
|
|
+ dsi_ctrl->irq_info.irq_stat_refcount[intr_idx]);
|
|
|
+
|
|
|
spin_lock_irqsave(&dsi_ctrl->irq_info.irq_lock, flags);
|
|
|
|
|
|
if (dsi_ctrl->irq_info.irq_stat_refcount[intr_idx] == 0) {
|
|
@@ -2990,7 +2988,10 @@ void dsi_ctrl_disable_status_interrupt(struct dsi_ctrl *dsi_ctrl,
|
|
|
if (!dsi_ctrl || intr_idx >= DSI_STATUS_INTERRUPT_COUNT)
|
|
|
return;
|
|
|
|
|
|
- SDE_EVT32_IRQ(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, intr_idx);
|
|
|
+ SDE_EVT32_IRQ(dsi_ctrl->cell_index, SDE_EVTLOG_FUNC_ENTRY, intr_idx,
|
|
|
+ dsi_ctrl->irq_info.irq_num, dsi_ctrl->irq_info.irq_stat_mask,
|
|
|
+ dsi_ctrl->irq_info.irq_stat_refcount[intr_idx]);
|
|
|
+
|
|
|
spin_lock_irqsave(&dsi_ctrl->irq_info.irq_lock, flags);
|
|
|
|
|
|
if (dsi_ctrl->irq_info.irq_stat_refcount[intr_idx])
|