diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/r300.c')
-rw-r--r-- | drivers/gpu/drm/radeon/r300.c | 27 |
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 | */ |
462 | void r300_vram_info(struct radeon_device *rdev) | 462 | void 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 | ||
481 | void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes) | 481 | void 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) |