diff options
author | Sunny He <suhe@nvidia.com> | 2017-07-31 17:40:46 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-08-11 17:16:53 -0400 |
commit | da8e67f042760d54f3d6b5f84abbd9981d9fcd54 (patch) | |
tree | fc8cffa187e14649b474a73ff23e3bb801319e61 /drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |
parent | 2660d1d881d1536c1b723d9737ae9a04321d69f3 (diff) |
gpu: nvgpu: gv11b: Reorg fb HAL initialization
Reorganize HAL initialization to remove inheritance and construct
the gpu_ops struct at compile time. This patch only covers the
fb 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: I896d90e0dcffc0e133e6902ff9c3eab39c53080d
Signed-off-by: Sunny He <suhe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1533354
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/hal_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/hal_gv11b.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c index 282aa228..9f6c67c1 100644 --- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c | |||
@@ -29,9 +29,11 @@ | |||
29 | #include "gk20a/bus_gk20a.h" | 29 | #include "gk20a/bus_gk20a.h" |
30 | #include "gk20a/flcn_gk20a.h" | 30 | #include "gk20a/flcn_gk20a.h" |
31 | #include "gk20a/regops_gk20a.h" | 31 | #include "gk20a/regops_gk20a.h" |
32 | #include "gk20a/fb_gk20a.h" | ||
32 | 33 | ||
33 | #include "gm20b/ltc_gm20b.h" | 34 | #include "gm20b/ltc_gm20b.h" |
34 | #include "gm20b/gr_gm20b.h" | 35 | #include "gm20b/gr_gm20b.h" |
36 | #include "gm20b/fb_gm20b.h" | ||
35 | #include "gm20b/fifo_gm20b.h" | 37 | #include "gm20b/fifo_gm20b.h" |
36 | 38 | ||
37 | #include "gp10b/ltc_gp10b.h" | 39 | #include "gp10b/ltc_gp10b.h" |
@@ -41,6 +43,7 @@ | |||
41 | #include "gp10b/priv_ring_gp10b.h" | 43 | #include "gp10b/priv_ring_gp10b.h" |
42 | #include "gp10b/fifo_gp10b.h" | 44 | #include "gp10b/fifo_gp10b.h" |
43 | #include "gp10b/fecs_trace_gp10b.h" | 45 | #include "gp10b/fecs_trace_gp10b.h" |
46 | #include "gp10b/fb_gp10b.h" | ||
44 | 47 | ||
45 | #include "hal_gv11b.h" | 48 | #include "hal_gv11b.h" |
46 | #include "gr_gv11b.h" | 49 | #include "gr_gv11b.h" |
@@ -175,6 +178,23 @@ static const struct gpu_ops gv11b_ops = { | |||
175 | .isr_nonstall = gp10b_ce_nonstall_isr, | 178 | .isr_nonstall = gp10b_ce_nonstall_isr, |
176 | .get_num_pce = gv11b_ce_get_num_pce, | 179 | .get_num_pce = gv11b_ce_get_num_pce, |
177 | }, | 180 | }, |
181 | .fb = { | ||
182 | .reset = gv11b_fb_reset, | ||
183 | .init_hw = gk20a_fb_init_hw, | ||
184 | .init_fs_state = gv11b_fb_init_fs_state, | ||
185 | .init_cbc = gv11b_fb_init_cbc, | ||
186 | .set_mmu_page_size = gm20b_fb_set_mmu_page_size, | ||
187 | .set_use_full_comp_tag_line = | ||
188 | gm20b_fb_set_use_full_comp_tag_line, | ||
189 | .compression_page_size = gp10b_fb_compression_page_size, | ||
190 | .compressible_page_size = gp10b_fb_compressible_page_size, | ||
191 | .vpr_info_fetch = gm20b_fb_vpr_info_fetch, | ||
192 | .dump_vpr_wpr_info = gm20b_fb_dump_vpr_wpr_info, | ||
193 | .is_debug_mode_enabled = gm20b_fb_debug_mode_enabled, | ||
194 | .set_debug_mode = gm20b_fb_set_debug_mode, | ||
195 | .tlb_invalidate = gk20a_fb_tlb_invalidate, | ||
196 | .hub_isr = gv11b_fb_hub_isr, | ||
197 | }, | ||
178 | .clock_gating = { | 198 | .clock_gating = { |
179 | .slcg_bus_load_gating_prod = | 199 | .slcg_bus_load_gating_prod = |
180 | gv11b_slcg_bus_load_gating_prod, | 200 | gv11b_slcg_bus_load_gating_prod, |
@@ -405,6 +425,7 @@ int gv11b_init_hal(struct gk20a *g) | |||
405 | 425 | ||
406 | gops->ltc = gv11b_ops.ltc; | 426 | gops->ltc = gv11b_ops.ltc; |
407 | gops->ce2 = gv11b_ops.ce2; | 427 | gops->ce2 = gv11b_ops.ce2; |
428 | gops->fb = gv11b_ops.fb; | ||
408 | gops->clock_gating = gv11b_ops.clock_gating; | 429 | gops->clock_gating = gv11b_ops.clock_gating; |
409 | gops->fifo = gv11b_ops.fifo; | 430 | gops->fifo = gv11b_ops.fifo; |
410 | gops->gr_ctx = gv11b_ops.gr_ctx; | 431 | gops->gr_ctx = gv11b_ops.gr_ctx; |
@@ -432,10 +453,12 @@ int gv11b_init_hal(struct gk20a *g) | |||
432 | __nvgpu_set_enabled(g, NVGPU_SEC_SECUREGPCCS, false); | 453 | __nvgpu_set_enabled(g, NVGPU_SEC_SECUREGPCCS, false); |
433 | 454 | ||
434 | gv11b_init_gr(g); | 455 | gv11b_init_gr(g); |
435 | gv11b_init_fb(gops); | ||
436 | gv11b_init_mm(gops); | 456 | gv11b_init_mm(gops); |
437 | gv11b_init_pmu_ops(g); | 457 | gv11b_init_pmu_ops(g); |
438 | 458 | ||
459 | gv11b_init_uncompressed_kind_map(); | ||
460 | gv11b_init_kind_attr(); | ||
461 | |||
439 | g->name = "gv11b"; | 462 | g->name = "gv11b"; |
440 | 463 | ||
441 | c->twod_class = FERMI_TWOD_A; | 464 | c->twod_class = FERMI_TWOD_A; |