mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
drm/radeon/alpha: Add Alpha support to Radeon DRM code
Alpha needs to have available the system bus address for the Radeon's local memory, so that it can be used in ttm_bo_vm_fault(), when building the PTEs for accessing that VRAM. So, we make bus.addr hold the ioremap() return, and then we can modify bus.base appropriately for use during page fault processing. Signed-off-by: Jay Estabrook <jay.estabrook@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
3210d190dc
commit
ffb57c4b86
@ -450,6 +450,29 @@ static int radeon_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_mem_
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
mem->bus.base = rdev->mc.aper_base;
|
mem->bus.base = rdev->mc.aper_base;
|
||||||
mem->bus.is_iomem = true;
|
mem->bus.is_iomem = true;
|
||||||
|
#ifdef __alpha__
|
||||||
|
/*
|
||||||
|
* Alpha: use bus.addr to hold the ioremap() return,
|
||||||
|
* so we can modify bus.base below.
|
||||||
|
*/
|
||||||
|
if (mem->placement & TTM_PL_FLAG_WC)
|
||||||
|
mem->bus.addr =
|
||||||
|
ioremap_wc(mem->bus.base + mem->bus.offset,
|
||||||
|
mem->bus.size);
|
||||||
|
else
|
||||||
|
mem->bus.addr =
|
||||||
|
ioremap_nocache(mem->bus.base + mem->bus.offset,
|
||||||
|
mem->bus.size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Alpha: Use just the bus offset plus
|
||||||
|
* the hose/domain memory base for bus.base.
|
||||||
|
* It then can be used to build PTEs for VRAM
|
||||||
|
* access, as done in ttm_bo_vm_fault().
|
||||||
|
*/
|
||||||
|
mem->bus.base = (mem->bus.base & 0x0ffffffffUL) +
|
||||||
|
rdev->ddev->hose->dense_mem_base;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user