Commit 54d04ea8 authored by Christian König's avatar Christian König
Browse files

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: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Link: https://patchwork.freedesktop.org/patch/389457/
parent 1ff67ce4
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -773,7 +773,7 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_reso
			mem->bus.addr = (u8 *)adev->mman.aper_base_kaddr +
					mem->bus.offset;

		mem->bus.base = adev->gmc.aper_base;
		mem->bus.offset += adev->gmc.aper_base;
		mem->bus.is_iomem = true;
		break;
	default:
@@ -785,12 +785,13 @@ static int amdgpu_ttm_io_mem_reserve(struct ttm_bo_device *bdev, struct ttm_reso
static unsigned long amdgpu_ttm_io_mem_pfn(struct ttm_buffer_object *bo,
					   unsigned long page_offset)
{
	struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
	uint64_t offset = (page_offset << PAGE_SHIFT);
	struct drm_mm_node *mm;

	mm = amdgpu_find_mm_node(&bo->mem, &offset);
	return (bo->mem.bus.base >> PAGE_SHIFT) + mm->start +
		(offset >> PAGE_SHIFT);
	offset += adev->gmc.aper_base;
	return mm->start + (offset >> PAGE_SHIFT);
}

/**
+1 −4
Original line number Diff line number Diff line
@@ -43,13 +43,10 @@ void drm_gem_ttm_print_info(struct drm_printer *p, unsigned int indent,
	drm_print_bits(p, bo->mem.placement, plname, ARRAY_SIZE(plname));
	drm_printf(p, "\n");

	if (bo->mem.bus.is_iomem) {
		drm_printf_indent(p, indent, "bus.base=%lx\n",
				  (unsigned long)bo->mem.bus.base);
	if (bo->mem.bus.is_iomem)
		drm_printf_indent(p, indent, "bus.offset=%lx\n",
				  (unsigned long)bo->mem.bus.offset);
}
}
EXPORT_SYMBOL(drm_gem_ttm_print_info);

/**
+1 −2
Original line number Diff line number Diff line
@@ -1042,8 +1042,7 @@ static int bo_driver_io_mem_reserve(struct ttm_bo_device *bdev,
	case TTM_PL_SYSTEM:	/* nothing to do */
		break;
	case TTM_PL_VRAM:
		mem->bus.offset = mem->start << PAGE_SHIFT;
		mem->bus.base = vmm->vram_base;
		mem->bus.offset = (mem->start << PAGE_SHIFT) + vmm->vram_base;
		mem->bus.is_iomem = true;
		break;
	default:
+4 −5
Original line number Diff line number Diff line
@@ -1081,8 +1081,8 @@ retry:
	case TTM_PL_TT:
#if IS_ENABLED(CONFIG_AGP)
		if (drm->agp.bridge) {
			reg->bus.offset = reg->start << PAGE_SHIFT;
			reg->bus.base = drm->agp.base;
			reg->bus.offset = (reg->start << PAGE_SHIFT) +
				drm->agp.base;
			reg->bus.is_iomem = !drm->agp.cma;
		}
#endif
@@ -1094,8 +1094,8 @@ retry:
		}
		fallthrough;	/* tiled memory */
	case TTM_PL_VRAM:
		reg->bus.offset = reg->start << PAGE_SHIFT;
		reg->bus.base = device->func->resource_addr(device, 1);
		reg->bus.offset = (reg->start << PAGE_SHIFT) +
			device->func->resource_addr(device, 1);
		reg->bus.is_iomem = true;
		if (drm->client.mem->oclass >= NVIF_CLASS_MEM_NV50) {
			union {
@@ -1133,7 +1133,6 @@ retry:
				goto out;
			}

			reg->bus.base = 0;
			reg->bus.offset = handle;
			ret = 0;
		}
+1 −2
Original line number Diff line number Diff line
@@ -378,8 +378,7 @@ nouveau_fbcon_create(struct drm_fb_helper *helper,
			      FBINFO_HWACCEL_FILLRECT |
			      FBINFO_HWACCEL_IMAGEBLIT;
	info->fbops = &nouveau_fbcon_sw_ops;
	info->fix.smem_start = nvbo->bo.mem.bus.base +
			       nvbo->bo.mem.bus.offset;
	info->fix.smem_start = nvbo->bo.mem.bus.offset;
	info->fix.smem_len = nvbo->bo.mem.num_pages << PAGE_SHIFT;

	info->screen_base = nvbo_kmap_obj_iovirtual(nvbo);
Loading