From f56ed459dde2a292b3af0dd4deb96b1090eb53a2 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Mon, 29 Aug 2016 09:16:12 -0700 Subject: gpu: nvgpu: Skip calling undefined prod callbacks Fix rest of code to not call prod callbacks that are set to NULL. Bug 1799537 Change-Id: I756bb1f7ef58ba753ac43a2be6f125107be3cf34 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1209133 (cherry picked from commit 5f4d7b42b6101407fde8c4a7dcdd3633eca85ae5) Reviewed-on: http://git-master/r/1217297 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c index f1f2cc70..d15386d7 100644 --- a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c @@ -1088,12 +1088,15 @@ static int dbg_set_powergate(struct dbg_session_gk20a *dbg_s, u32 powermode) /*do elpg disable before clock gating */ if (support_gk20a_pmu(g->dev)) gk20a_pmu_disable_elpg(g); - g->ops.clock_gating.slcg_gr_load_gating_prod(g, - false); - g->ops.clock_gating.slcg_perf_load_gating_prod(g, - false); - g->ops.clock_gating.slcg_ltc_load_gating_prod(g, - false); + if (g->ops.clock_gating.slcg_gr_load_gating_prod) + g->ops.clock_gating.slcg_gr_load_gating_prod(g, + false); + if (g->ops.clock_gating.slcg_perf_load_gating_prod) + g->ops.clock_gating.slcg_perf_load_gating_prod(g, + false); + if (g->ops.clock_gating.slcg_ltc_load_gating_prod) + g->ops.clock_gating.slcg_ltc_load_gating_prod(g, + false); gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_RUN); g->elcg_enabled = false; @@ -1120,12 +1123,15 @@ static int dbg_set_powergate(struct dbg_session_gk20a *dbg_s, u32 powermode) gr_gk20a_init_cg_mode(g, ELCG_MODE, ELCG_AUTO); gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_AUTO); - g->ops.clock_gating.slcg_ltc_load_gating_prod(g, - g->slcg_enabled); - g->ops.clock_gating.slcg_perf_load_gating_prod(g, - g->slcg_enabled); - g->ops.clock_gating.slcg_gr_load_gating_prod(g, - g->slcg_enabled); + if (g->ops.clock_gating.slcg_ltc_load_gating_prod) + g->ops.clock_gating.slcg_ltc_load_gating_prod(g, + g->slcg_enabled); + if (g->ops.clock_gating.slcg_perf_load_gating_prod) + g->ops.clock_gating.slcg_perf_load_gating_prod(g, + g->slcg_enabled); + if (g->ops.clock_gating.slcg_gr_load_gating_prod) + g->ops.clock_gating.slcg_gr_load_gating_prod(g, + g->slcg_enabled); if (support_gk20a_pmu(g->dev)) gk20a_pmu_enable_elpg(g); -- cgit v1.2.2