summaryrefslogtreecommitdiff
path: root/src/atombios_crtc.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-10-27 11:39:06 -0400
committerAlex Deucher <alexdeucher@gmail.com>2009-10-27 11:39:06 -0400
commit5a0019126a57138ee506d9a66738c9e8b75cbb96 (patch)
tree3f5cddab19cf311b793c604da4bc109233ba9a22 /src/atombios_crtc.c
parent2a6eeec72d6bb04a32225883f431c1d2e8cff123 (diff)
radeon: fix DVO on AVIVO chips
DVO generally requires 2x ppll on AVIVO cards due to the way the tmds chip is wired up. Because of this, disable cloning of DVO outputs. fixes fdo bug 21857. Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Diffstat (limited to 'src/atombios_crtc.c')
-rw-r--r--src/atombios_crtc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index d513c139..fb7728fa 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -324,6 +324,16 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode)
else
pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
+ for (i = 0; i < xf86_config->num_output; i++) {
+ xf86OutputPtr output = xf86_config->output[i];
+ if (output->crtc == crtc) {
+ radeon_encoder = radeon_get_encoder(output);
+ /* DVO seems to want 2x pixel clock */
+ if (radeon_encoder && (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1))
+ sclock *= 2;
+ }
+ }
+
/* disable spread spectrum clocking for now -- thanks Hedy Lamarr */
if (radeon_crtc->crtc_id == 0) {
temp = INREG(AVIVO_P1PLL_INT_SS_CNTL);