From 4b5b67d6d83430d8d670660b1dfc9cf024d60d88 Mon Sep 17 00:00:00 2001 From: Sunny He Date: Thu, 17 Aug 2017 16:11:34 -0700 Subject: gpu: nvgpu: Reorg gr HAL initialization Reorganize HAL initialization to remove inheritance and construct the gpu_ops struct at compile time. This patch only covers the gr 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: Ie37638f442fd68aca8a7ade5f297118447bdc91e Signed-off-by: Sunny He Reviewed-on: https://git-master.nvidia.com/r/1542989 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svc-mobile-coverity Reviewed-by: svccoveritychecker Reviewed-by: Terje Bergstrom GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu --- drivers/gpu/nvgpu/gp106/gr_gp106.c | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) (limited to 'drivers/gpu/nvgpu/gp106/gr_gp106.c') diff --git a/drivers/gpu/nvgpu/gp106/gr_gp106.c b/drivers/gpu/nvgpu/gp106/gr_gp106.c index 76e5cf89..00d6432f 100644 --- a/drivers/gpu/nvgpu/gp106/gr_gp106.c +++ b/drivers/gpu/nvgpu/gp106/gr_gp106.c @@ -24,7 +24,7 @@ #include -static bool gr_gp106_is_valid_class(struct gk20a *g, u32 class_num) +bool gr_gp106_is_valid_class(struct gk20a *g, u32 class_num) { bool valid = false; @@ -53,7 +53,7 @@ static bool gr_gp106_is_valid_class(struct gk20a *g, u32 class_num) return valid; } -static u32 gr_gp106_pagepool_default_size(struct gk20a *g) +u32 gr_gp106_pagepool_default_size(struct gk20a *g) { return gr_scc_pagepool_total_pages_hwmax_value_v(); } @@ -63,7 +63,7 @@ static void gr_gp106_set_go_idle_timeout(struct gk20a *g, u32 data) gk20a_writel(g, gr_fe_go_idle_timeout_r(), data); } -static int gr_gp106_handle_sw_method(struct gk20a *g, u32 addr, +int gr_gp106_handle_sw_method(struct gk20a *g, u32 addr, u32 class_num, u32 offset, u32 data) { gk20a_dbg_fn(""); @@ -111,7 +111,7 @@ fail: return -EINVAL; } -static void gr_gp106_cb_size_default(struct gk20a *g) +void gr_gp106_cb_size_default(struct gk20a *g) { struct gr_gk20a *gr = &g->gr; @@ -121,7 +121,7 @@ static void gr_gp106_cb_size_default(struct gk20a *g) gr_gpc0_ppc0_cbm_alpha_cb_size_v_default_v(); } -static int gr_gp106_set_ctxsw_preemption_mode(struct gk20a *g, +int gr_gp106_set_ctxsw_preemption_mode(struct gk20a *g, struct gr_ctx_desc *gr_ctx, struct vm_gk20a *vm, u32 class, u32 graphics_preempt_mode, @@ -233,19 +233,3 @@ fail_free_preempt: fail: return err; } - -void gp106_init_gr(struct gk20a *g) -{ - struct gpu_ops *gops = &g->ops; - - gp10b_init_gr(g); - gops->gr.is_valid_class = gr_gp106_is_valid_class; - gops->gr.pagepool_default_size = gr_gp106_pagepool_default_size; - gops->gr.handle_sw_method = gr_gp106_handle_sw_method; - gops->gr.cb_size_default = gr_gp106_cb_size_default; - gops->gr.init_preemption_state = NULL; - gops->gr.set_ctxsw_preemption_mode = gr_gp106_set_ctxsw_preemption_mode; - gops->gr.create_gr_sysfs = NULL; - gops->gr.set_boosted_ctx = NULL; - gops->gr.update_boosted_ctx = NULL; -} -- cgit v1.2.2