]> git.karo-electronics.de Git - linux-beck.git/blobdiff - drivers/gpu/drm/i915/intel_dp.c
drm/i915/dp: Only apply the workaround if the select is still active
[linux-beck.git] / drivers / gpu / drm / i915 / intel_dp.c
index 1d8d068bc4730ce2fec78e8207588ef289dbc5b9..df648cb4c29641cec581307b1c40a46d812fd58b 100644 (file)
@@ -1374,9 +1374,11 @@ intel_dp_link_down(struct intel_dp *intel_dp)
 {
        struct drm_device *dev = intel_dp->base.base.dev;
        struct drm_i915_private *dev_priv = dev->dev_private;
-       struct intel_crtc *intel_crtc = to_intel_crtc(intel_dp->base.base.crtc);
        uint32_t DP = intel_dp->DP;
 
+       if ((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)
+               return;
+
        DRM_DEBUG_KMS("\n");
 
        if (is_edp(intel_dp)) {
@@ -1400,7 +1402,9 @@ intel_dp_link_down(struct intel_dp *intel_dp)
        if (is_edp(intel_dp))
                DP |= DP_LINK_TRAIN_OFF;
 
-       if (!HAS_PCH_CPT(dev) && (DP & DP_PIPEB_SELECT)) {
+       if (!HAS_PCH_CPT(dev) &&
+           I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) {
+               struct intel_crtc *intel_crtc = to_intel_crtc(intel_dp->base.base.crtc);
                /* Hardware workaround: leaving our transcoder select
                 * set to transcoder B while it's off will prevent the
                 * corresponding HDMI output on transcoder A.