static int drm_simple_kms_crtc_check(struct drm_crtc *crtc,
                                     struct drm_crtc_state *state)
 {
+       bool has_primary = state->plane_mask &
+                          BIT(drm_plane_index(crtc->primary));
+
+       /* We always want to have an active plane with an active CRTC */
+       if (has_primary != state->enable)
+               return -EINVAL;
+
        return drm_atomic_add_affected_planes(state->state, crtc);
 }
 
        pipe = container_of(plane, struct drm_simple_display_pipe, plane);
        crtc_state = drm_atomic_get_new_crtc_state(plane_state->state,
                                                   &pipe->crtc);
-       if (crtc_state->enable != !!plane_state->crtc)
-               return -EINVAL; /* plane must match crtc enable state */
-
        if (!crtc_state->enable)
                return 0; /* nothing to check when disabling or disabled */