summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-11-04 05:17:21 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:02 -0400
commitafc470e867b7feb9338ccb086ace8989604683e0 (patch)
tree3ee866fb4977be9d96e25ce76f9245ce2d777b02
parentb3f575074b66e8af1a9943874f9782b793fa7edc (diff)
gpu: nvgpu: Do not call ELPG if disabled
Do not call PMU ELPG calls if ELPG should be disabled. Also skips initialization of PMU ucode if PMU is disabled. Bug 1567274 Change-Id: Ia9cd3b553c358142ee05a1b0e0832f9412f7cf17 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/593335 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/fifo_gk20a.c6
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c3
2 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
index 4095b079..df6b84c5 100644
--- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c
@@ -900,7 +900,8 @@ void fifo_gk20a_finish_mmu_fault_handling(struct gk20a *g,
900 gr_gpfifo_ctl_semaphore_access_enabled_f()); 900 gr_gpfifo_ctl_semaphore_access_enabled_f());
901 901
902 /* It is safe to enable ELPG again. */ 902 /* It is safe to enable ELPG again. */
903 gk20a_pmu_enable_elpg(g); 903 if (support_gk20a_pmu(g->dev) && g->elpg_enabled)
904 gk20a_pmu_enable_elpg(g);
904} 905}
905 906
906static bool gk20a_fifo_set_ctx_mmu_error(struct gk20a *g, 907static bool gk20a_fifo_set_ctx_mmu_error(struct gk20a *g,
@@ -974,7 +975,8 @@ static bool gk20a_fifo_handle_mmu_fault(struct gk20a *g)
974 g->fifo.deferred_reset_pending = false; 975 g->fifo.deferred_reset_pending = false;
975 976
976 /* Disable power management */ 977 /* Disable power management */
977 gk20a_pmu_disable_elpg(g); 978 if (support_gk20a_pmu(g->dev) && g->elpg_enabled)
979 gk20a_pmu_disable_elpg(g);
978 g->ops.clock_gating.slcg_gr_load_gating_prod(g, 980 g->ops.clock_gating.slcg_gr_load_gating_prod(g,
979 false); 981 false);
980 g->ops.clock_gating.slcg_perf_load_gating_prod(g, 982 g->ops.clock_gating.slcg_perf_load_gating_prod(g,
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index 276e5c3e..58108d97 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -820,7 +820,8 @@ static int gk20a_pm_finalize_poweron(struct device *dev)
820 goto done; 820 goto done;
821 } 821 }
822 822
823 err = g->ops.pmu.prepare_ucode(g); 823 if (g->ops.pmu.prepare_ucode)
824 err = g->ops.pmu.prepare_ucode(g);
824 if (err) { 825 if (err) {
825 gk20a_err(dev, "failed to init pmu ucode"); 826 gk20a_err(dev, "failed to init pmu ucode");
826 goto done; 827 goto done;