summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/fb
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2018-08-16 17:47:01 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-10 18:23:12 -0400
commitc86f185d1022de18a1a1073aa91d2b06aa59e2fc (patch)
tree61e685a45b309a245038b2a02a832ac0f790ff21 /drivers/gpu/nvgpu/common/fb
parent83efad7adb44647d37d98a57cbb6df48e356917d (diff)
gpu: nvgpu: Move programming of debug page to FB
Debug page was allocated and programmed to HUB MMU in GR code. This introduces a dependency from GR to FB and is anyway the wrong place. Move the code to allocate memory to generic MM code, and the code to program the addresses to FB. Change-Id: Ib6d3c96efde6794cf5e8cd4c908525c85b57c233 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1801423 Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/fb')
-rw-r--r--drivers/gpu/nvgpu/common/fb/fb_gm20b.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/common/fb/fb_gm20b.c b/drivers/gpu/nvgpu/common/fb/fb_gm20b.c
index 65b7336c..00d0fba4 100644
--- a/drivers/gpu/nvgpu/common/fb/fb_gm20b.c
+++ b/drivers/gpu/nvgpu/common/fb/fb_gm20b.c
@@ -55,9 +55,32 @@ void gm20b_fb_reset(struct gk20a *g)
55 55
56void gm20b_fb_init_hw(struct gk20a *g) 56void gm20b_fb_init_hw(struct gk20a *g)
57{ 57{
58 u32 addr = nvgpu_mem_get_addr(g, &g->mm.sysmem_flush) >> 8; 58 u64 addr = nvgpu_mem_get_addr(g, &g->mm.sysmem_flush) >> 8;
59 59
60 gk20a_writel(g, fb_niso_flush_sysmem_addr_r(), addr); 60 gk20a_writel(g, fb_niso_flush_sysmem_addr_r(), addr);
61
62 /* init mmu debug buffer */
63 addr = nvgpu_mem_get_addr(g, &g->mm.mmu_wr_mem);
64 addr >>= fb_mmu_debug_wr_addr_alignment_v();
65
66 gk20a_writel(g, fb_mmu_debug_wr_r(),
67 nvgpu_aperture_mask(g, &g->mm.mmu_wr_mem,
68 fb_mmu_debug_wr_aperture_sys_mem_ncoh_f(),
69 fb_mmu_debug_wr_aperture_sys_mem_coh_f(),
70 fb_mmu_debug_wr_aperture_vid_mem_f()) |
71 fb_mmu_debug_wr_vol_false_f() |
72 fb_mmu_debug_wr_addr_f(addr));
73
74 addr = nvgpu_mem_get_addr(g, &g->mm.mmu_rd_mem);
75 addr >>= fb_mmu_debug_rd_addr_alignment_v();
76
77 gk20a_writel(g, fb_mmu_debug_rd_r(),
78 nvgpu_aperture_mask(g, &g->mm.mmu_rd_mem,
79 fb_mmu_debug_wr_aperture_sys_mem_ncoh_f(),
80 fb_mmu_debug_wr_aperture_sys_mem_coh_f(),
81 fb_mmu_debug_rd_aperture_vid_mem_f()) |
82 fb_mmu_debug_rd_vol_false_f() |
83 fb_mmu_debug_rd_addr_f(addr));
61} 84}
62 85
63int gm20b_fb_tlb_invalidate(struct gk20a *g, struct nvgpu_mem *pdb) 86int gm20b_fb_tlb_invalidate(struct gk20a *g, struct nvgpu_mem *pdb)