diff options
author | Eric Anholt <eric@anholt.net> | 2008-04-08 13:53:51 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2008-04-09 15:18:22 -0700 |
commit | 5db73f18d2badec37523850024b9aa824e4e6bd8 (patch) | |
tree | eb75f4b29a824c3d04811945c020b06fcd9a8488 /src/i830_display.c | |
parent | e031cc02e65acfbafb48136dad414751e04425c5 (diff) |
SDVO: Use the TV reference clock for SDVO TV outputs.
Based on a patch by Will Wiseman.
Diffstat (limited to 'src/i830_display.c')
-rw-r--r-- | src/i830_display.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/i830_display.c b/src/i830_display.c index 4091e792..ca5e5dcb 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -1100,6 +1100,8 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, break; case I830_OUTPUT_SDVO: is_sdvo = TRUE; + if (intel_output->needs_tv_clock) + is_tv = TRUE; break; case I830_OUTPUT_DVO_TMDS: case I830_OUTPUT_DVO_LVDS: @@ -1144,7 +1146,8 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, if (is_sdvo) { dpll |= DPLL_DVO_HIGH_SPEED; - if (IS_I945G(pI830) || IS_I945GM(pI830) || IS_G33CLASS(pI830)) + if ((IS_I945G(pI830) || IS_I945GM(pI830) || IS_G33CLASS(pI830)) && + !is_tv) { int sdvo_pixel_multiply = adjusted_mode->Clock / mode->Clock; dpll |= (sdvo_pixel_multiply - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; @@ -1182,7 +1185,9 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, } } - if (is_tv) + if (is_sdvo && is_tv) + dpll |= PLL_REF_INPUT_TVCLKINBC; + else if (is_tv) { /* XXX: just matching BIOS for now */ /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ |