summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/radeon_driver.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 15a94e72..63ea9dfa 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -2211,7 +2211,10 @@ RADEONSetFBLocation(ScrnInfoPtr pScrn)
unsigned char *RADEONMMIO = info->MMIO;
CARD32 mc_fb_location;
CARD32 mc_agp_location = INREG(RADEON_MC_AGP_LOCATION);
-
+ CARD32 bus_cntl = INREG(RADEON_BUS_CNTL);
+
+ OUTREG (RADEON_BUS_CNTL, bus_cntl | RADEON_BUS_MASTER_DIS);
+ RADEONWaitForIdleMMIO(pScrn);
/* This function has many problems with newer cards.
* Even with older cards, all registers changed here are not
@@ -2231,6 +2234,9 @@ RADEONSetFBLocation(ScrnInfoPtr pScrn)
OUTREG(RADEON_DISPLAY2_BASE_ADDR, info->fbLocation);
OUTREG(RADEON_OV0_BASE_ADDR, info->fbLocation);
}
+ OUTREG (RADEON_BUS_CNTL, bus_cntl);
+ RADEONWaitForIdleMMIO(pScrn);
+
return;
}
@@ -2271,6 +2277,8 @@ RADEONSetFBLocation(ScrnInfoPtr pScrn)
OUTREG(RADEON_DISPLAY2_BASE_ADDR, info->fbLocation);
OUTREG(RADEON_OV0_BASE_ADDR, info->fbLocation);
+ OUTREG (RADEON_BUS_CNTL, bus_cntl);
+ RADEONWaitForIdleMMIO(pScrn);
/* Set display0/1 priority up on r3/4xx in the memory controller for
* high res modes if the user specifies HIGH for displaypriority