summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2016-07-14 14:43:53 -0400
committerSeshendra Gadagottu <sgadagottu@nvidia.com>2016-07-25 20:10:03 -0400
commit021c23e46eb69ee2c888fa3b05834f110da7a450 (patch)
tree400c12e9a2b87402bab2b02aee3f111f4077aa4c /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parente2b965e555255be64a7687bd21e0f4ae1a17fe55 (diff)
gpu: nvgpu: check for valid function pointers
Before calling prod settings functions, check for availability of those functions. Similar check is extended for get_clk_freqs. Bug 1735760 Change-Id: Ic4b38079043ab2049a479a2d8bb0cb6091e94f4a Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/1181571 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Adeel Raza <araza@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 62d3b231..6fc52ad0 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -4656,6 +4656,8 @@ out:
4656 4656
4657static void gr_gk20a_load_gating_prod(struct gk20a *g) 4657static void gr_gk20a_load_gating_prod(struct gk20a *g)
4658{ 4658{
4659 gk20a_dbg_fn("");
4660
4659 /* slcg prod values */ 4661 /* slcg prod values */
4660 if (g->ops.clock_gating.slcg_bus_load_gating_prod) 4662 if (g->ops.clock_gating.slcg_bus_load_gating_prod)
4661 g->ops.clock_gating.slcg_bus_load_gating_prod(g, 4663 g->ops.clock_gating.slcg_bus_load_gating_prod(g,
@@ -4669,7 +4671,9 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g)
4669 if (g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod) 4671 if (g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod)
4670 g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod(g, 4672 g->ops.clock_gating.slcg_ctxsw_firmware_load_gating_prod(g,
4671 g->slcg_enabled); 4673 g->slcg_enabled);
4672 g->ops.clock_gating.slcg_perf_load_gating_prod(g, g->slcg_enabled); 4674 if (g->ops.clock_gating.slcg_perf_load_gating_prod)
4675 g->ops.clock_gating.slcg_perf_load_gating_prod(g,
4676 g->slcg_enabled);
4673 if (g->ops.clock_gating.slcg_xbar_load_gating_prod) 4677 if (g->ops.clock_gating.slcg_xbar_load_gating_prod)
4674 g->ops.clock_gating.slcg_xbar_load_gating_prod(g, 4678 g->ops.clock_gating.slcg_xbar_load_gating_prod(g,
4675 g->slcg_enabled); 4679 g->slcg_enabled);
@@ -4681,14 +4685,19 @@ static void gr_gk20a_load_gating_prod(struct gk20a *g)
4681 if (g->ops.clock_gating.blcg_ce_load_gating_prod) 4685 if (g->ops.clock_gating.blcg_ce_load_gating_prod)
4682 g->ops.clock_gating.blcg_ce_load_gating_prod(g, 4686 g->ops.clock_gating.blcg_ce_load_gating_prod(g,
4683 g->blcg_enabled); 4687 g->blcg_enabled);
4684 g->ops.clock_gating.blcg_gr_load_gating_prod(g, g->blcg_enabled); 4688 if (g->ops.clock_gating.blcg_gr_load_gating_prod)
4689 g->ops.clock_gating.blcg_gr_load_gating_prod(g,
4690 g->blcg_enabled);
4685 if (g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod) 4691 if (g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod)
4686 g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod(g, 4692 g->ops.clock_gating.blcg_ctxsw_firmware_load_gating_prod(g,
4687 g->blcg_enabled); 4693 g->blcg_enabled);
4688 if (g->ops.clock_gating.blcg_xbar_load_gating_prod) 4694 if (g->ops.clock_gating.blcg_xbar_load_gating_prod)
4689 g->ops.clock_gating.blcg_xbar_load_gating_prod(g, 4695 g->ops.clock_gating.blcg_xbar_load_gating_prod(g,
4690 g->blcg_enabled); 4696 g->blcg_enabled);
4691 g->ops.clock_gating.pg_gr_load_gating_prod(g, true); 4697 if (g->ops.clock_gating.pg_gr_load_gating_prod)
4698 g->ops.clock_gating.pg_gr_load_gating_prod(g, true);
4699
4700 gk20a_dbg_fn("done");
4692} 4701}
4693 4702
4694static int gk20a_init_gr_prepare(struct gk20a *g) 4703static int gk20a_init_gr_prepare(struct gk20a *g)