Loading msm/sde/sde_connector.c +0 −15 Original line number Diff line number Diff line Loading @@ -2124,8 +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; if (!connector) { SDE_ERROR("invalid connector\n"); Loading @@ -2138,19 +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); 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) { SDE_ERROR("invalid qsync update during modeset\n"); return -EINVAL; } if (c_conn->ops.atomic_check) return c_conn->ops.atomic_check(connector, Loading msm/sde/sde_encoder.c +14 −0 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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; Loading msm/sde/sde_encoder_phys_vid.c +10 −2 Original line number Diff line number Diff line Loading @@ -1125,13 +1125,21 @@ static void sde_encoder_phys_vid_handle_post_kickoff( static void sde_encoder_phys_vid_prepare_for_commit( struct sde_encoder_phys *phys_enc) { struct drm_crtc *crtc; if (!phys_enc) { if (!phys_enc || !phys_enc->parent) { SDE_ERROR("invalid encoder parameters\n"); return; } if (sde_connector_is_qsync_updated(phys_enc->connector)) crtc = phys_enc->parent->crtc; if (!crtc || !crtc->state) { SDE_ERROR("invalid crtc or crtc state\n"); return; } if (!msm_is_mode_seamless_vrr(&crtc->state->adjusted_mode) && sde_connector_is_qsync_updated(phys_enc->connector)) _sde_encoder_phys_vid_avr_ctrl(phys_enc); } Loading Loading
msm/sde/sde_connector.c +0 −15 Original line number Diff line number Diff line Loading @@ -2124,8 +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; if (!connector) { SDE_ERROR("invalid connector\n"); Loading @@ -2138,19 +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); 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) { SDE_ERROR("invalid qsync update during modeset\n"); return -EINVAL; } if (c_conn->ops.atomic_check) return c_conn->ops.atomic_check(connector, Loading
msm/sde/sde_encoder.c +14 −0 Original line number Diff line number Diff line Loading @@ -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", Loading Loading @@ -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; Loading
msm/sde/sde_encoder_phys_vid.c +10 −2 Original line number Diff line number Diff line Loading @@ -1125,13 +1125,21 @@ static void sde_encoder_phys_vid_handle_post_kickoff( static void sde_encoder_phys_vid_prepare_for_commit( struct sde_encoder_phys *phys_enc) { struct drm_crtc *crtc; if (!phys_enc) { if (!phys_enc || !phys_enc->parent) { SDE_ERROR("invalid encoder parameters\n"); return; } if (sde_connector_is_qsync_updated(phys_enc->connector)) crtc = phys_enc->parent->crtc; if (!crtc || !crtc->state) { SDE_ERROR("invalid crtc or crtc state\n"); return; } if (!msm_is_mode_seamless_vrr(&crtc->state->adjusted_mode) && sde_connector_is_qsync_updated(phys_enc->connector)) _sde_encoder_phys_vid_avr_ctrl(phys_enc); } Loading