Skip to content

Commit

Permalink
drm/i915/dp: Only apply the workaround if the select is still active
Browse files Browse the repository at this point in the history
As we may try to power down the link at various times, it is not
necessarily still coupled with an encoder and so we must be careful not
to depend upon an operation that is only valid when the link is still
attached to a pipe.

Fixes regression in 5bddd17.

Reported-and-tested-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org [after applying 5bddd17]
  • Loading branch information
Chris Wilson committed Dec 7, 2010
1 parent 7a19487 commit 1b39d6f
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/gpu/drm/i915/intel_dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand All @@ -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.
Expand Down

0 comments on commit 1b39d6f

Please sign in to comment.