summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2009-09-18 14:29:32 +1000
committerDave Airlie <airlied@redhat.com>2009-09-18 14:29:32 +1000
commit52279251fae9df99c569c16e2522bbd346d8ec38 (patch)
treedfad5936a0c623e1fa26ab92d13ff2497dd72913
parent2c46bafcb77c4125a27c18ad6ca2f6de5f143a2d (diff)
avivo: disable VGA rendering core when starting X.
this thing can be rendering to VRAM when we don't expect it. turn it off. Signed-off-by: Dave Airlie <airlied@redhat.com>
-rw-r--r--src/radeon_driver.c6
-rw-r--r--src/radeon_probe.h1
2 files changed, 7 insertions, 0 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 67fb9b73..2de682ff 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -3849,6 +3849,9 @@ void RADEONRestoreMemMapRegisters(ScrnInfoPtr pScrn,
RADEONWaitForIdleMMIO(pScrn);
+ /* disable VGA rendering core */
+ OUTREG(AVIVO_VGA_RENDER_CONTROL, INREG(AVIVO_VGA_RENDER_CONTROL) &~ AVIVO_VGA_VSTATUS_CNTL_MASK);
+
OUTREG(AVIVO_D1VGA_CONTROL, INREG(AVIVO_D1VGA_CONTROL) & ~AVIVO_DVGA_CONTROL_MODE_ENABLE);
OUTREG(AVIVO_D2VGA_CONTROL, INREG(AVIVO_D2VGA_CONTROL) & ~AVIVO_DVGA_CONTROL_MODE_ENABLE);
@@ -4327,6 +4330,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
// state->vga_fb_start = INREG(AVIVO_VGA_FB_START);
state->vga1_cntl = INREG(AVIVO_D1VGA_CONTROL);
state->vga2_cntl = INREG(AVIVO_D2VGA_CONTROL);
+ state->vga_render_control = INREG(AVIVO_VGA_RENDER_CONTROL);
state->crtc_master_en = INREG(AVIVO_DC_CRTC_MASTER_EN);
state->crtc_tv_control = INREG(AVIVO_DC_CRTC_TV_CONTROL);
@@ -5061,6 +5065,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
OUTREG(AVIVO_D2CRTC_BLANK_CONTROL, state->crtc2.blank_control);
/* Dbl check */
+ OUTREG(AVIVO_VGA_RENDER_CONTROL, state->vga_render_control);
OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl);
OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl);
@@ -5073,6 +5078,7 @@ static void avivo_restore_vga_regs(ScrnInfoPtr pScrn, RADEONSavePtr restore)
unsigned char *RADEONMMIO = info->MMIO;
struct avivo_state *state = &restore->avivo;
+ OUTREG(AVIVO_VGA_RENDER_CONTROL, state->vga_render_control);
OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl);
OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl);
}
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 9cac15c5..9b2cd704 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -341,6 +341,7 @@ struct avivo_state
uint32_t vga1_cntl;
uint32_t vga2_cntl;
+ uint32_t vga_render_control;
uint32_t crtc_master_en;
uint32_t crtc_tv_control;