summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-08-29 12:16:12 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-09-08 23:05:49 -0400
commitf56ed459dde2a292b3af0dd4deb96b1090eb53a2 (patch)
treee69a53c34f6b89805ef74a63ecfacede0d864cc5 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
parenta0dd3ee5becb8e0f91e46654e25619b55655c017 (diff)
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 <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1209133 (cherry picked from commit 5f4d7b42b6101407fde8c4a7dcdd3633eca85ae5) Reviewed-on: http://git-master/r/1217297 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c30
1 files changed, 18 insertions, 12 deletions
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)
1088 /*do elpg disable before clock gating */ 1088 /*do elpg disable before clock gating */
1089 if (support_gk20a_pmu(g->dev)) 1089 if (support_gk20a_pmu(g->dev))
1090 gk20a_pmu_disable_elpg(g); 1090 gk20a_pmu_disable_elpg(g);
1091 g->ops.clock_gating.slcg_gr_load_gating_prod(g, 1091 if (g->ops.clock_gating.slcg_gr_load_gating_prod)
1092 false); 1092 g->ops.clock_gating.slcg_gr_load_gating_prod(g,
1093 g->ops.clock_gating.slcg_perf_load_gating_prod(g, 1093 false);
1094 false); 1094 if (g->ops.clock_gating.slcg_perf_load_gating_prod)
1095 g->ops.clock_gating.slcg_ltc_load_gating_prod(g, 1095 g->ops.clock_gating.slcg_perf_load_gating_prod(g,
1096 false); 1096 false);
1097 if (g->ops.clock_gating.slcg_ltc_load_gating_prod)
1098 g->ops.clock_gating.slcg_ltc_load_gating_prod(g,
1099 false);
1097 1100
1098 gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_RUN); 1101 gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_RUN);
1099 g->elcg_enabled = false; 1102 g->elcg_enabled = false;
@@ -1120,12 +1123,15 @@ static int dbg_set_powergate(struct dbg_session_gk20a *dbg_s, u32 powermode)
1120 gr_gk20a_init_cg_mode(g, ELCG_MODE, ELCG_AUTO); 1123 gr_gk20a_init_cg_mode(g, ELCG_MODE, ELCG_AUTO);
1121 gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_AUTO); 1124 gr_gk20a_init_cg_mode(g, BLCG_MODE, BLCG_AUTO);
1122 1125
1123 g->ops.clock_gating.slcg_ltc_load_gating_prod(g, 1126 if (g->ops.clock_gating.slcg_ltc_load_gating_prod)
1124 g->slcg_enabled); 1127 g->ops.clock_gating.slcg_ltc_load_gating_prod(g,
1125 g->ops.clock_gating.slcg_perf_load_gating_prod(g, 1128 g->slcg_enabled);
1126 g->slcg_enabled); 1129 if (g->ops.clock_gating.slcg_perf_load_gating_prod)
1127 g->ops.clock_gating.slcg_gr_load_gating_prod(g, 1130 g->ops.clock_gating.slcg_perf_load_gating_prod(g,
1128 g->slcg_enabled); 1131 g->slcg_enabled);
1132 if (g->ops.clock_gating.slcg_gr_load_gating_prod)
1133 g->ops.clock_gating.slcg_gr_load_gating_prod(g,
1134 g->slcg_enabled);
1129 1135
1130 if (support_gk20a_pmu(g->dev)) 1136 if (support_gk20a_pmu(g->dev))
1131 gk20a_pmu_enable_elpg(g); 1137 gk20a_pmu_enable_elpg(g);