• Daniel Vetter's avatar
    drm/i915: push commit_output_state past the crtc/encoder preparing · ea9d758d
    Daniel Vetter authored
    With this change we can (finally!) rip out a few of the temporary hacks
    and clean up a few other things:
    - Kill intel_crtc_prepare_encoders, now unused.
    - Kill the hacks in the crtc_disable/enable functions to always call the
      encoder callbacks, we now always call the crtc functions with the right
      encoder -> crtc links.
    - Also push down the crtc->enable, encoder and connector dpms state
      updates. Unfortunately we can't add a WARN in the crtc_disable
      callbacks to ensure that the crtc is always still enabled when
      disabling an output pipe - the crtc sanitizer of the hw readout path
      can hit this when it needs to disable an active pipe without any
      enabled outputs.
    - Only call crtc->disable if the pipe is already enabled - again avoids
      running afoul of the new WARN.
    
    v2: Copy&paste our own version of crtc_in_use, too.
    
    v3: We need to update the dpms an encoder->connectors_active states,
    too.
    
    v4: I've forgotten to kill the unconditional encoder->disable calls in
    the crtc_disable functions.
    
    v5: Rip out leftover debug printk.
    
    v6: Properly clear intel_encoder->connectors_active. This wasn't
    properly cleared when disabling an encoder because it was no longer on
    the new connector list, but the crtc was still enabled (i.e. switching
    the encoder of an active crtc). Reported by Jani Nikula.
    
    v7: Don't clobber the encoder->connectors_active state of untouched
    encoders. Since X likes to first disable all outputs with dpms off
    before setting a new framebuffer, this hit a few warnings. Reported by
    Paulo Zanoni.
    
    v8: Kill the now stale comment warning that intel_crtc->active is not
    always updated at the right times.
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    ea9d758d
intel_display.c 222 KB