summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/fifo_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/fifo_gv11b.c45
1 files changed, 14 insertions, 31 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
index 5b84df47..b3c59f84 100644
--- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
@@ -43,6 +43,8 @@
43#include <nvgpu/gk20a.h> 43#include <nvgpu/gk20a.h>
44#include <nvgpu/channel.h> 44#include <nvgpu/channel.h>
45#include <nvgpu/unit.h> 45#include <nvgpu/unit.h>
46#include <nvgpu/power_features/cg.h>
47#include <nvgpu/power_features/power_features.h>
46 48
47#include "gk20a/fifo_gk20a.h" 49#include "gk20a/fifo_gk20a.h"
48 50
@@ -1095,25 +1097,11 @@ void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask,
1095 g->fifo.deferred_reset_pending = false; 1097 g->fifo.deferred_reset_pending = false;
1096 1098
1097 /* Disable power management */ 1099 /* Disable power management */
1098 if (g->support_pmu && g->elpg_enabled) { 1100 if (g->support_pmu) {
1099 if (nvgpu_pmu_disable_elpg(g)) { 1101 if (nvgpu_cg_pg_disable(g) != 0) {
1100 nvgpu_err(g, "failed to set disable elpg"); 1102 nvgpu_warn(g, "fail to disable power mgmt");
1101 } 1103 }
1102 } 1104 }
1103 if (g->ops.clock_gating.slcg_gr_load_gating_prod) {
1104 g->ops.clock_gating.slcg_gr_load_gating_prod(g,
1105 false);
1106 }
1107 if (g->ops.clock_gating.slcg_perf_load_gating_prod) {
1108 g->ops.clock_gating.slcg_perf_load_gating_prod(g,
1109 false);
1110 }
1111 if (g->ops.clock_gating.slcg_ltc_load_gating_prod) {
1112 g->ops.clock_gating.slcg_ltc_load_gating_prod(g,
1113 false);
1114 }
1115
1116 gr_gk20a_init_cg_mode(g, ELCG_MODE, ELCG_RUN);
1117 1105
1118 if (rc_type == RC_TYPE_MMU_FAULT) { 1106 if (rc_type == RC_TYPE_MMU_FAULT) {
1119 gk20a_debug_dump(g); 1107 gk20a_debug_dump(g);
@@ -1220,8 +1208,10 @@ void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask,
1220 gk20a_fifo_set_runlist_state(g, runlists_mask, RUNLIST_ENABLED); 1208 gk20a_fifo_set_runlist_state(g, runlists_mask, RUNLIST_ENABLED);
1221 1209
1222 /* It is safe to enable ELPG again. */ 1210 /* It is safe to enable ELPG again. */
1223 if (g->support_pmu && g->elpg_enabled) { 1211 if (g->support_pmu) {
1224 nvgpu_pmu_enable_elpg(g); 1212 if (nvgpu_cg_pg_enable(g) != 0) {
1213 nvgpu_warn(g, "fail to enable power mgmt");
1214 }
1225 } 1215 }
1226 1216
1227 g->ops.fifo.teardown_unmask_intr(g); 1217 g->ops.fifo.teardown_unmask_intr(g);
@@ -1312,18 +1302,11 @@ int gv11b_init_fifo_reset_enable_hw(struct gk20a *g)
1312 /* enable pmc pfifo */ 1302 /* enable pmc pfifo */
1313 g->ops.mc.reset(g, g->ops.mc.reset_mask(g, NVGPU_UNIT_FIFO)); 1303 g->ops.mc.reset(g, g->ops.mc.reset_mask(g, NVGPU_UNIT_FIFO));
1314 1304
1315 if (g->ops.clock_gating.slcg_ce2_load_gating_prod) { 1305 nvgpu_cg_slcg_ce2_load_enable(g);
1316 g->ops.clock_gating.slcg_ce2_load_gating_prod(g, 1306
1317 g->slcg_enabled); 1307 nvgpu_cg_slcg_fifo_load_enable(g);
1318 } 1308
1319 if (g->ops.clock_gating.slcg_fifo_load_gating_prod) { 1309 nvgpu_cg_blcg_fifo_load_enable(g);
1320 g->ops.clock_gating.slcg_fifo_load_gating_prod(g,
1321 g->slcg_enabled);
1322 }
1323 if (g->ops.clock_gating.blcg_fifo_load_gating_prod) {
1324 g->ops.clock_gating.blcg_fifo_load_gating_prod(g,
1325 g->blcg_enabled);
1326 }
1327 1310
1328 timeout = gk20a_readl(g, fifo_fb_timeout_r()); 1311 timeout = gk20a_readl(g, fifo_fb_timeout_r());
1329 nvgpu_log_info(g, "fifo_fb_timeout reg val = 0x%08x", timeout); 1312 nvgpu_log_info(g, "fifo_fb_timeout reg val = 0x%08x", timeout);