From 38fc3a48a0c2fbdda4f2e69dc7c4c619a534e468 Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Tue, 3 Mar 2015 12:12:58 +0530 Subject: gpu: nvgpu: add platform specific get_iova_addr() Add platform specific API pointer (*get_iova_addr)() which can be used to get iova/physical address from given scatterlist and flags Use this API with g->ops.mm.get_iova_addr() instead of calling API gk20a_mm_iova_addr() which makes it platform specific Bug 1605653 Change-Id: I798763db1501bd0b16e84daab68f6093a83caac2 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/713089 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/vgpu/mm_vgpu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/nvgpu/vgpu/mm_vgpu.c') diff --git a/drivers/gpu/nvgpu/vgpu/mm_vgpu.c b/drivers/gpu/nvgpu/vgpu/mm_vgpu.c index b3a8a885..94e4602f 100644 --- a/drivers/gpu/nvgpu/vgpu/mm_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/mm_vgpu.c @@ -75,7 +75,7 @@ static u64 vgpu_locked_gmmu_map(struct vm_gk20a *vm, struct dma_iommu_mapping *mapping = to_dma_iommu_mapping(d); struct tegra_vgpu_cmd_msg msg; struct tegra_vgpu_as_map_params *p = &msg.params.as_map; - u64 addr = gk20a_mm_iova_addr(g, sgt->sgl); + u64 addr = g->ops.mm.get_iova_addr(g, sgt->sgl, flags); u8 prot; gk20a_dbg_fn(""); @@ -213,7 +213,7 @@ u64 vgpu_bar1_map(struct gk20a *g, struct sg_table **sgt, u64 size) struct gk20a_platform *platform = gk20a_get_platform(g->dev); struct dma_iommu_mapping *mapping = to_dma_iommu_mapping(dev_from_gk20a(g)); - u64 addr = gk20a_mm_iova_addr(g, (*sgt)->sgl); + u64 addr = g->ops.mm.get_iova_addr(g, (*sgt)->sgl, 0); struct tegra_vgpu_cmd_msg msg; struct tegra_vgpu_as_map_params *p = &msg.params.as_map; int err; @@ -450,4 +450,5 @@ void vgpu_init_mm_ops(struct gpu_ops *gops) gops->mm.l2_flush = vgpu_mm_l2_flush; gops->mm.tlb_invalidate = vgpu_mm_tlb_invalidate; gops->mm.get_physical_addr_bits = gk20a_mm_get_physical_addr_bits; + gops->mm.get_iova_addr = gk20a_mm_iova_addr; } -- cgit v1.2.2