• Daniel Vetter's avatar
    drm/i915: Fix the PPT fdi lane bifurcate state handling on ivb · 1fbc0d78
    Daniel Vetter authored
    Originally I've thought that this is leftover hw state dirt from the
    BIOS. But after way too much helpless flailing around on my part I've
    noticed that the actual bug is when we change the state of an already
    active pipe.
    
    For example when we change the fdi lines from 2 to 3 without switching
    off outputs in-between we'll never see the crucial on->off transition
    in the ->modeset_global_resources hook the current logic relies on.
    
    Patch version 2 got this right by instead also checking whether the
    pipe is indeed active. But that in turn broke things when pipes have
    been turned off through dpms since the bifurcate enabling is done in
    the ->crtc_mode_set callback.
    
    To address this issues discussed with Ville in the patch review move
    the setting of the bifurcate bit into the ->crtc_enable hook. That way
    we won't wreak havoc with this state when userspace puts all other
    outputs into dpms off state. This also moves us forward with our
    overall goal to unify the modeset and dpms on paths (which we need to
    have to allow runtime pm in the dpms off state).
    
    Unfortunately this requires us to move the bifurcate helpers around a
    bit.
    
    Also update the commit message, I've misanalyzed the bug rather badly.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=70507Tested-by: default avatarJan-Michael Brummer <jan.brummer@tabos.org>
    Cc: stable@vger.kernel.org
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    1fbc0d78
intel_display.c 293 KB