@@ -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