Loading msm/sde/sde_connector.c +0 −30 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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); Loading msm/sde/sde_encoder.c +14 −0 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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); Loading Loading
msm/sde/sde_connector.c +0 −30 Original line number Diff line number Diff line Loading @@ -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"); Loading @@ -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); Loading
msm/sde/sde_encoder.c +14 −0 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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); Loading