diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 5d127e068950..a9fb046b94a1 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -8144,10 +8144,6 @@ intel_modeset_stage_output_state(struct drm_device *dev, | |||
8144 | DRM_DEBUG_KMS("encoder changed, full mode switch\n"); | 8144 | DRM_DEBUG_KMS("encoder changed, full mode switch\n"); |
8145 | config->mode_changed = true; | 8145 | config->mode_changed = true; |
8146 | } | 8146 | } |
8147 | |||
8148 | /* Disable all disconnected encoders. */ | ||
8149 | if (connector->base.status == connector_status_disconnected) | ||
8150 | connector->new_encoder = NULL; | ||
8151 | } | 8147 | } |
8152 | /* connector->new_encoder is now updated for all connectors. */ | 8148 | /* connector->new_encoder is now updated for all connectors. */ |
8153 | 8149 | ||
@@ -9167,6 +9163,23 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder) | |||
9167 | * the crtc fixup. */ | 9163 | * the crtc fixup. */ |
9168 | } | 9164 | } |
9169 | 9165 | ||
9166 | static void i915_redisable_vga(struct drm_device *dev) | ||
9167 | { | ||
9168 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
9169 | u32 vga_reg; | ||
9170 | |||
9171 | if (HAS_PCH_SPLIT(dev)) | ||
9172 | vga_reg = CPU_VGACNTRL; | ||
9173 | else | ||
9174 | vga_reg = VGACNTRL; | ||
9175 | |||
9176 | if (I915_READ(vga_reg) != VGA_DISP_DISABLE) { | ||
9177 | DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); | ||
9178 | I915_WRITE(vga_reg, VGA_DISP_DISABLE); | ||
9179 | POSTING_READ(vga_reg); | ||
9180 | } | ||
9181 | } | ||
9182 | |||
9170 | /* Scan out the current hw modeset state, sanitizes it and maps it into the drm | 9183 | /* Scan out the current hw modeset state, sanitizes it and maps it into the drm |
9171 | * and i915 state tracking structures. */ | 9184 | * and i915 state tracking structures. */ |
9172 | void intel_modeset_setup_hw_state(struct drm_device *dev, | 9185 | void intel_modeset_setup_hw_state(struct drm_device *dev, |
@@ -9275,6 +9288,8 @@ void intel_modeset_setup_hw_state(struct drm_device *dev, | |||
9275 | intel_set_mode(&crtc->base, &crtc->base.mode, | 9288 | intel_set_mode(&crtc->base, &crtc->base.mode, |
9276 | crtc->base.x, crtc->base.y, crtc->base.fb); | 9289 | crtc->base.x, crtc->base.y, crtc->base.fb); |
9277 | } | 9290 | } |
9291 | |||
9292 | i915_redisable_vga(dev); | ||
9278 | } else { | 9293 | } else { |
9279 | intel_modeset_update_staged_output_state(dev); | 9294 | intel_modeset_update_staged_output_state(dev); |
9280 | } | 9295 | } |