aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/r300.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/r300.c')
-rw-r--r--drivers/gpu/drm/radeon/r300.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c
index a4f395226b34..7e9f95653cbe 100644
--- a/drivers/gpu/drm/radeon/r300.c
+++ b/drivers/gpu/drm/radeon/r300.c
@@ -121,15 +121,15 @@ int rv370_pcie_gart_enable(struct radeon_device *rdev)
121 /* discard memory request outside of configured range */ 121 /* discard memory request outside of configured range */
122 tmp = RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD; 122 tmp = RADEON_PCIE_TX_GART_UNMAPPED_ACCESS_DISCARD;
123 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp); 123 WREG32_PCIE(RADEON_PCIE_TX_GART_CNTL, tmp);
124 WREG32_PCIE(RADEON_PCIE_TX_GART_START_LO, rdev->mc.gtt_location); 124 WREG32_PCIE(RADEON_PCIE_TX_GART_START_LO, rdev->mc.gtt_start);
125 tmp = rdev->mc.gtt_location + rdev->mc.gtt_size - RADEON_GPU_PAGE_SIZE; 125 tmp = rdev->mc.gtt_end & ~RADEON_GPU_PAGE_MASK;
126 WREG32_PCIE(RADEON_PCIE_TX_GART_END_LO, tmp); 126 WREG32_PCIE(RADEON_PCIE_TX_GART_END_LO, tmp);
127 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0); 127 WREG32_PCIE(RADEON_PCIE_TX_GART_START_HI, 0);
128 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0); 128 WREG32_PCIE(RADEON_PCIE_TX_GART_END_HI, 0);
129 table_addr = rdev->gart.table_addr; 129 table_addr = rdev->gart.table_addr;
130 WREG32_PCIE(RADEON_PCIE_TX_GART_BASE, table_addr); 130 WREG32_PCIE(RADEON_PCIE_TX_GART_BASE, table_addr);
131 /* FIXME: setup default page */ 131 /* FIXME: setup default page */
132 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_location); 132 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_LO, rdev->mc.vram_start);
133 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_HI, 0); 133 WREG32_PCIE(RADEON_PCIE_TX_DISCARD_RD_ADDR_HI, 0);
134 /* Clear error */ 134 /* Clear error */
135 WREG32_PCIE(0x18, 0); 135 WREG32_PCIE(0x18, 0);
@@ -459,13 +459,12 @@ int r300_gpu_reset(struct radeon_device *rdev)
459/* 459/*
460 * r300,r350,rv350,rv380 VRAM info 460 * r300,r350,rv350,rv380 VRAM info
461 */ 461 */
462void r300_vram_info(struct radeon_device *rdev) 462void r300_mc_init(struct radeon_device *rdev)
463{ 463{
464 uint32_t tmp; 464 uint32_t tmp;
465 465
466 /* DDR for all card after R300 & IGP */ 466 /* DDR for all card after R300 & IGP */
467 rdev->mc.vram_is_ddr = true; 467 rdev->mc.vram_is_ddr = true;
468
469 tmp = RREG32(RADEON_MEM_CNTL); 468 tmp = RREG32(RADEON_MEM_CNTL);
470 tmp &= R300_MEM_NUM_CHANNELS_MASK; 469 tmp &= R300_MEM_NUM_CHANNELS_MASK;
471 switch (tmp) { 470 switch (tmp) {
@@ -474,8 +473,9 @@ void r300_vram_info(struct radeon_device *rdev)
474 case 2: rdev->mc.vram_width = 256; break; 473 case 2: rdev->mc.vram_width = 256; break;
475 default: rdev->mc.vram_width = 128; break; 474 default: rdev->mc.vram_width = 128; break;
476 } 475 }
477
478 r100_vram_init_sizes(rdev); 476 r100_vram_init_sizes(rdev);
477 if (!(rdev->flags & RADEON_IS_AGP))
478 radeon_gtt_location(rdev, &rdev->mc);
479} 479}
480 480
481void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes) 481void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes)
@@ -1377,12 +1377,15 @@ int r300_init(struct radeon_device *rdev)
1377 radeon_get_clock_info(rdev->ddev); 1377 radeon_get_clock_info(rdev->ddev);
1378 /* Initialize power management */ 1378 /* Initialize power management */
1379 radeon_pm_init(rdev); 1379 radeon_pm_init(rdev);
1380 /* Get vram informations */ 1380 /* initialize AGP */
1381 r300_vram_info(rdev); 1381 if (rdev->flags & RADEON_IS_AGP) {
1382 /* Initialize memory controller (also test AGP) */ 1382 r = radeon_agp_init(rdev);
1383 r = r420_mc_init(rdev); 1383 if (r) {
1384 if (r) 1384 radeon_agp_disable(rdev);
1385 return r; 1385 }
1386 }
1387 /* initialize memory controller */
1388 r300_mc_init(rdev);
1386 /* Fence driver */ 1389 /* Fence driver */
1387 r = radeon_fence_driver_init(rdev); 1390 r = radeon_fence_driver_init(rdev);
1388 if (r) 1391 if (r)