diff options
author | Eric Anholt <eric@anholt.net> | 2008-03-20 15:14:46 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2008-06-26 09:29:17 -0700 |
commit | babedc600f8758b7e436adb93ffe8a5f2d7124ae (patch) | |
tree | 9c4c376a8f8c631599350b9c3ebb4ad18f1abd05 | |
parent | dcc841756f94ef61a1f1a991949efc917378baf1 (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.c | 18 |
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 |