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-19 15:01:35 -0700
commit2fa9240a3b685a0c3d0e2644fc144c927b67b6b3 (patch)
treea42ed6845b5769898d788072103eaab1b3d16e56
parentdc8ab9d35b261b6105a62949cfb47a3554531d0b (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).
-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