drm/i915: Prevent PPS stealing from a normal DP port on VLV/CHV
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 14 Dec 2016 18:00:23 +0000 (20:00 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 19 Dec 2016 12:59:11 +0000 (14:59 +0200)
commit9f2bdb006a7e432726434aabf67a9cc0b62d266b
treeb3418718219ef1602300b0983ed6dda5cc75ac65
parentbf51997c91e097e552ce219f38c1520e4039b637
drm/i915: Prevent PPS stealing from a normal DP port on VLV/CHV

VLV apparently gets upset if the PPS for a pipe currently driving an
external DP port gets used for VDD stuff on another eDP port. The DP
port falls over and fails to retrain when this happens, leaving the
user staring at a black screen.

Let's fix it by also tracking which pipe is driving which DP/eDP port.
We'll track this under intel_dp so that we'll share the protection
of the pps_mutex alongside the pps_pipe tracking, since the two
things are intimately related.

I had plans to reduce the protection of pps_mutex to cover only eDP
ports, but with this we can't do that. Well, for for VLV/CHV at least.
For other platforms it should still be possible, which would allow
AUX communication to occur in parallel for multiple DP ports.

v2: Drop stray crap from a comment (Imre)
    Grab pps_mutex when clearing active_pipe
    Fix a typo in the commit message
v3: Make vlv_active_pipe() static

Cc: stable@vger.kernel.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1481738423-29738-1-git-send-email-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h