drm/i915: Skip SDVO/HDMI init when the chipset tells us it's not present.
authorEric Anholt <eric@anholt.net>
Thu, 22 Jan 2009 21:01:02 +0000 (13:01 -0800)
committerDave Airlie <airlied@linux.ie>
Sun, 8 Feb 2009 11:37:45 +0000 (21:37 +1000)
This saves startup time from probing SDVO, and saves setting up HDMI outputs
on G4X devices that don't have them.

Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/gpu/drm/i915/intel_display.c

index 31c3732b7a690aa7d813f4ecad46a071a7ef684f..dce1abfa6496023c1e21173f0cfb29b2d04dc3fa 100644 (file)
@@ -1452,6 +1452,7 @@ static int intel_connector_clones(struct drm_device *dev, int type_mask)
 
 static void intel_setup_outputs(struct drm_device *dev)
 {
+       struct drm_i915_private *dev_priv = dev->dev_private;
        struct drm_connector *connector;
 
        intel_crt_init(dev);
@@ -1463,13 +1464,16 @@ static void intel_setup_outputs(struct drm_device *dev)
        if (IS_I9XX(dev)) {
                int found;
 
-               found = intel_sdvo_init(dev, SDVOB);
-               if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
-                       intel_hdmi_init(dev, SDVOB);
-
-               found = intel_sdvo_init(dev, SDVOC);
-               if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
-                       intel_hdmi_init(dev, SDVOC);
+               if (I915_READ(SDVOB) & SDVO_DETECTED) {
+                       found = intel_sdvo_init(dev, SDVOB);
+                       if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
+                               intel_hdmi_init(dev, SDVOB);
+               }
+               if (!IS_G4X(dev) || (I915_READ(SDVOB) & SDVO_DETECTED)) {
+                       found = intel_sdvo_init(dev, SDVOC);
+                       if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
+                               intel_hdmi_init(dev, SDVOC);
+               }
        } else
                intel_dvo_init(dev);