Commit d95c2566 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Properly clear crtc state when disabling it fully, again

Currently we just leave the old gunk lying around in the crtc
state when userspace asks us to fully disable the crtc. That
doesn't match what the state would be had we never even enabled
the crtc in the first place. So let's make this consistent and
call intel_crtc_prepare_cleared_state() for disabled crtcs as well
(excluding bigjoiner slaves of course which have had their state
copied from the master).

I actually already did this once in commit fff13e63 ("drm/i915:
Clear most of crtc state when disabling the crtc") but then
commit 19f65a3d ("drm/i915: Try to make bigjoiner work in atomic
check") undid it all :(
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220217103221.10405-5-ville.syrjala@linux.intel.comReviewed-by: default avatarManasi Navare <manasi.d.navare@intel.com>
parent 7d700768
...@@ -7627,9 +7627,8 @@ static int intel_atomic_check(struct drm_device *dev, ...@@ -7627,9 +7627,8 @@ static int intel_atomic_check(struct drm_device *dev,
continue; continue;
} }
if (!new_crtc_state->uapi.enable) { if (intel_crtc_is_bigjoiner_slave(new_crtc_state)) {
if (!intel_crtc_is_bigjoiner_slave(new_crtc_state)) drm_WARN_ON(&dev_priv->drm, new_crtc_state->uapi.enable);
intel_crtc_copy_uapi_to_hw_state_modeset(state, crtc);
continue; continue;
} }
...@@ -7637,6 +7636,9 @@ static int intel_atomic_check(struct drm_device *dev, ...@@ -7637,6 +7636,9 @@ static int intel_atomic_check(struct drm_device *dev,
if (ret) if (ret)
goto fail; goto fail;
if (!new_crtc_state->hw.enable)
continue;
ret = intel_modeset_pipe_config(state, new_crtc_state); ret = intel_modeset_pipe_config(state, new_crtc_state);
if (ret) if (ret)
goto fail; goto fail;
......
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