mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
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>
This commit is contained in:
committed by
mobile promotions
parent
a0dd3ee5be
commit
f56ed459dd
@@ -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);
|
||||
|
||||
@@ -1323,12 +1323,15 @@ static bool gk20a_fifo_handle_mmu_fault(
|
||||
/* Disable power management */
|
||||
if (support_gk20a_pmu(g->dev) && g->elpg_enabled)
|
||||
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, ELCG_MODE, ELCG_RUN);
|
||||
|
||||
|
||||
@@ -104,7 +104,8 @@ static ssize_t blcg_enable_store(struct device *dev,
|
||||
g->ops.clock_gating.blcg_fb_load_gating_prod(g, g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_fifo_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_fifo_load_gating_prod(g, g->blcg_enabled);
|
||||
g->ops.clock_gating.blcg_gr_load_gating_prod(g, g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_gr_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_gr_load_gating_prod(g, g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_ltc_load_gating_prod)
|
||||
g->ops.clock_gating.blcg_ltc_load_gating_prod(g, g->blcg_enabled);
|
||||
if (g->ops.clock_gating.blcg_pmu_load_gating_prod)
|
||||
@@ -167,10 +168,12 @@ static ssize_t slcg_enable_store(struct device *dev,
|
||||
g->ops.clock_gating.slcg_fb_load_gating_prod(g, g->slcg_enabled);
|
||||
if (g->ops.clock_gating.slcg_fifo_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_fifo_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_gr_load_gating_prod)
|
||||
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);
|
||||
g->ops.clock_gating.slcg_perf_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_priring_load_gating_prod)
|
||||
g->ops.clock_gating.slcg_priring_load_gating_prod(g, g->slcg_enabled);
|
||||
if (g->ops.clock_gating.slcg_pmu_load_gating_prod)
|
||||
|
||||
Reference in New Issue
Block a user