diff options
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_ttm.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_ttm.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index 60125ddba1e9..9b86fb0e4122 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c | |||
@@ -450,6 +450,29 @@ static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_ | |||
450 | return -EINVAL; | 450 | return -EINVAL; |
451 | mem->bus.base = rdev->mc.aper_base; | 451 | mem->bus.base = rdev->mc.aper_base; |
452 | mem->bus.is_iomem = true; | 452 | mem->bus.is_iomem = true; |
453 | #ifdef __alpha__ | ||
454 | /* | ||
455 | * Alpha: use bus.addr to hold the ioremap() return, | ||
456 | * so we can modify bus.base below. | ||
457 | */ | ||
458 | if (mem->placement & TTM_PL_FLAG_WC) | ||
459 | mem->bus.addr = | ||
460 | ioremap_wc(mem->bus.base + mem->bus.offset, | ||
461 | mem->bus.size); | ||
462 | else | ||
463 | mem->bus.addr = | ||
464 | ioremap_nocache(mem->bus.base + mem->bus.offset, | ||
465 | mem->bus.size); | ||
466 | |||
467 | /* | ||
468 | * Alpha: Use just the bus offset plus | ||
469 | * the hose/domain memory base for bus.base. | ||
470 | * It then can be used to build PTEs for VRAM | ||
471 | * access, as done in ttm_bo_vm_fault(). | ||
472 | */ | ||
473 | mem->bus.base = (mem->bus.base & 0x0ffffffffUL) + | ||
474 | rdev->ddev->hose->dense_mem_base; | ||
475 | #endif | ||
453 | break; | 476 | break; |
454 | default: | 477 | default: |
455 | return -EINVAL; | 478 | return -EINVAL; |