drm/ttm: merge offset and base in ttm_bus_placement
This is used by TTM to communicate the physical address which should be used with ioremap(), ioremap_wc(). We don't need to separate the base and offset in any way here. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/389457/
This commit is contained in:
@@ -641,7 +641,6 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
|
||||
|
||||
evict_mem = bo->mem;
|
||||
evict_mem.mm_node = NULL;
|
||||
evict_mem.bus.base = 0;
|
||||
evict_mem.bus.offset = 0;
|
||||
evict_mem.bus.addr = NULL;
|
||||
|
||||
@@ -1076,7 +1075,6 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
|
||||
mem.num_pages = bo->num_pages;
|
||||
mem.size = mem.num_pages << PAGE_SHIFT;
|
||||
mem.page_alignment = bo->mem.page_alignment;
|
||||
mem.bus.base = 0;
|
||||
mem.bus.offset = 0;
|
||||
mem.bus.addr = NULL;
|
||||
mem.mm_node = NULL;
|
||||
@@ -1235,7 +1233,6 @@ int ttm_bo_init_reserved(struct ttm_bo_device *bdev,
|
||||
bo->mem.num_pages = bo->num_pages;
|
||||
bo->mem.mm_node = NULL;
|
||||
bo->mem.page_alignment = page_alignment;
|
||||
bo->mem.bus.base = 0;
|
||||
bo->mem.bus.offset = 0;
|
||||
bo->mem.bus.addr = NULL;
|
||||
bo->moving = NULL;
|
||||
|
@@ -94,7 +94,7 @@ EXPORT_SYMBOL(ttm_bo_move_ttm);
|
||||
int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
|
||||
struct ttm_resource *mem)
|
||||
{
|
||||
if (mem->bus.base || mem->bus.offset || mem->bus.addr)
|
||||
if (mem->bus.offset || mem->bus.addr)
|
||||
return 0;
|
||||
|
||||
mem->bus.is_iomem = false;
|
||||
@@ -107,13 +107,12 @@ int ttm_mem_io_reserve(struct ttm_bo_device *bdev,
|
||||
void ttm_mem_io_free(struct ttm_bo_device *bdev,
|
||||
struct ttm_resource *mem)
|
||||
{
|
||||
if (!mem->bus.base && !mem->bus.offset && !mem->bus.addr)
|
||||
if (!mem->bus.offset && !mem->bus.addr)
|
||||
return;
|
||||
|
||||
if (bdev->driver->io_mem_free)
|
||||
bdev->driver->io_mem_free(bdev, mem);
|
||||
|
||||
mem->bus.base = 0;
|
||||
mem->bus.offset = 0;
|
||||
mem->bus.addr = NULL;
|
||||
}
|
||||
@@ -136,11 +135,9 @@ static int ttm_resource_ioremap(struct ttm_bo_device *bdev,
|
||||
size_t bus_size = (size_t)mem->num_pages << PAGE_SHIFT;
|
||||
|
||||
if (mem->placement & TTM_PL_FLAG_WC)
|
||||
addr = ioremap_wc(mem->bus.base + mem->bus.offset,
|
||||
bus_size);
|
||||
addr = ioremap_wc(mem->bus.offset, bus_size);
|
||||
else
|
||||
addr = ioremap(mem->bus.base + mem->bus.offset,
|
||||
bus_size);
|
||||
addr = ioremap(mem->bus.offset, bus_size);
|
||||
if (!addr) {
|
||||
ttm_mem_io_free(bdev, mem);
|
||||
return -ENOMEM;
|
||||
@@ -427,12 +424,10 @@ static int ttm_bo_ioremap(struct ttm_buffer_object *bo,
|
||||
} else {
|
||||
map->bo_kmap_type = ttm_bo_map_iomap;
|
||||
if (mem->placement & TTM_PL_FLAG_WC)
|
||||
map->virtual = ioremap_wc(bo->mem.bus.base +
|
||||
bo->mem.bus.offset + offset,
|
||||
map->virtual = ioremap_wc(bo->mem.bus.offset + offset,
|
||||
size);
|
||||
else
|
||||
map->virtual = ioremap(bo->mem.bus.base +
|
||||
bo->mem.bus.offset + offset,
|
||||
map->virtual = ioremap(bo->mem.bus.offset + offset,
|
||||
size);
|
||||
}
|
||||
return (!map->virtual) ? -ENOMEM : 0;
|
||||
|
@@ -101,8 +101,7 @@ static unsigned long ttm_bo_io_mem_pfn(struct ttm_buffer_object *bo,
|
||||
if (bdev->driver->io_mem_pfn)
|
||||
return bdev->driver->io_mem_pfn(bo, page_offset);
|
||||
|
||||
return ((bo->mem.bus.base + bo->mem.bus.offset) >> PAGE_SHIFT)
|
||||
+ page_offset;
|
||||
return (bo->mem.bus.offset >> PAGE_SHIFT) + page_offset;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user