disp: msm: dsi: handle wait for dma cmd completion

The current solution triggers the DMA command and waits till
the command dma done and ISR signals completion. This change
introduces asynchronous wait after a DCS command has been
triggered. Enable this mode only during pre kickoff, so as to not
block commit thread.

Change-Id: Iead7b6328883e844147d47ff68dc878943879553
Signed-off-by: Satya Rama Aditya Pinapala <psraditya30@codeaurora.org>
This commit is contained in:
Satya Rama Aditya Pinapala
2019-08-30 10:39:00 -07:00
committed by Gerrit - the friendly Code Review server
부모 d236dbd5e0
커밋 8bc240b71d
5개의 변경된 파일269개의 추가작업 그리고 81개의 파일을 삭제

파일 보기

@@ -759,6 +759,7 @@ int sde_connector_pre_kickoff(struct drm_connector *connector)
struct sde_connector *c_conn;
struct sde_connector_state *c_state;
struct msm_display_kickoff_params params;
struct dsi_display *display;
int rc;
if (!connector) {
@@ -773,6 +774,15 @@ int sde_connector_pre_kickoff(struct drm_connector *connector)
return -EINVAL;
}
/*
* During pre kickoff DCS commands have to have an
* asynchronous wait to avoid an unnecessary stall
* in pre-kickoff. This flag must be reset at the
* end of display pre-kickoff.
*/
display = (struct dsi_display *)c_conn->display;
display->queue_cmd_waits = true;
rc = _sde_connector_update_dirty_properties(connector);
if (rc) {
SDE_EVT32(connector->base.id, SDE_EVTLOG_ERROR);
@@ -789,6 +799,7 @@ int sde_connector_pre_kickoff(struct drm_connector *connector)
rc = c_conn->ops.pre_kickoff(connector, c_conn->display, &params);
display->queue_cmd_waits = false;
end:
return rc;
}