• Ville Syrjälä's avatar
    drm/i915: Turn off g4x DP port in .post_disable() · 4dccc4d5
    Ville Syrjälä authored
    While Bspec doesn't list a specific sequence for turning off the DP port
    on g4x we are getting an underrun if the port is disabled in the
    .disable() hook. Looks like the pipe stops when the port stops, and by
    that time the plane disable may not have completed yet. Also the plane(s)
    seem to end up in some wonky state when this happens as they also signal
    another underrun immediately after we turn them back on during the next
    enable sequence.
    
    We could add a vblank wait in .disable() to avoid wedging the planes,
    but I assume we're still tripping up the pipe in some way. So it seems
    better to me to just follow the ILK+ sequence and turn off the DP port
    in .post_disable() instead. This sequence doesn't seem to suffer from
    this problem. Could be it was always the intended sequence for DP and
    the gen4 bspec was just never updated to include it.
    
    Originally we used the bad sequence even on ilk+, but I changed that
    in commit 08aff3fe ("drm/i915: Move DP port disable to post_disable
    for pch platforms") as it was causing issues on those platforms as well.
    I left out g4x then only because I didn't have the hardware to test it.
    Now that I do it's fairly clear that the ilk+ sequence is also the
    right choice for g4x.
    
    v2: Fix whitespace fail (Jani)
        Mention the ilk+ commit (Jani)
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180613160553.11664-2-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
    (cherry picked from commit 51a9f6df)
    Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
    4dccc4d5
intel_dp.c 180 KB