diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-08-29 12:16:12 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-09-08 23:05:49 -0400 |
commit | f56ed459dde2a292b3af0dd4deb96b1090eb53a2 (patch) | |
tree | e69a53c34f6b89805ef74a63ecfacede0d864cc5 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c | |
parent | a0dd3ee5becb8e0f91e46654e25619b55655c017 (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.c | 30 |
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); |