diff options
-rw-r--r-- | src/atombios_crtc.c | 7 | ||||
-rw-r--r-- | src/radeon.h | 1 | ||||
-rw-r--r-- | src/radeon_crtc.c | 6 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index 7c628bfb..d18f2cf3 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -174,6 +174,7 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode) SET_PIXEL_CLOCK_PS_ALLOCATION spc_param; PIXEL_CLOCK_PARAMETERS_V2 *spc2_ptr; PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr; + int pll_flags = 0; xf86OutputPtr output; RADEONOutputPrivatePtr radeon_output = NULL; @@ -185,7 +186,11 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode) if (IS_AVIVO_VARIANT) { CARD32 temp; - RADEONComputePLL(&info->pll, mode->Clock, &temp, &fb_div, &ref_div, &post_div, 0); + + if (IS_DCE3_VARIANT) + pll_flags |= RADEON_PLL_DCE3; + + RADEONComputePLL(&info->pll, mode->Clock, &temp, &fb_div, &ref_div, &post_div, pll_flags); sclock = temp; /* disable spread spectrum clocking for now -- thanks Hedy Lamarr */ diff --git a/src/radeon.h b/src/radeon.h index fe45428e..a67f375c 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -214,6 +214,7 @@ typedef struct { #define RADEON_PLL_NO_ODD_POST_DIV (1 << 1) #define RADEON_PLL_USE_REF_DIV (1 << 2) #define RADEON_PLL_LEGACY (1 << 3) +#define RADEON_PLL_DCE3 (1 << 4) typedef struct { CARD16 reference_freq; diff --git a/src/radeon_crtc.c b/src/radeon_crtc.c index 87514b02..b2c6e133 100644 --- a/src/radeon_crtc.c +++ b/src/radeon_crtc.c @@ -190,8 +190,10 @@ RADEONComputePLL(RADEONPLLPtr pll, best_vco_diff = vco_diff; } } - if (best_freq == freq) - break; + if (!(flags & RADEON_PLL_DCE3)) { + if (best_freq == freq) + break; + } } ErrorF("best_freq: %u\n", (unsigned int)best_freq); |