diff mbox

i915: Skip wrong TV outputs on HP laptop

Message ID s5htyr6jnip.wl%tiwai@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Takashi Iwai April 20, 2010, 12:50 p.m. UTC
None
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index 552ec11..e848a28 100644
--- a/drivers/gpu/drm/i915/intel_tv.c
+++ b/drivers/gpu/drm/i915/intel_tv.c
@@ -37,6 +37,7 @@ 
 #include "intel_drv.h"
 #include "i915_drm.h"
 #include "i915_drv.h"
+#include <linux/dmi.h>
 
 enum tv_margin {
 	TV_MARGIN_LEFT, TV_MARGIN_TOP,
@@ -1735,6 +1736,18 @@  static int tv_is_present_in_vbt(struct drm_device *dev)
 	return ret;
 }
 
+static struct dmi_system_id intel_bad_tv[] = {
+	{
+		.ident = "HP Compaq 420",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "HP 420"),
+		},
+	},
+
+	{ }	/* terminating entry */
+};
+
 void
 intel_tv_init(struct drm_device *dev)
 {
@@ -1757,6 +1770,10 @@  intel_tv_init(struct drm_device *dev)
 	if (!dev_priv->int_tv_support)
 		return;
 
+	/* wrongly detected TV outputs */
+	if (dmi_check_system(intel_bad_tv))
+		return;
+
 	/*
 	 * Sanity check the TV output by checking to see if the
 	 * DAC register holds a value