summaryrefslogtreecommitdiff
path: root/linux-core/atombios_crtc.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2008-09-18 15:11:48 -0400
committerAlex Deucher <alexdeucher@gmail.com>2008-09-18 15:11:48 -0400
commite1e782af5ddafdd24a4cf741139bb0b8e682e543 (patch)
tree0deae8b6d7f44bc19a1212c98012302d9136a247 /linux-core/atombios_crtc.c
parent6d0de5a899ea883693737333b4b0511c28f32d92 (diff)
Radeon: restructure PLL data
- store pixel clocks, core clock, and memory clocks separately - grab all pll limits from bios tables
Diffstat (limited to 'linux-core/atombios_crtc.c')
-rw-r--r--linux-core/atombios_crtc.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/linux-core/atombios_crtc.c b/linux-core/atombios_crtc.c
index 0a86f36b..03077a13 100644
--- a/linux-core/atombios_crtc.c
+++ b/linux-core/atombios_crtc.c
@@ -163,13 +163,19 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode,
PIXEL_CLOCK_PARAMETERS_V3 *spc3_ptr;
uint32_t sclock = mode->clock;
uint32_t ref_div = 0, fb_div = 0, post_div = 0;
+ struct radeon_pll *pll;
memset(&spc_param, 0, sizeof(SET_PIXEL_CLOCK_PS_ALLOCATION));
pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
- radeon_compute_pll(&dev_priv->mode_info.pll, mode->clock,
- &sclock, &fb_div, &ref_div, &post_div, pll_flags);
+ if (radeon_crtc->crtc_id == 0)
+ pll = &dev_priv->mode_info.p1pll;
+ else
+ pll = &dev_priv->mode_info.p2pll;
+
+ radeon_compute_pll(pll, mode->clock, &sclock,
+ &fb_div, &ref_div, &post_div, pll_flags);
if (radeon_is_avivo(dev_priv)) {
uint32_t ss_cntl;
@@ -338,6 +344,8 @@ void atombios_crtc_mode_set(struct drm_crtc *crtc,
if (radeon_is_avivo(dev_priv))
atombios_crtc_set_base(crtc, x, y);
+ else
+ radeon_crtc_set_base(crtc, x, y);
atombios_crtc_set_pll(crtc, adjusted_mode, pll_flags);