aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r300.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-02-18 09:23:49 -0500
committerDave Airlie <airlied@redhat.com>2010-02-22 18:46:22 -0500
commit8e36113082821980c60ce89a6c5d45fc9492fc26 (patch)
tree2c0ffa78cde79e852fbb58ecb32dd06dbcd7bb6e /drivers/gpu/drm/radeon/r300.c
parentf735261baab3a275a273533c391d2d1b86a9e66a (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/drm/radeon/r300.c')
-rw-r--r--drivers/gpu/drm/radeon/r300.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index 7e9f95653cbe..b188aae764cc 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)
461 */ 461 */
462void r300_mc_init(struct radeon_device *rdev) 462void r300_mc_init(struct radeon_device *rdev)
463{ 463{
464 uint32_t tmp; 464 u64 base;
465 u32 tmp;
465 466
466 /* DDR for all card after R300 & IGP */ 467 /* DDR for all card after R300 & IGP */
467 rdev->mc.vram_is_ddr = true; 468 rdev->mc.vram_is_ddr = true;
@@ -474,6 +475,10 @@ void r300_mc_init(struct radeon_device *rdev)
474 default: rdev->mc.vram_width = 128; break; 475 default: rdev->mc.vram_width = 128; break;
475 } 476 }
476 r100_vram_init_sizes(rdev); 477 r100_vram_init_sizes(rdev);
478 base = rdev->mc.aper_base;
479 if (rdev->flags & RADEON_IS_IGP)
480 base = (RREG32(RADEON_NB_TOM) & 0xffff) << 16;
481 radeon_vram_location(rdev, &rdev->mc, base);
477 if (!(rdev->flags & RADEON_IS_AGP)) 482 if (!(rdev->flags & RADEON_IS_AGP))
478 radeon_gtt_location(rdev, &rdev->mc); 483 radeon_gtt_location(rdev, &rdev->mc);
479} 484}