summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-03-31 14:13:42 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-04-15 11:50:34 -0400
commit7d8e2193893454bc8e05543c956fab32b8eed54b (patch)
treeafb73b81611136fd0411e17995532d6d22b0499f /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parent6839341bf8ffafa115cfc0427bba694ee1d131f3 (diff)
gpu: nvgpu: Use sysmem aperture for SoC memory
In Tegra GPU, SoC memory has to be accessed as vidmem. In discrete GPU, it has to be accessed as sysmem. Change-Id: I4efe71b54a9a32f0bf1f02ec4016ed74405a14c5 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1120468
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 51a61de3..734552a1 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -739,7 +739,9 @@ static int gr_gk20a_fecs_ctx_bind_channel(struct gk20a *g,
739 (struct fecs_method_op_gk20a) { 739 (struct fecs_method_op_gk20a) {
740 .method.addr = gr_fecs_method_push_adr_bind_pointer_v(), 740 .method.addr = gr_fecs_method_push_adr_bind_pointer_v(),
741 .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | 741 .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) |
742 gr_fecs_current_ctx_target_vid_mem_f() | 742 (g->mm.vidmem_is_vidmem ?
743 gr_fecs_current_ctx_target_sys_mem_ncoh_f() :
744 gr_fecs_current_ctx_target_vid_mem_f()) |
743 gr_fecs_current_ctx_valid_f(1)), 745 gr_fecs_current_ctx_valid_f(1)),
744 .mailbox = { .id = 0, .data = 0, 746 .mailbox = { .id = 0, .data = 0,
745 .clr = 0x30, 747 .clr = 0x30,
@@ -1421,7 +1423,9 @@ static int gr_gk20a_fecs_ctx_image_save(struct channel_gk20a *c, u32 save_type)
1421 (struct fecs_method_op_gk20a) { 1423 (struct fecs_method_op_gk20a) {
1422 .method.addr = save_type, 1424 .method.addr = save_type,
1423 .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | 1425 .method.data = (gr_fecs_current_ctx_ptr_f(inst_base_ptr) |
1424 gr_fecs_current_ctx_target_vid_mem_f() | 1426 (g->mm.vidmem_is_vidmem ?
1427 gr_fecs_current_ctx_target_sys_mem_ncoh_f() :
1428 gr_fecs_current_ctx_target_vid_mem_f()) |
1425 gr_fecs_current_ctx_valid_f(1)), 1429 gr_fecs_current_ctx_valid_f(1)),
1426 .mailbox = {.id = 0, .data = 0, .clr = 3, .ret = NULL, 1430 .mailbox = {.id = 0, .data = 0, .clr = 3, .ret = NULL,
1427 .ok = 1, .fail = 2, 1431 .ok = 1, .fail = 2,
@@ -1885,7 +1889,9 @@ int gr_gk20a_load_golden_ctx_image(struct gk20a *g,
1885 (struct fecs_method_op_gk20a) { 1889 (struct fecs_method_op_gk20a) {
1886 .method.data = 1890 .method.data =
1887 (gr_fecs_current_ctx_ptr_f(inst_base_ptr) | 1891 (gr_fecs_current_ctx_ptr_f(inst_base_ptr) |
1888 gr_fecs_current_ctx_target_vid_mem_f() | 1892 (g->mm.vidmem_is_vidmem ?
1893 gr_fecs_current_ctx_target_sys_mem_ncoh_f() :
1894 gr_fecs_current_ctx_target_vid_mem_f()) |
1889 gr_fecs_current_ctx_valid_f(1)), 1895 gr_fecs_current_ctx_valid_f(1)),
1890 .method.addr = 1896 .method.addr =
1891 gr_fecs_method_push_adr_restore_golden_v(), 1897 gr_fecs_method_push_adr_restore_golden_v(),
@@ -4291,7 +4297,9 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g)
4291 addr >>= fb_mmu_debug_wr_addr_alignment_v(); 4297 addr >>= fb_mmu_debug_wr_addr_alignment_v();
4292 4298
4293 gk20a_writel(g, fb_mmu_debug_wr_r(), 4299 gk20a_writel(g, fb_mmu_debug_wr_r(),
4294 fb_mmu_debug_wr_aperture_vid_mem_f() | 4300 (g->mm.vidmem_is_vidmem ?
4301 fb_mmu_debug_wr_aperture_sys_mem_ncoh_f() :
4302 fb_mmu_debug_wr_aperture_vid_mem_f()) |
4295 fb_mmu_debug_wr_vol_false_f() | 4303 fb_mmu_debug_wr_vol_false_f() |
4296 fb_mmu_debug_wr_addr_f(addr)); 4304 fb_mmu_debug_wr_addr_f(addr));
4297 4305
@@ -4299,7 +4307,9 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g)
4299 addr >>= fb_mmu_debug_rd_addr_alignment_v(); 4307 addr >>= fb_mmu_debug_rd_addr_alignment_v();
4300 4308
4301 gk20a_writel(g, fb_mmu_debug_rd_r(), 4309 gk20a_writel(g, fb_mmu_debug_rd_r(),
4302 fb_mmu_debug_rd_aperture_vid_mem_f() | 4310 (g->mm.vidmem_is_vidmem ?
4311 fb_mmu_debug_wr_aperture_sys_mem_ncoh_f() :
4312 fb_mmu_debug_rd_aperture_vid_mem_f()) |
4303 fb_mmu_debug_rd_vol_false_f() | 4313 fb_mmu_debug_rd_vol_false_f() |
4304 fb_mmu_debug_rd_addr_f(addr)); 4314 fb_mmu_debug_rd_addr_f(addr));
4305 4315
@@ -5967,7 +5977,9 @@ int gr_gk20a_fecs_set_reglist_bind_inst(struct gk20a *g, phys_addr_t addr)
5967 .mailbox.id = 4, 5977 .mailbox.id = 4,
5968 .mailbox.data = (gr_fecs_current_ctx_ptr_f(addr >> 12) | 5978 .mailbox.data = (gr_fecs_current_ctx_ptr_f(addr >> 12) |
5969 gr_fecs_current_ctx_valid_f(1) | 5979 gr_fecs_current_ctx_valid_f(1) |
5970 gr_fecs_current_ctx_target_vid_mem_f()), 5980 (g->mm.vidmem_is_vidmem ?
5981 gr_fecs_current_ctx_target_sys_mem_ncoh_f() :
5982 gr_fecs_current_ctx_target_vid_mem_f())),
5971 .mailbox.clr = ~0, 5983 .mailbox.clr = ~0,
5972 .method.data = 1, 5984 .method.data = 1,
5973 .method.addr = gr_fecs_method_push_adr_set_reglist_bind_instance_v(), 5985 .method.addr = gr_fecs_method_push_adr_set_reglist_bind_instance_v(),