Loading msm/dsi/dsi_ctrl.c +15 −2 Original line number Diff line number Diff line Loading @@ -1373,8 +1373,21 @@ static void dsi_kickoff_msg_tx(struct dsi_ctrl *dsi_ctrl, dsi_hw_ops.reset_trig_ctrl(&dsi_ctrl->hw, &dsi_ctrl->host_config.common_config); /* check if custom dma scheduling line needed */ if (flags & DSI_CTRL_CMD_CUSTOM_DMA_SCHED) /* * Always enable DMA scheduling for video mode panel. * * In video mode panel, if the DMA is triggered very close to * the beginning of the active window and the DMA transfer * happens in the last line of VBP, then the HW state will * stay in ‘wait’ and return to ‘idle’ in the first line of VFP. * But somewhere in the middle of the active window, if SW * disables DSI command mode engine while the HW is still * waiting and re-enable after timing engine is OFF. So the * HW never ‘sees’ another vblank line and hence it gets * stuck in the ‘wait’ state. */ if ((flags & DSI_CTRL_CMD_CUSTOM_DMA_SCHED) || (dsi_ctrl->host_config.panel_mode == DSI_OP_VIDEO_MODE)) dsi_configure_command_scheduling(dsi_ctrl, cmd_mem); dsi_ctrl->cmd_mode = (dsi_ctrl->host_config.panel_mode == Loading Loading
msm/dsi/dsi_ctrl.c +15 −2 Original line number Diff line number Diff line Loading @@ -1373,8 +1373,21 @@ static void dsi_kickoff_msg_tx(struct dsi_ctrl *dsi_ctrl, dsi_hw_ops.reset_trig_ctrl(&dsi_ctrl->hw, &dsi_ctrl->host_config.common_config); /* check if custom dma scheduling line needed */ if (flags & DSI_CTRL_CMD_CUSTOM_DMA_SCHED) /* * Always enable DMA scheduling for video mode panel. * * In video mode panel, if the DMA is triggered very close to * the beginning of the active window and the DMA transfer * happens in the last line of VBP, then the HW state will * stay in ‘wait’ and return to ‘idle’ in the first line of VFP. * But somewhere in the middle of the active window, if SW * disables DSI command mode engine while the HW is still * waiting and re-enable after timing engine is OFF. So the * HW never ‘sees’ another vblank line and hence it gets * stuck in the ‘wait’ state. */ if ((flags & DSI_CTRL_CMD_CUSTOM_DMA_SCHED) || (dsi_ctrl->host_config.panel_mode == DSI_OP_VIDEO_MODE)) dsi_configure_command_scheduling(dsi_ctrl, cmd_mem); dsi_ctrl->cmd_mode = (dsi_ctrl->host_config.panel_mode == Loading