diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2010-10-04 17:13:01 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-10-05 21:46:26 -0400 |
commit | ba032a58d1f320039e7850fb6e8651695c1aa571 (patch) | |
tree | f883a015e10d00b79505d16682d504e6914118e8 /drivers/gpu/drm/radeon/radeon_encoders.c | |
parent | 48dfaaeb6637240af3089bf9b7a00a6cf24e0182 (diff) |
drm/radeon/kms: rework spread spectrum handling
This patch reworks spread spectrum handling to enable it
properly on lvds and DP/eDP links. It also fixes several
bugs in the old spread spectrum code.
- Use the ss recommended reference divider if available
when calculating the pll
- Use the proper ss command tables on pre-DCE3 asics
- Avoid reading past the end of the ss info tables
- Enable ss on evergreen asics (lvds, dp, tmds)
- Enable ss on DP/eDP links
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_encoders.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_encoders.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c index 2c293e8304d..ae58b6849a2 100644 --- a/drivers/gpu/drm/radeon/radeon_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_encoders.c | |||
@@ -529,9 +529,9 @@ atombios_digital_setup(struct drm_encoder *encoder, int action) | |||
529 | args.v1.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; | 529 | args.v1.ucMisc |= PANEL_ENCODER_MISC_HDMI_TYPE; |
530 | args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10); | 530 | args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10); |
531 | if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { | 531 | if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { |
532 | if (dig->lvds_misc & ATOM_PANEL_MISC_DUAL) | 532 | if (dig->lcd_misc & ATOM_PANEL_MISC_DUAL) |
533 | args.v1.ucMisc |= PANEL_ENCODER_MISC_DUAL; | 533 | args.v1.ucMisc |= PANEL_ENCODER_MISC_DUAL; |
534 | if (dig->lvds_misc & ATOM_PANEL_MISC_888RGB) | 534 | if (dig->lcd_misc & ATOM_PANEL_MISC_888RGB) |
535 | args.v1.ucMisc |= (1 << 1); | 535 | args.v1.ucMisc |= (1 << 1); |
536 | } else { | 536 | } else { |
537 | if (dig->linkb) | 537 | if (dig->linkb) |
@@ -558,18 +558,18 @@ atombios_digital_setup(struct drm_encoder *encoder, int action) | |||
558 | args.v2.ucTemporal = 0; | 558 | args.v2.ucTemporal = 0; |
559 | args.v2.ucFRC = 0; | 559 | args.v2.ucFRC = 0; |
560 | if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { | 560 | if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { |
561 | if (dig->lvds_misc & ATOM_PANEL_MISC_DUAL) | 561 | if (dig->lcd_misc & ATOM_PANEL_MISC_DUAL) |
562 | args.v2.ucMisc |= PANEL_ENCODER_MISC_DUAL; | 562 | args.v2.ucMisc |= PANEL_ENCODER_MISC_DUAL; |
563 | if (dig->lvds_misc & ATOM_PANEL_MISC_SPATIAL) { | 563 | if (dig->lcd_misc & ATOM_PANEL_MISC_SPATIAL) { |
564 | args.v2.ucSpatial = PANEL_ENCODER_SPATIAL_DITHER_EN; | 564 | args.v2.ucSpatial = PANEL_ENCODER_SPATIAL_DITHER_EN; |
565 | if (dig->lvds_misc & ATOM_PANEL_MISC_888RGB) | 565 | if (dig->lcd_misc & ATOM_PANEL_MISC_888RGB) |
566 | args.v2.ucSpatial |= PANEL_ENCODER_SPATIAL_DITHER_DEPTH; | 566 | args.v2.ucSpatial |= PANEL_ENCODER_SPATIAL_DITHER_DEPTH; |
567 | } | 567 | } |
568 | if (dig->lvds_misc & ATOM_PANEL_MISC_TEMPORAL) { | 568 | if (dig->lcd_misc & ATOM_PANEL_MISC_TEMPORAL) { |
569 | args.v2.ucTemporal = PANEL_ENCODER_TEMPORAL_DITHER_EN; | 569 | args.v2.ucTemporal = PANEL_ENCODER_TEMPORAL_DITHER_EN; |
570 | if (dig->lvds_misc & ATOM_PANEL_MISC_888RGB) | 570 | if (dig->lcd_misc & ATOM_PANEL_MISC_888RGB) |
571 | args.v2.ucTemporal |= PANEL_ENCODER_TEMPORAL_DITHER_DEPTH; | 571 | args.v2.ucTemporal |= PANEL_ENCODER_TEMPORAL_DITHER_DEPTH; |
572 | if (((dig->lvds_misc >> ATOM_PANEL_MISC_GREY_LEVEL_SHIFT) & 0x3) == 2) | 572 | if (((dig->lcd_misc >> ATOM_PANEL_MISC_GREY_LEVEL_SHIFT) & 0x3) == 2) |
573 | args.v2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; | 573 | args.v2.ucTemporal |= PANEL_ENCODER_TEMPORAL_LEVEL_4; |
574 | } | 574 | } |
575 | } else { | 575 | } else { |