]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/gpu/drm/i915/intel_sdvo.c
include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[mv-sheeva.git] / drivers / gpu / drm / i915 / intel_sdvo.c
index 82678d30ab06504ba51840f0d5c773c53f330ae8..26e13a0bf30b8d68fd57826d4727a93aefa345a2 100644 (file)
@@ -26,6 +26,7 @@
  *     Eric Anholt <eric@anholt.net>
  */
 #include <linux/i2c.h>
+#include <linux/slab.h>
 #include <linux/delay.h>
 #include "drmP.h"
 #include "drm.h"
@@ -35,6 +36,7 @@
 #include "i915_drm.h"
 #include "i915_drv.h"
 #include "intel_sdvo_regs.h"
+#include <linux/dmi.h>
 
 static char *tv_format_names[] = {
        "NTSC_M"   , "NTSC_J"  , "NTSC_443",
@@ -2283,6 +2285,25 @@ intel_sdvo_get_slave_addr(struct drm_device *dev, int output_device)
                return 0x72;
 }
 
+static int intel_sdvo_bad_tv_callback(const struct dmi_system_id *id)
+{
+       DRM_DEBUG_KMS("Ignoring bad SDVO TV connector for %s\n", id->ident);
+       return 1;
+}
+
+static struct dmi_system_id intel_sdvo_bad_tv[] = {
+       {
+               .callback = intel_sdvo_bad_tv_callback,
+               .ident = "IntelG45/ICH10R/DME1737",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "IBM CORPORATION"),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "4800784"),
+               },
+       },
+
+       { }     /* terminating entry */
+};
+
 static bool
 intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags)
 {
@@ -2323,7 +2344,8 @@ intel_sdvo_output_setup(struct intel_output *intel_output, uint16_t flags)
                                        (1 << INTEL_SDVO_NON_TV_CLONE_BIT) |
                                        (1 << INTEL_ANALOG_CLONE_BIT);
                }
-       } else if (flags & SDVO_OUTPUT_SVID0) {
+       } else if ((flags & SDVO_OUTPUT_SVID0) &&
+                  !dmi_check_system(intel_sdvo_bad_tv)) {
 
                sdvo_priv->controlled_output = SDVO_OUTPUT_SVID0;
                encoder->encoder_type = DRM_MODE_ENCODER_TVDAC;