diff --git a/src/atombios_output.c b/src/atombios_output.c index 148a1da..186864f 100644 --- a/src/atombios_output.c +++ b/src/atombios_output.c @@ -894,6 +894,19 @@ atombios_set_output_crtc_source(xf86OutputPtr output) return; } +static void +radeon_mbp_lcd_quirk(xf86OutputPtr output) +{ + RADEONInfoPtr info = RADEONPTR(output->scrn); + unsigned char *RADEONMMIO = info->MMIO; + uint32_t lvtma_bit_depth_control = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL); + + lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_TRUNCATE_EN; + //lvtma_bit_depth_control &= ~AVIVO_LVTMA_BIT_DEPTH_CONTROL_SPATIAL_DITHER_EN; + + OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, lvtma_bit_depth_control); +} + void atombios_output_mode_set(xf86OutputPtr output, DisplayModePtr mode, @@ -943,8 +956,10 @@ atombios_output_mode_set(xf86OutputPtr output, if (IS_DCE3_VARIANT) { atombios_output_dig2_setup(output, adjusted_mode); atombios_output_dig2_transmitter_setup(output, adjusted_mode); - } else + } else { atombios_output_digital_setup(output, ATOM_DEVICE_LCD1_INDEX, adjusted_mode); + radeon_mbp_lcd_quirk(output); + } } } else if ((radeon_output->MonType == MT_CTV) || (radeon_output->MonType == MT_STV) ||