Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] i915: ensure that VGA plane is disabled
@ 2012-12-19 10:03 Krzysztof Mazur
  2012-12-19 11:40 ` Daniel Vetter
  0 siblings, 1 reply; 2+ messages in thread
From: Krzysztof Mazur @ 2012-12-19 10:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: Daniel Vetter, Krzysztof Mazur

Some broken systems (like HP nc6120) in some cases, usually after LID
close/open, enable VGA plane, making display unusable (black screen on LVDS,
some strange mode on VGA output). We used to disable VGA plane only once at
startup. Now we also check, if VGA plane is still disabled while changing
mode, and fix that if something changed it.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57434
Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>
---
 drivers/gpu/drm/i915/intel_display.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 437b56a..ffc9715 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -8712,6 +8712,23 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder)
 	 * the crtc fixup. */
 }
 
+static void i915_redisable_vga(struct drm_device *dev)
+{
+	struct drm_i915_private *dev_priv = dev->dev_private;
+	u32 vga_reg;
+
+	if (HAS_PCH_SPLIT(dev))
+		vga_reg = CPU_VGACNTRL;
+	else
+		vga_reg = VGACNTRL;
+
+	if (I915_READ(vga_reg) != VGA_DISP_DISABLE) {
+		DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n");
+		I915_WRITE(vga_reg, VGA_DISP_DISABLE);
+		POSTING_READ(vga_reg);
+	}
+}
+
 /* Scan out the current hw modeset state, sanitizes it and maps it into the drm
  * and i915 state tracking structures. */
 void intel_modeset_setup_hw_state(struct drm_device *dev,
@@ -8820,6 +8837,8 @@ void intel_modeset_setup_hw_state(struct drm_device *dev,
 			intel_set_mode(&crtc->base, &crtc->base.mode,
 				       crtc->base.x, crtc->base.y, crtc->base.fb);
 		}
+
+		i915_redisable_vga(dev);
 	} else {
 		intel_modeset_update_staged_output_state(dev);
 	}
-- 
1.8.1.rc2

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] i915: ensure that VGA plane is disabled
  2012-12-19 10:03 [PATCH] i915: ensure that VGA plane is disabled Krzysztof Mazur
@ 2012-12-19 11:40 ` Daniel Vetter
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Vetter @ 2012-12-19 11:40 UTC (permalink / raw)
  To: Krzysztof Mazur; +Cc: Daniel Vetter, intel-gfx

On Wed, Dec 19, 2012 at 11:03:41AM +0100, Krzysztof Mazur wrote:
> Some broken systems (like HP nc6120) in some cases, usually after LID
> close/open, enable VGA plane, making display unusable (black screen on LVDS,
> some strange mode on VGA output). We used to disable VGA plane only once at
> startup. Now we also check, if VGA plane is still disabled while changing
> mode, and fix that if something changed it.
> 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57434
> Signed-off-by: Krzysztof Mazur <krzysiek@podlesie.net>

*insert laments about BIOSen doing horrible things*

Thanks a lot for digging into this and coming up with the patch, merged to
-fixes for 3.8 with a cc: stable, so should show up reasonable quickly in
a stable kernel near you.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-12-19 11:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-19 10:03 [PATCH] i915: ensure that VGA plane is disabled Krzysztof Mazur
2012-12-19 11:40 ` Daniel Vetter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox