summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2008-03-20 15:14:46 -0700
committerEric Anholt <eric@anholt.net>2008-06-26 09:29:17 -0700
commitbabedc600f8758b7e436adb93ffe8a5f2d7124ae (patch)
tree9c4c376a8f8c631599350b9c3ebb4ad18f1abd05
parentdcc841756f94ef61a1f1a991949efc917378baf1 (diff)
Get HDMI output working.
HDMI, despite claiming to have pixel multiply support, actually doesn't want it, at least in the way that SDVO did. Disable it. Also disable the NULL_PACKETS_DURING_VSYNC bit. Despite the docs telling us to set it, the output doesn't like it when you do that, and the BIOS doesn't set it. Also add a posting read to SDVOx setting. Without it, half the X starts wouldn't get anything on the screen. (interestingly, it was every other startup, not just a chance). (cherry picked from commit 2fa9240a3b685a0c3d0e2644fc144c927b67b6b3)
-rw-r--r--src/i830_hdmi.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c
index 931a55c3..c256296e 100644
--- a/src/i830_hdmi.c
+++ b/src/i830_hdmi.c
@@ -52,25 +52,13 @@ i830_hdmi_mode_valid(xf86OutputPtr output, DisplayModePtr mode)
return MODE_OK;
}
-static int
-i830_hdmi_get_pixel_multiplier(DisplayModePtr mode)
-{
- if (mode->Clock >= 100000)
- return 1;
- else if (mode->Clock >= 50000)
- return 2;
- else
- return 4;
-}
-
static Bool
i830_hdmi_mode_fixup(xf86OutputPtr output, DisplayModePtr mode,
DisplayModePtr adjusted_mode)
{
- /* Make the CRTC code factor in the SDVO pixel multiplier.
+ /* The HDMI output doesn't need the pixel multiplication that SDVO does,
+ * so no fixup.
*/
- adjusted_mode->Clock *= i830_hdmi_get_pixel_multiplier(mode);
-
return TRUE;
}
@@ -88,13 +76,13 @@ i830_hdmi_mode_set(xf86OutputPtr output, DisplayModePtr mode,
sdvox = SDVO_ENCODING_HDMI |
SDVO_BORDER_ENABLE |
- SDVO_NULL_PACKETS_DURING_VSYNC |
SDVO_VSYNC_ACTIVE_HIGH |
SDVO_HSYNC_ACTIVE_HIGH;
if (intel_crtc->pipe == 1)
sdvox |= SDVO_PIPE_B_SELECT;
OUTREG(dev_priv->output_reg, sdvox);
+ POSTING_READ(sdvox);
}
static void