summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--msm/sde/sde_connector.c21
-rw-r--r--msm/sde/sde_encoder.c14
2 files changed, 14 insertions, 21 deletions
diff --git a/msm/sde/sde_connector.c b/msm/sde/sde_connector.c
index 77615009..c8bb88bc 100644
--- a/msm/sde/sde_connector.c
+++ b/msm/sde/sde_connector.c
@@ -2124,9 +2124,6 @@ static int sde_connector_atomic_check(struct drm_connector *connector,
struct drm_connector_state *new_conn_state)
{
struct sde_connector *c_conn;
- struct sde_connector_state *c_state;
- bool qsync_dirty = false, has_modeset = false;
- struct drm_crtc_state *new_crtc_state = NULL;
if (!connector) {
SDE_ERROR("invalid connector\n");
@@ -2139,24 +2136,6 @@ static int sde_connector_atomic_check(struct drm_connector *connector,
}
c_conn = to_sde_connector(connector);
- c_state = to_sde_connector_state(new_conn_state);
-
- if (new_conn_state->crtc)
- new_crtc_state = drm_atomic_get_new_crtc_state(
- new_conn_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;
- }
if (c_conn->ops.atomic_check)
return c_conn->ops.atomic_check(connector,
diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c
index 32c983ba..1a34c0ba 100644
--- a/msm/sde/sde_encoder.c
+++ b/msm/sde/sde_encoder.c
@@ -1113,6 +1113,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",
@@ -1167,6 +1168,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 during modeset\n");
+ return -EINVAL;
+ }
+
SDE_EVT32(DRMID(drm_enc), adj_mode->flags, adj_mode->private_flags);
return ret;