• Daniel Vetter's avatar
    Revert "drm/i915: set TRANSCODER_EDP even earlier" · bba2181c
    Daniel Vetter authored
    This reverts commit cc464b2a.
    
    The reason is that Takashi Iwai reported a regression bisected to this
    commit:
    
    http://www.mail-archive.com/intel-gfx@lists.freedesktop.org/msg18788.html
    
    His machine has eDP on port D (usual desktop all-in-on setup), which
    intel_dp.c identifies as an eDP panel, but the hsw ddi code
    mishandles.
    
    Closer inspection of the code reveals that haswell_crtc_mode_set also
    checks intel_encoder_is_pch_edp when setting is_cpu_edp. On haswell
    that doesn't make much sense (since there's no edp on the pch), but
    what this function _really_ checks is whether that edp connector is on
    port A or port D. It's just that on ilk-ivb port D was on the pch ...
    
    So that explains why this seemingly innocent change killed eDP on port
    D. Furthermore it looks like everything else accidentally works, since
    we've never enabled eDP on port D support for hsw intentionally (e.g.
    we still register the HDMI output for port D in that case).
    
    But in retrospective I also don't like that this leaks highly platform
    specific details into common code, and the reason is that the drm
    vblank layer sucks. So instead I think we should:
    - move the cpu_transcoder into the dynamic pipe_config tracking (once
      that's merged).
    - fix up the drm vblank layer to finally deal with kms crtc objects
      instead of int pipes.
    
    v2: Pimp commit message with the better diagnosis as discussed with
    Paulo on irc.
    
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Takashi Iwai <tiwai@suse.de>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    bba2181c
intel_display.c 251 KB