aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon')
-rw-r--r--drivers/gpu/drm/radeon/r100.c5
-rw-r--r--drivers/gpu/drm/radeon/rs400.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 1b23106f9552..a3db56bb013d 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -215,7 +215,6 @@ int r100_mc_init(struct radeon_device *rdev)
215 r100_pci_gart_disable(rdev); 215 r100_pci_gart_disable(rdev);
216 216
217 /* Setup GPU memory space */ 217 /* Setup GPU memory space */
218 rdev->mc.vram_location = 0xFFFFFFFFUL;
219 rdev->mc.gtt_location = 0xFFFFFFFFUL; 218 rdev->mc.gtt_location = 0xFFFFFFFFUL;
220 if (rdev->flags & RADEON_IS_AGP) { 219 if (rdev->flags & RADEON_IS_AGP) {
221 r = radeon_agp_init(rdev); 220 r = radeon_agp_init(rdev);
@@ -1265,6 +1264,8 @@ void r100_vram_info(struct radeon_device *rdev)
1265 /* read NB_TOM to get the amount of ram stolen for the GPU */ 1264 /* read NB_TOM to get the amount of ram stolen for the GPU */
1266 tom = RREG32(RADEON_NB_TOM); 1265 tom = RREG32(RADEON_NB_TOM);
1267 rdev->mc.vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16); 1266 rdev->mc.vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16);
1267 /* for IGPs we need to keep VRAM where it was put by the BIOS */
1268 rdev->mc.vram_location = (tom & 0xffff) << 16;
1268 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size); 1269 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
1269 } else { 1270 } else {
1270 rdev->mc.vram_size = RREG32(RADEON_CONFIG_MEMSIZE); 1271 rdev->mc.vram_size = RREG32(RADEON_CONFIG_MEMSIZE);
@@ -1275,6 +1276,8 @@ void r100_vram_info(struct radeon_device *rdev)
1275 rdev->mc.vram_size = 8192 * 1024; 1276 rdev->mc.vram_size = 8192 * 1024;
1276 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size); 1277 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
1277 } 1278 }
1279 /* let driver place VRAM */
1280 rdev->mc.vram_location = 0xFFFFFFFFUL;
1278 } 1281 }
1279 1282
1280 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); 1283 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c
index 3275de4b6e3b..a18d053065c0 100644
--- a/drivers/gpu/drm/radeon/rs400.c
+++ b/drivers/gpu/drm/radeon/rs400.c
@@ -235,7 +235,6 @@ int rs400_mc_init(struct radeon_device *rdev)
235 rdev->mc.gtt_location = rdev->mc.vram_size; 235 rdev->mc.gtt_location = rdev->mc.vram_size;
236 rdev->mc.gtt_location += (rdev->mc.gtt_size - 1); 236 rdev->mc.gtt_location += (rdev->mc.gtt_size - 1);
237 rdev->mc.gtt_location &= ~(rdev->mc.gtt_size - 1); 237 rdev->mc.gtt_location &= ~(rdev->mc.gtt_size - 1);
238 rdev->mc.vram_location = 0xFFFFFFFFUL;
239 r = radeon_mc_setup(rdev); 238 r = radeon_mc_setup(rdev);
240 if (r) { 239 if (r) {
241 return r; 240 return r;
@@ -305,7 +304,10 @@ void rs400_vram_info(struct radeon_device *rdev)
305 rdev->mc.vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16); 304 rdev->mc.vram_size = (((tom >> 16) - (tom & 0xffff) + 1) << 16);
306 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size); 305 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
307 306
308 /* Could aper size report 0 ? */ 307 /* RS480 IGPs don't seem to translate to main RAM, they
308 * just reserve and scan out of it. So setting VRAM location
309 * to say 0, will actually trash the OS. */
310 rdev->mc.vram_location = (tom & 0xffff) << 16;
309 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0); 311 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
310 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0); 312 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
311} 313}