diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 30d89111f559..82d1b91bdfa6 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -5111,19 +5111,26 @@ static void intel_setup_outputs(struct drm_device *dev) | |||
5111 | { | 5111 | { |
5112 | struct drm_i915_private *dev_priv = dev->dev_private; | 5112 | struct drm_i915_private *dev_priv = dev->dev_private; |
5113 | struct drm_encoder *encoder; | 5113 | struct drm_encoder *encoder; |
5114 | bool dpd_is_edp = false; | ||
5114 | 5115 | ||
5115 | intel_crt_init(dev); | ||
5116 | |||
5117 | /* Set up integrated LVDS */ | ||
5118 | if (IS_MOBILE(dev) && !IS_I830(dev)) | 5116 | if (IS_MOBILE(dev) && !IS_I830(dev)) |
5119 | intel_lvds_init(dev); | 5117 | intel_lvds_init(dev); |
5120 | 5118 | ||
5121 | if (HAS_PCH_SPLIT(dev)) { | 5119 | if (HAS_PCH_SPLIT(dev)) { |
5122 | int found; | 5120 | dpd_is_edp = intel_dpd_is_edp(dev); |
5123 | 5121 | ||
5124 | if (IS_MOBILE(dev) && (I915_READ(DP_A) & DP_DETECTED)) | 5122 | if (IS_MOBILE(dev) && (I915_READ(DP_A) & DP_DETECTED)) |
5125 | intel_dp_init(dev, DP_A); | 5123 | intel_dp_init(dev, DP_A); |
5126 | 5124 | ||
5125 | if (dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED)) | ||
5126 | intel_dp_init(dev, PCH_DP_D); | ||
5127 | } | ||
5128 | |||
5129 | intel_crt_init(dev); | ||
5130 | |||
5131 | if (HAS_PCH_SPLIT(dev)) { | ||
5132 | int found; | ||
5133 | |||
5127 | if (I915_READ(HDMIB) & PORT_DETECTED) { | 5134 | if (I915_READ(HDMIB) & PORT_DETECTED) { |
5128 | /* PCH SDVOB multiplex with HDMIB */ | 5135 | /* PCH SDVOB multiplex with HDMIB */ |
5129 | found = intel_sdvo_init(dev, PCH_SDVOB); | 5136 | found = intel_sdvo_init(dev, PCH_SDVOB); |
@@ -5142,7 +5149,7 @@ static void intel_setup_outputs(struct drm_device *dev) | |||
5142 | if (I915_READ(PCH_DP_C) & DP_DETECTED) | 5149 | if (I915_READ(PCH_DP_C) & DP_DETECTED) |
5143 | intel_dp_init(dev, PCH_DP_C); | 5150 | intel_dp_init(dev, PCH_DP_C); |
5144 | 5151 | ||
5145 | if (I915_READ(PCH_DP_D) & DP_DETECTED) | 5152 | if (!dpd_is_edp && (I915_READ(PCH_DP_D) & DP_DETECTED)) |
5146 | intel_dp_init(dev, PCH_DP_D); | 5153 | intel_dp_init(dev, PCH_DP_D); |
5147 | 5154 | ||
5148 | } else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) { | 5155 | } else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) { |