drm/i915: Read the right SDVO register when detecting SVDO/HDMI.
authorKristian Høgsberg <krh@redhat.com>
Tue, 7 Apr 2009 02:40:13 +0000 (19:40 -0700)
committerChris Wright <chrisw@sous-sol.org>
Mon, 27 Apr 2009 17:36:52 +0000 (10:36 -0700)
upstream commit: 13520b051e8888dd3af9bda639d83e7df76613d1

This fixes incorrect detection of the second SDVO/HDMI output on G4X, and
extra boot time on pre-G4X.

Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
drivers/gpu/drm/i915/intel_display.c

index a2834276cb38637949648dad2ae2b59de8995fbf..601a76fa61decffbbd9dd6d35a86aefe47d7111e 100644 (file)
@@ -1474,13 +1474,21 @@ static void intel_setup_outputs(struct drm_device *dev)
 
        if (IS_I9XX(dev)) {
                int found;
+               u32 reg;
 
                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)) {
+
+               /* Before G4X SDVOC doesn't have its own detect register */
+               if (IS_G4X(dev))
+                       reg = SDVOC;
+               else
+                       reg = SDVOB;
+
+               if (I915_READ(reg) & SDVO_DETECTED) {
                        found = intel_sdvo_init(dev, SDVOC);
                        if (!found && SUPPORTS_INTEGRATED_HDMI(dev))
                                intel_hdmi_init(dev, SDVOC);