diff options
author | Alex Deucher <alex@botch2.(none)> | 2008-02-11 16:36:58 -0500 |
---|---|---|
committer | Alex Deucher <alex@botch2.(none)> | 2008-02-11 16:36:58 -0500 |
commit | 85043439426e534e561259ce98bebdd8508b36a9 (patch) | |
tree | 4540772578754237872402a2dbf3fd6aa849be28 /src | |
parent | 9ab5d2ec7c583c74f364d7cfbb54bcd2cd8ae2f5 (diff) |
R6xx: make sure we set up the HDP base properly
Diffstat (limited to 'src')
-rw-r--r-- | src/radeon_driver.c | 8 | ||||
-rw-r--r-- | src/radeon_reg.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c index db73ca70..50343d29 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -1314,7 +1314,11 @@ static void RADEONInitMemoryMap(ScrnInfoPtr pScrn) */ if (IS_AVIVO_VARIANT) { - OUTREG(AVIVO_HDP_FB_LOCATION, info->mc_fb_location); + if (info->ChipFamily >= CHIP_FAMILY_R600) { + OUTREG(R600_HDP_NONSURFACE_BASE, (info->mc_fb_location << 16) & 0xff0000); + } else { + OUTREG(AVIVO_HDP_FB_LOCATION, info->mc_fb_location); + } info->mc_agp_location = 0x003f0000; } else info->mc_agp_location = 0xffffffc0; @@ -3596,6 +3600,8 @@ void RADEONRestoreMemMapRegisters(ScrnInfoPtr pScrn, if (info->ChipFamily < CHIP_FAMILY_R600) { OUTREG(AVIVO_HDP_FB_LOCATION, restore->mc_fb_location); + } else { + OUTREG(R600_HDP_NONSURFACE_BASE, (restore->mc_fb_location << 16) & 0xff0000); } /* Reset the engine and HDP */ diff --git a/src/radeon_reg.h b/src/radeon_reg.h index ec2a5ac5..b68e25c6 100644 --- a/src/radeon_reg.h +++ b/src/radeon_reg.h @@ -3801,6 +3801,8 @@ #define R600_MC_VM_SYSTEM_APERTURE_HIGH_ADDR 0x2194 #define R600_MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR 0x2198 +#define R600_HDP_NONSURFACE_BASE 0x2c04 + #define R600_BUS_CNTL 0x5420 #define R600_CONFIG_CNTL 0x5424 #define R600_CONFIG_MEMSIZE 0x5428 |