diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-01-19 17:16:10 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-01-24 02:24:23 -0500 |
commit | fc10332b8ac5ca32d11f898027d84c007543bd80 (patch) | |
tree | 28b24fb83e4c4bfc71286ce93f01271fa5027c95 /drivers/gpu/drm/radeon/atombios_crtc.c | |
parent | a348c84d953f61c776e53cde0a63a4e407a23c18 (diff) |
drm/radeon/kms: clean up pll struct
- add a new flag for fixed post div
- pull the pll flags into the struct
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/atombios_crtc.c')
-rw-r--r-- | drivers/gpu/drm/radeon/atombios_crtc.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c index 7af5c1f7b6de..7a8cdf2813dc 100644 --- a/drivers/gpu/drm/radeon/atombios_crtc.c +++ b/drivers/gpu/drm/radeon/atombios_crtc.c | |||
@@ -426,7 +426,11 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
426 | uint32_t adjusted_clock; | 426 | uint32_t adjusted_clock; |
427 | uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0; | 427 | uint32_t ref_div = 0, fb_div = 0, frac_fb_div = 0, post_div = 0; |
428 | struct radeon_pll *pll; | 428 | struct radeon_pll *pll; |
429 | int pll_flags = 0; | 429 | |
430 | if (radeon_crtc->crtc_id == 0) | ||
431 | pll = &rdev->clock.p1pll; | ||
432 | else | ||
433 | pll = &rdev->clock.p2pll; | ||
430 | 434 | ||
431 | memset(&args, 0, sizeof(args)); | 435 | memset(&args, 0, sizeof(args)); |
432 | 436 | ||
@@ -434,20 +438,20 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
434 | if ((rdev->family == CHIP_RS600) || | 438 | if ((rdev->family == CHIP_RS600) || |
435 | (rdev->family == CHIP_RS690) || | 439 | (rdev->family == CHIP_RS690) || |
436 | (rdev->family == CHIP_RS740)) | 440 | (rdev->family == CHIP_RS740)) |
437 | pll_flags |= (RADEON_PLL_USE_FRAC_FB_DIV | | 441 | pll->flags |= (RADEON_PLL_USE_FRAC_FB_DIV | |
438 | RADEON_PLL_PREFER_CLOSEST_LOWER); | 442 | RADEON_PLL_PREFER_CLOSEST_LOWER); |
439 | 443 | ||
440 | if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */ | 444 | if (ASIC_IS_DCE32(rdev) && mode->clock > 200000) /* range limits??? */ |
441 | pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; | 445 | pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; |
442 | else | 446 | else |
443 | pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; | 447 | pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV; |
444 | } else { | 448 | } else { |
445 | pll_flags |= RADEON_PLL_LEGACY; | 449 | pll->flags |= RADEON_PLL_LEGACY; |
446 | 450 | ||
447 | if (mode->clock > 200000) /* range limits??? */ | 451 | if (mode->clock > 200000) /* range limits??? */ |
448 | pll_flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; | 452 | pll->flags |= RADEON_PLL_PREFER_HIGH_FB_DIV; |
449 | else | 453 | else |
450 | pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; | 454 | pll->flags |= RADEON_PLL_PREFER_LOW_REF_DIV; |
451 | 455 | ||
452 | } | 456 | } |
453 | 457 | ||
@@ -456,10 +460,10 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
456 | if (!ASIC_IS_AVIVO(rdev)) { | 460 | if (!ASIC_IS_AVIVO(rdev)) { |
457 | if (encoder->encoder_type != | 461 | if (encoder->encoder_type != |
458 | DRM_MODE_ENCODER_DAC) | 462 | DRM_MODE_ENCODER_DAC) |
459 | pll_flags |= RADEON_PLL_NO_ODD_POST_DIV; | 463 | pll->flags |= RADEON_PLL_NO_ODD_POST_DIV; |
460 | if (encoder->encoder_type == | 464 | if (encoder->encoder_type == |
461 | DRM_MODE_ENCODER_LVDS) | 465 | DRM_MODE_ENCODER_LVDS) |
462 | pll_flags |= RADEON_PLL_USE_REF_DIV; | 466 | pll->flags |= RADEON_PLL_USE_REF_DIV; |
463 | } | 467 | } |
464 | radeon_encoder = to_radeon_encoder(encoder); | 468 | radeon_encoder = to_radeon_encoder(encoder); |
465 | break; | 469 | break; |
@@ -494,23 +498,18 @@ void atombios_crtc_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode) | |||
494 | adjusted_clock = mode->clock; | 498 | adjusted_clock = mode->clock; |
495 | } | 499 | } |
496 | 500 | ||
497 | if (radeon_crtc->crtc_id == 0) | ||
498 | pll = &rdev->clock.p1pll; | ||
499 | else | ||
500 | pll = &rdev->clock.p2pll; | ||
501 | |||
502 | if (ASIC_IS_AVIVO(rdev)) { | 501 | if (ASIC_IS_AVIVO(rdev)) { |
503 | if (radeon_new_pll) | 502 | if (radeon_new_pll) |
504 | radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, | 503 | radeon_compute_pll_avivo(pll, adjusted_clock, &pll_clock, |
505 | &fb_div, &frac_fb_div, | 504 | &fb_div, &frac_fb_div, |
506 | &ref_div, &post_div, pll_flags); | 505 | &ref_div, &post_div); |
507 | else | 506 | else |
508 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, | 507 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, |
509 | &fb_div, &frac_fb_div, | 508 | &fb_div, &frac_fb_div, |
510 | &ref_div, &post_div, pll_flags); | 509 | &ref_div, &post_div); |
511 | } else | 510 | } else |
512 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, | 511 | radeon_compute_pll(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, |
513 | &ref_div, &post_div, pll_flags); | 512 | &ref_div, &post_div); |
514 | 513 | ||
515 | index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); | 514 | index = GetIndexIntoMasterTable(COMMAND, SetPixelClock); |
516 | atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, | 515 | atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, |