From 8c66aef3bdbfbbeb1d3c3ef3bd6b1bee3ac05411 Mon Sep 17 00:00:00 2001 From: Mahantesh Kumbar Date: Fri, 12 May 2017 11:24:31 +0530 Subject: gpu: nvgpu: reorganize PMU FB alloc/free Moved PMU FB access related code from pmu_gk20a.c to "drivers/gpu/nvgpu/common/pmu/pmu.c" file - Prepended with nvgpu_ for global functions & replaced wherever used. JIRA NVGPU-56 JIRA NVGPU-94 Change-Id: I42bfd9d216e6b35672a9738f01302d954b32b69e Signed-off-by: Mahantesh Kumbar Reviewed-on: http://git-master/r/1480551 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu --- drivers/gpu/nvgpu/common/pmu/pmu.c | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'drivers/gpu/nvgpu/common/pmu/pmu.c') diff --git a/drivers/gpu/nvgpu/common/pmu/pmu.c b/drivers/gpu/nvgpu/common/pmu/pmu.c index 90db07b4..ca532049 100644 --- a/drivers/gpu/nvgpu/common/pmu/pmu.c +++ b/drivers/gpu/nvgpu/common/pmu/pmu.c @@ -423,3 +423,50 @@ int nvgpu_pmu_destroy(struct gk20a *g) nvgpu_log_fn(g, "done"); return 0; } + +void nvgpu_pmu_surface_describe(struct gk20a *g, struct nvgpu_mem *mem, + struct flcn_mem_desc_v0 *fb) +{ + fb->address.lo = u64_lo32(mem->gpu_va); + fb->address.hi = u64_hi32(mem->gpu_va); + fb->params = ((u32)mem->size & 0xFFFFFF); + fb->params |= (GK20A_PMU_DMAIDX_VIRT << 24); +} + +int nvgpu_pmu_vidmem_surface_alloc(struct gk20a *g, struct nvgpu_mem *mem, + u32 size) +{ + struct mm_gk20a *mm = &g->mm; + struct vm_gk20a *vm = mm->pmu.vm; + int err; + + err = nvgpu_dma_alloc_map_vid(vm, size, mem); + if (err) { + nvgpu_err(g, "memory allocation failed"); + return -ENOMEM; + } + + return 0; +} + +int nvgpu_pmu_sysmem_surface_alloc(struct gk20a *g, struct nvgpu_mem *mem, + u32 size) +{ + struct mm_gk20a *mm = &g->mm; + struct vm_gk20a *vm = mm->pmu.vm; + int err; + + err = nvgpu_dma_alloc_map_sys(vm, size, mem); + if (err) { + nvgpu_err(g, "failed to allocate memory\n"); + return -ENOMEM; + } + + return 0; +} + +void nvgpu_pmu_surface_free(struct gk20a *g, struct nvgpu_mem *mem) +{ + nvgpu_dma_free(g, mem); + memset(mem, 0, sizeof(struct nvgpu_mem)); +} -- cgit v1.2.2