From b1b77a4d6fb7404af9568644e1a8e050fdfa956e Mon Sep 17 00:00:00 2001 From: Alex Deucher Date: Wed, 19 Aug 2009 13:29:04 -0400 Subject: rs600: add support for DisplayPriority HIGH Still haven't implemented the actual watermark calculation, but this forces the display requests to urgent if the user specifies DisplayPriority HIGH. --- src/atombios_crtc.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'src/atombios_crtc.c') diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index 176efa65..341deb42 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -767,9 +767,37 @@ RADEONInitDispBandwidthAVIVO(ScrnInfoPtr pScrn, OUTREG(AVIVO_DC_LB_MEMORY_SPLIT, dc_lb_memory_split); #endif - // fixme - if (info->ChipFamily == CHIP_FAMILY_RS600) + /* fixme + * Still need to implement the actual watermark calculation + * for rs600. This just allows us to force high display + * priority. + */ + if (info->ChipFamily == CHIP_FAMILY_RS600) { + if (info->DispPriority == 2) { + uint32_t priority_cnt; + + if (mode1) { + priority_cnt = INREG(AVIVO_D1MODE_PRIORITY_A_CNT); + priority_cnt |= AVIVO_DxMODE_PRIORITY_ALWAYS_ON; + OUTREG(AVIVO_D1MODE_PRIORITY_A_CNT, priority_cnt); + + priority_cnt = INREG(AVIVO_D1MODE_PRIORITY_B_CNT); + priority_cnt |= AVIVO_DxMODE_PRIORITY_ALWAYS_ON; + OUTREG(AVIVO_D1MODE_PRIORITY_B_CNT, priority_cnt); + } + + if (mode2) { + priority_cnt = INREG(AVIVO_D2MODE_PRIORITY_A_CNT); + priority_cnt |= AVIVO_DxMODE_PRIORITY_ALWAYS_ON; + OUTREG(AVIVO_D2MODE_PRIORITY_A_CNT, priority_cnt); + + priority_cnt = INREG(AVIVO_D2MODE_PRIORITY_B_CNT); + priority_cnt |= AVIVO_DxMODE_PRIORITY_ALWAYS_ON; + OUTREG(AVIVO_D2MODE_PRIORITY_B_CNT, priority_cnt); + } + } return; + } /* IGP bandwidth - get from integrated systems table * SYSTEM_MEMORY_BANDWIDTH (Mbyte/s) = SYSTEM_MEMORY_CLOCK (MHz) * (1+DDR) * 8 * EFF * Num of channels -- cgit v1.2.3