xf86-video-ati: Branch 'master' - 2 commits
Alex Deucher
agd5f at kemper.freedesktop.org
Tue Oct 27 08:42:18 PDT 2009
src/atombios_crtc.c | 10 ++++++++++
src/radeon_atombios.c | 9 +++++++++
src/radeon_output.c | 7 ++++++-
3 files changed, 25 insertions(+), 1 deletion(-)
New commits:
commit 5a0019126a57138ee506d9a66738c9e8b75cbb96
Author: Alex Deucher <alexdeucher at gmail.com>
Date: Tue Oct 27 11:39:06 2009 -0400
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 at gmail.com>
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index d513c13..fb7728f 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);
diff --git a/src/radeon_output.c b/src/radeon_output.c
index a252363..6e00ab8 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -2634,16 +2634,21 @@ radeon_output_clones (ScrnInfoPtr pScrn, xf86OutputPtr output)
int index_mask = 0;
/* DIG routing gets problematic */
- if (IS_DCE32_VARIANT)
+ if (info->ChipFamily >= CHIP_FAMILY_R600)
return index_mask;
/* LVDS is too wacky */
if (radeon_output->devices & (ATOM_DEVICE_LCD_SUPPORT))
return index_mask;
+ /* TV requires very specific timing */
if (radeon_output->devices & (ATOM_DEVICE_TV_SUPPORT))
return index_mask;
+ /* DVO requires 2x ppll clocks depending on the tmds chip */
+ if (radeon_output->devices & (ATOM_DEVICE_DFP2_SUPPORT))
+ return index_mask;
+
for (o = 0; o < config->num_output; o++) {
xf86OutputPtr clone = config->output[o];
RADEONOutputPrivatePtr radeon_clone = clone->driver_private;
commit 2a6eeec72d6bb04a32225883f431c1d2e8cff123
Author: Alex Deucher <alexdeucher at gmail.com>
Date: Tue Oct 27 11:18:44 2009 -0400
atom: loosen pll min output limits
Limiting the pll output range is a good thing generally as
it limits the number of possible pll combinations for a given
frequency presumably to the ones that work best on each card.
That's why the limits are in the bios tables. However, certain
duallink DVI monitors seem to like pll combinations that would
be limited by this at least on pre-DCE 3.0 r6xx hardware. This
might need to be adjusted per family or per clock range in the
future.
Fixes fdo bug 24727.
Signed-off-by: Alex Deucher <alexdeucher at gmail.com>
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index a8eded6..1f4b9dc 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -2171,6 +2171,15 @@ RADEONGetATOMClockInfo(ScrnInfoPtr pScrn)
if (pll->pll_out_min == 0)
pll->pll_out_min = 64800;
+ /* limiting the range is a good thing in most cases
+ * as it limits the number of matching pll combinations,
+ * however, some duallink DVI monitors seem to prefer combinations that
+ * would be limited by this. This may need to be revisited
+ * per chip family.
+ */
+ if (pll->pll_out_min > 64800)
+ pll->pll_out_min = 64800;
+
return TRUE;
}
More information about the xorg-commit
mailing list