diff options
author | Sunny He <suhe@nvidia.com> | 2017-07-31 21:54:38 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-08-14 18:55:19 -0400 |
commit | 959c02d6757c3c40748f7d2db1515885a5066a12 (patch) | |
tree | 58b685a52bc8b543565645227219c1c9609a50b3 /drivers/gpu/nvgpu/gm20b/hal_gm20b.c | |
parent | ee60394abc9a52182892ab54554d3e9c841080bf (diff) |
gpu: nvgpu: Reorg mm HAL initialization
Reorganize HAL initialization to remove inheritance and construct
the gpu_ops struct at compile time. This patch only covers the
mm sub-module of the gpu_ops struct.
Perform HAL function assignments in hal_gxxxx.c through the
population of a chip-specific copy of gpu_ops.
Jira NVGPU-74
Change-Id: Ieb87a62f047510e51c52e6563d8e3fd5a65b5f28
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1537753
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/hal_gm20b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hal_gm20b.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hal_gm20b.c b/drivers/gpu/nvgpu/gm20b/hal_gm20b.c index a540de64..073c377e 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" |
@@ -287,6 +288,27 @@ static const struct gpu_ops gm20b_ops = { | |||
287 | .get_netlist_name = gr_gm20b_get_netlist_name, | 288 | .get_netlist_name = gr_gm20b_get_netlist_name, |
288 | .is_fw_defined = gr_gm20b_is_firmware_defined, | 289 | .is_fw_defined = gr_gm20b_is_firmware_defined, |
289 | }, | 290 | }, |
291 | .mm = { | ||
292 | .support_sparse = gm20b_mm_support_sparse, | ||
293 | .gmmu_map = gk20a_locked_gmmu_map, | ||
294 | .gmmu_unmap = gk20a_locked_gmmu_unmap, | ||
295 | .vm_bind_channel = gk20a_vm_bind_channel, | ||
296 | .fb_flush = gk20a_mm_fb_flush, | ||
297 | .l2_invalidate = gk20a_mm_l2_invalidate, | ||
298 | .l2_flush = gk20a_mm_l2_flush, | ||
299 | .cbc_clean = gk20a_mm_cbc_clean, | ||
300 | .set_big_page_size = gm20b_mm_set_big_page_size, | ||
301 | .get_big_page_sizes = gm20b_mm_get_big_page_sizes, | ||
302 | .get_default_big_page_size = gm20b_mm_get_default_big_page_size, | ||
303 | .gpu_phys_addr = gm20b_gpu_phys_addr, | ||
304 | .get_physical_addr_bits = gk20a_mm_get_physical_addr_bits, | ||
305 | .get_mmu_levels = gk20a_mm_get_mmu_levels, | ||
306 | .init_pdb = gk20a_mm_init_pdb, | ||
307 | .init_mm_setup_hw = gk20a_init_mm_setup_hw, | ||
308 | .is_bar1_supported = gm20b_mm_is_bar1_supported, | ||
309 | .init_inst_block = gk20a_init_inst_block, | ||
310 | .mmu_fault_pending = gk20a_fifo_mmu_fault_pending, | ||
311 | }, | ||
290 | .therm = { | 312 | .therm = { |
291 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, | 313 | .init_therm_setup_hw = gm20b_init_therm_setup_hw, |
292 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, | 314 | .elcg_init_idle_filters = gk20a_elcg_init_idle_filters, |
@@ -398,6 +420,7 @@ int gm20b_init_hal(struct gk20a *g) | |||
398 | gops->clock_gating = gm20b_ops.clock_gating; | 420 | gops->clock_gating = gm20b_ops.clock_gating; |
399 | gops->fifo = gm20b_ops.fifo; | 421 | gops->fifo = gm20b_ops.fifo; |
400 | gops->gr_ctx = gm20b_ops.gr_ctx; | 422 | gops->gr_ctx = gm20b_ops.gr_ctx; |
423 | gops->mm = gm20b_ops.mm; | ||
401 | gops->therm = gm20b_ops.therm; | 424 | gops->therm = gm20b_ops.therm; |
402 | /* | 425 | /* |
403 | * clk must be assigned member by member | 426 | * clk must be assigned member by member |
@@ -462,7 +485,6 @@ int gm20b_init_hal(struct gk20a *g) | |||
462 | #endif | 485 | #endif |
463 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; | 486 | g->bootstrap_owner = LSF_BOOTSTRAP_OWNER_DEFAULT; |
464 | gm20b_init_gr(g); | 487 | gm20b_init_gr(g); |
465 | gm20b_init_mm(gops); | ||
466 | gm20b_init_pmu_ops(g); | 488 | gm20b_init_pmu_ops(g); |
467 | 489 | ||
468 | gm20b_init_uncompressed_kind_map(); | 490 | gm20b_init_uncompressed_kind_map(); |