diff options
author | Jerome Glisse <jglisse@redhat.com> | 2010-02-18 14:23:49 +0000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-02-23 09:46:22 +1000 |
commit | 8e36113082821980c60ce89a6c5d45fc9492fc26 (patch) | |
tree | 2c0ffa78cde79e852fbb58ecb32dd06dbcd7bb6e /drivers/gpu | |
parent | f735261baab3a275a273533c391d2d1b86a9e66a (diff) |
drm/radeon/kms: fix R3XX/R4XX memory controller initialization
Version 2 of memory controller did break the initialization for
R3XX/R4XX hardware. This patch fix it.
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/r300.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c index 7e9f95653cb..b188aae764c 100644 --- a/drivers/gpu/drm/radeon/r300.c +++ b/drivers/gpu/drm/radeon/r300.c @@ -461,7 +461,8 @@ int r300_gpu_reset(struct radeon_device *rdev) */ void r300_mc_init(struct radeon_device *rdev) { - uint32_t tmp; + u64 base; + u32 tmp; /* DDR for all card after R300 & IGP */ rdev->mc.vram_is_ddr = true; @@ -474,6 +475,10 @@ void r300_mc_init(struct radeon_device *rdev) default: rdev->mc.vram_width = 128; break; } r100_vram_init_sizes(rdev); + base = rdev->mc.aper_base; + if (rdev->flags & RADEON_IS_IGP) + base = (RREG32(RADEON_NB_TOM) & 0xffff) << 16; + radeon_vram_location(rdev, &rdev->mc, base); if (!(rdev->flags & RADEON_IS_AGP)) radeon_gtt_location(rdev, &rdev->mc); } |