diff --git a/msm/sde/sde_connector.c b/msm/sde/sde_connector.c index 311b8bdbaa..c83b24e80e 100644 --- a/msm/sde/sde_connector.c +++ b/msm/sde/sde_connector.c @@ -2364,10 +2364,6 @@ static int sde_connector_atomic_check(struct drm_connector *connector, struct drm_atomic_state *state) { struct sde_connector *c_conn; - struct sde_connector_state *c_state; - bool qsync_dirty = false, has_modeset = false; - struct drm_connector_state *new_conn_state; - struct drm_crtc_state *new_crtc_state = NULL; if (!connector) { SDE_ERROR("invalid connector\n"); @@ -2375,32 +2371,6 @@ static int sde_connector_atomic_check(struct drm_connector *connector, } c_conn = to_sde_connector(connector); - new_conn_state = drm_atomic_get_new_connector_state(state, connector); - - if (!new_conn_state) { - SDE_ERROR("invalid connector state\n"); - return -EINVAL; - } - - c_state = to_sde_connector_state(new_conn_state); - if (new_conn_state->crtc) - new_crtc_state = drm_atomic_get_new_crtc_state(state, - new_conn_state->crtc); - - has_modeset = sde_crtc_atomic_check_has_modeset(new_conn_state->state, - new_conn_state->crtc); - qsync_dirty = msm_property_is_dirty(&c_conn->property_info, - &c_state->property_state, - CONNECTOR_PROP_QSYNC_MODE); - - SDE_DEBUG("has_modeset %d qsync_dirty %d\n", has_modeset, qsync_dirty); - if (has_modeset && qsync_dirty && new_crtc_state && - !msm_is_mode_seamless_vrr(&new_crtc_state->adjusted_mode)) { - SDE_ERROR("invalid qsync update during modeset\n"); - return -EINVAL; - } - new_conn_state = drm_atomic_get_new_connector_state(state, connector); - if (c_conn->ops.atomic_check) return c_conn->ops.atomic_check(connector, c_conn->display, state); diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 1c09553d84..846c556a8f 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -941,6 +941,7 @@ static int sde_encoder_virt_atomic_check( struct sde_crtc_state *sde_crtc_state = NULL; enum sde_rm_topology_name old_top; int ret = 0; + bool qsync_dirty = false, has_modeset = false; if (!drm_enc || !crtc_state || !conn_state) { SDE_ERROR("invalid arg(s), drm_enc %d, crtc/conn state %d/%d\n", @@ -997,6 +998,19 @@ static int sde_encoder_virt_atomic_check( } drm_mode_set_crtcinfo(adj_mode, 0); + + has_modeset = sde_crtc_atomic_check_has_modeset(conn_state->state, + conn_state->crtc); + qsync_dirty = msm_property_is_dirty(&sde_conn->property_info, + &sde_conn_state->property_state, + CONNECTOR_PROP_QSYNC_MODE); + + if (has_modeset && qsync_dirty && + !msm_is_mode_seamless_vrr(adj_mode)) { + SDE_ERROR("invalid qsync update during modeset\n"); + return -EINVAL; + } + SDE_EVT32(DRMID(drm_enc), adj_mode->flags, adj_mode->private_flags, old_top, adj_mode->vrefresh, adj_mode->hdisplay, adj_mode->vdisplay, adj_mode->htotal, adj_mode->vtotal);