--- original/src/atombios_output.c 2008-09-18 11:15:37.000000000 -0700 +++ working/src/atombios_output.c 2008-09-22 12:42:39.000000000 -0700 @@ -620,7 +620,18 @@ dfp_disable_dither(xf86OutputPtr output, break; /*case ATOM_DEVICE_LCD1_SUPPORT:*/ /* LVDS panels need dither enabled */ case ATOM_DEVICE_DFP3_SUPPORT: - OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */ + /* On DCE3 chips, the block layout changed */ + if ((info->ChipFamily == CHIP_FAMILY_RV620) || + (info->ChipFamily == CHIP_FAMILY_RV635) || + (info->ChipFamily == CHIP_FAMILY_RS780) || + (info->ChipFamily == CHIP_FAMILY_RV770)) { + /* Enable dithering for these chipsets */ + long int val = (1 << 14) | (1 << 16) | (1 << 21) | (1 << 24); + OUTREG(0x6710, val); + OUTREG(0x6f10, val); + } else { + OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */ + } break; default: break; @@ -954,7 +965,12 @@ atombios_output_mode_set(xf86OutputPtr o atombios_output_lvds_setup(output, adjusted_mode); dfp_disable_dither(output, ATOM_DEVICE_LCD1_SUPPORT); } - } + } else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) { + atombios_output_dig2_setup(output, adjusted_mode); + atombios_output_dig2_transmitter_setup(output, adjusted_mode); + /* Fixme: Actually we're ENabling dithering here... */ + dfp_disable_dither(output, ATOM_DEVICE_DFP3_SUPPORT); + } } else if ((radeon_output->MonType == MT_CTV) || (radeon_output->MonType == MT_STV) || (radeon_output->MonType == MT_CV)) {