disp: msm: sde: update avr mode config during commit prepare

Add changes to support avr mode config update during
prepare commit which happens before gpu fence wait
for the input buffers.

Change-Id: Ib2cb5b7e1f10501914c003f6cf066b85048f79d4
Signed-off-by: Kalyan Thota <kalyant@codeaurora.org>
Signed-off-by: Jayaprakash <jmadiset@codeaurora.org>
This commit is contained in:
Jayaprakash
2019-09-26 12:17:07 +05:30
parent 985ffddc71
commit aad3dd4525
10 changed files with 160 additions and 41 deletions

View File

@@ -640,15 +640,17 @@ void sde_connector_set_qsync_params(struct drm_connector *connector)
if (prop_dirty) {
qsync_propval = sde_connector_get_property(c_conn->base.state,
CONNECTOR_PROP_QSYNC_MODE);
SDE_DEBUG("updated qsync mode %d -> %d\n", c_conn->qsync_mode,
qsync_propval);
c_conn->qsync_updated = true;
c_conn->qsync_mode = qsync_propval;
if (qsync_propval != c_conn->qsync_mode) {
SDE_DEBUG("updated qsync mode %d -> %d\n",
c_conn->qsync_mode, qsync_propval);
c_conn->qsync_updated = true;
c_conn->qsync_mode = qsync_propval;
}
}
}
void sde_connector_complete_qsync_commit(struct drm_connector *conn,
struct msm_display_kickoff_params *params)
struct msm_display_conn_params *params)
{
struct sde_connector *c_conn;
@@ -782,13 +784,6 @@ int sde_connector_pre_kickoff(struct drm_connector *connector)
params.rois = &c_state->rois;
params.hdr_meta = &c_state->hdr_meta;
params.qsync_update = false;
if (c_conn->qsync_updated) {
params.qsync_mode = c_conn->qsync_mode;
params.qsync_update = true;
SDE_EVT32(connector->base.id, params.qsync_mode);
}
SDE_EVT32_VERBOSE(connector->base.id);
@@ -798,6 +793,43 @@ end:
return rc;
}
int sde_connector_prepare_commit(struct drm_connector *connector)
{
struct sde_connector *c_conn;
struct sde_connector_state *c_state;
struct msm_display_conn_params params;
int rc;
if (!connector) {
SDE_ERROR("invalid argument\n");
return -EINVAL;
}
c_conn = to_sde_connector(connector);
c_state = to_sde_connector_state(connector->state);
if (!c_conn->display) {
SDE_ERROR("invalid connector display\n");
return -EINVAL;
}
if (!c_conn->ops.prepare_commit)
return 0;
memset(&params, 0, sizeof(params));
if (c_conn->qsync_updated) {
params.qsync_mode = c_conn->qsync_mode;
params.qsync_update = true;
}
rc = c_conn->ops.prepare_commit(c_conn->display, &params);
SDE_EVT32(connector->base.id, params.qsync_mode,
params.qsync_update, rc);
return rc;
}
void sde_connector_helper_bridge_disable(struct drm_connector *connector)
{
int rc;