diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/hal_gm20b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index a540de64..1fb5b2bc 100644 --- a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include "gk20a/fb_gk20a.h" | 19 | #include "gk20a/fb_gk20a.h" |
20 | #include "gk20a/fifo_gk20a.h" | 20 | #include "gk20a/fifo_gk20a.h" |
21 | #include "gk20a/therm_gk20a.h" | 21 | #include "gk20a/therm_gk20a.h" |
22 | #include "gk20a/mm_gk20a.h" | ||
22 | #include "gk20a/css_gr_gk20a.h" | 23 | #include "gk20a/css_gr_gk20a.h" |
23 | #include "gk20a/mc_gk20a.h" | 24 | #include "gk20a/mc_gk20a.h" |
24 | #include "gk20a/bus_gk20a.h" | 25 | #include "gk20a/bus_gk20a.h" |
@@ -42,6 +43,8 @@ | |||
42 | #include "bus_gm20b.h" | 43 | #include "bus_gm20b.h" |
43 | #include "hal_gm20b.h" | 44 | #include "hal_gm20b.h" |
44 | 45 | ||
46 | #include "common/linux/platform_gk20a_tegra.h" | ||
47 | |||
45 | #include <nvgpu/debug.h> | 48 | #include <nvgpu/debug.h> |
46 | #include <nvgpu/bug.h> | 49 | #include <nvgpu/bug.h> |
47 | #include <nvgpu/enabled.h> | 50 | #include <nvgpu/enabled.h> |
@@ -287,6 +290,27 @@ static const struct gpu_ops gm20b_ops = { | |||
287 | .get_netlist_name = gr_gm20b_get_netlist_name, | 290 | .get_netlist_name = gr_gm20b_get_netlist_name, |
288 | .is_fw_defined = gr_gm20b_is_firmware_defined, | 291 | .is_fw_defined = gr_gm20b_is_firmware_defined, |
289 | }, | 292 | }, |
293 | .mm = { | ||
294 | .support_sparse = gm20b_mm_support_sparse, | ||
295 | .gmmu_map = gk20a_locked_gmmu_map, | ||
296 | .gmmu_unmap = gk20a_locked_gmmu_unmap, | ||
297 | .vm_bind_channel = gk20a_vm_bind_channel, | ||
298 | .fb_flush = gk20a_mm_fb_flush, | ||
299 | .l2_invalidate = gk20a_mm_l2_invalidate, | ||
300 | .l2_flush = gk20a_mm_l2_flush, | ||
301 | .cbc_clean = gk20a_mm_cbc_clean, | ||
302 | .set_big_page_size = gm20b_mm_set_big_page_size, | ||
303 | .get_big_page_sizes = gm20b_mm_get_big_page_sizes, | ||
304 | .get_default_big_page_size = gm20b_mm_get_default_big_page_size, | ||
305 | .gpu_phys_addr = gm20b_gpu_phys_addr, | ||
306 | .get_physical_addr_bits = gk20a_mm_get_physical_addr_bits, | ||
307 | .get_mmu_levels = gk20a_mm_get_mmu_levels, | ||
308 | .init_pdb = gk20a_mm_init_pdb, | ||
309 | .init_mm_setup_hw = gk20a_init_mm_setup_hw, | ||
310 | .is_bar1_supported = gm20b_mm_is_bar1_supported, | ||
311 | .init_inst_block = gk20a_init_inst_block, | ||
312 | .mmu_fault_pending = gk20a_fifo_mmu_fault_pending, | ||
313 | }, | ||
290 | .therm = { | 314 | .therm = { |
291 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, | 315 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, |
292 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, | 316 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, |
@@ -398,6 +422,7 @@ int gm20b_init_hal(struct gk20a *g) | |||
398 | gops->clock_gating = gm20b_ops.clock_gating; | 422 | gops->clock_gating = gm20b_ops.clock_gating; |
399 | gops->fifo = gm20b_ops.fifo; | 423 | gops->fifo = gm20b_ops.fifo; |
400 | gops->gr_ctx = gm20b_ops.gr_ctx; | 424 | gops->gr_ctx = gm20b_ops.gr_ctx; |
425 | gops->mm = gm20b_ops.mm; | ||
401 | gops->therm = gm20b_ops.therm; | 426 | gops->therm = gm20b_ops.therm; |
402 | /* | 427 | /* |
403 | * clk must be assigned member by member | 428 | * clk must be assigned member by member |
@@ -462,7 +487,6 @@ int gm20b_init_hal(struct gk20a *g) | |||
462 | #endif | 487 | #endif |
463 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 488 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
464 | gm20b_init_gr(g); | 489 | gm20b_init_gr(g); |
465 | gm20b_init_mm(gops); | ||
466 | gm20b_init_pmu_ops(g); | 490 | gm20b_init_pmu_ops(g); |
467 | 491 | ||
468 | gm20b_init_uncompressed_kind_map(); | 492 | gm20b_init_uncompressed_kind_map(); |