Commit 970ece83 authored by Maarten Lankhorst's avatar Maarten Lankhorst Committed by Sean Paul

drm/atomic: Move enable/connector check up in check_modeset()

Now that handle_conflicting_encoders no longer touches active state,
so there's no need to do the check quite that late any more.

Doing it with all the other checks makes it a lot more clear what the
below block tries to accomplish, and this feels like a better place to
put the check.
Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1491477543-31257-4-git-send-email-maarten.lankhorst@linux.intel.com
parent 24d6652c
...@@ -494,6 +494,9 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -494,6 +494,9 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
int i, ret; int i, ret;
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
bool has_connectors =
!!new_crtc_state->connector_mask;
if (!drm_mode_equal(&old_crtc_state->mode, &new_crtc_state->mode)) { if (!drm_mode_equal(&old_crtc_state->mode, &new_crtc_state->mode)) {
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] mode changed\n", DRM_DEBUG_ATOMIC("[CRTC:%d:%s] mode changed\n",
crtc->base.id, crtc->name); crtc->base.id, crtc->name);
...@@ -521,6 +524,13 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -521,6 +524,13 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
crtc->base.id, crtc->name); crtc->base.id, crtc->name);
new_crtc_state->active_changed = true; new_crtc_state->active_changed = true;
} }
if (new_crtc_state->enable != has_connectors) {
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled/connectors mismatch\n",
crtc->base.id, crtc->name);
return -EINVAL;
}
} }
ret = handle_conflicting_encoders(state, false); ret = handle_conflicting_encoders(state, false);
...@@ -554,9 +564,6 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -554,9 +564,6 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
* crtc only changed its mode but has the same set of connectors. * crtc only changed its mode but has the same set of connectors.
*/ */
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
bool has_connectors =
!!new_crtc_state->connector_mask;
if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) if (!drm_atomic_crtc_needs_modeset(new_crtc_state))
continue; continue;
...@@ -572,13 +579,6 @@ drm_atomic_helper_check_modeset(struct drm_device *dev, ...@@ -572,13 +579,6 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
ret = drm_atomic_add_affected_planes(state, crtc); ret = drm_atomic_add_affected_planes(state, crtc);
if (ret != 0) if (ret != 0)
return ret; return ret;
if (new_crtc_state->enable != has_connectors) {
DRM_DEBUG_ATOMIC("[CRTC:%d:%s] enabled/connectors mismatch\n",
crtc->base.id, crtc->name);
return -EINVAL;
}
} }
return mode_fixup(state); return mode_fixup(state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment