summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/sec2_gp106.c
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2017-06-23 07:40:13 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-06-29 16:29:52 -0400
commit268721975c6c72418e2282126e7f594f62e6e118 (patch)
tree62c64561775f42513a9dda74244f613dc5a59543 /drivers/gpu/nvgpu/gp106/sec2_gp106.c
parent97aea977e25c17ecb44448eb19dc15e740036958 (diff)
gpu: nvgpu: PMU reset reorg
- nvgpu_pmu_reset() as pmu reset for all chips & removed gk20a_pmu_reset() & gp106_pmu_reset() along with dependent code. - Created ops to do PMU engine reset & to know the engine reset status - Removed pmu.reset ops & replaced with nvgpu_flcn_reset(pmu->flcn) - Moved sec2 reset to sec2_gp106 from pmu_gp106 & cleaned PMU code part of sec2. JIRA NVGPU-99 Change-Id: I7575e4ca2b34922d73d171f6a41bfcdc2f40dc96 Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: https://git-master/r/1507881 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/sec2_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/gp106/sec2_gp106.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gp106/sec2_gp106.c b/drivers/gpu/nvgpu/gp106/sec2_gp106.c
index a25fc990..f49d56c4 100644
--- a/drivers/gpu/nvgpu/gp106/sec2_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/sec2_gp106.c
@@ -330,6 +330,20 @@ void init_pmu_setup_hw1(struct gk20a *g)
330 330
331} 331}
332 332
333static int gp106_sec2_reset(struct gk20a *g)
334{
335 nvgpu_log_fn(g, " ");
336
337 gk20a_writel(g, psec_falcon_engine_r(),
338 pwr_falcon_engine_reset_true_f());
339 nvgpu_udelay(10);
340 gk20a_writel(g, psec_falcon_engine_r(),
341 pwr_falcon_engine_reset_false_f());
342
343 nvgpu_log_fn(g, "done");
344 return 0;
345}
346
333int init_sec2_setup_hw1(struct gk20a *g, 347int init_sec2_setup_hw1(struct gk20a *g,
334 void *desc, u32 bl_sz) 348 void *desc, u32 bl_sz)
335{ 349{
@@ -339,10 +353,7 @@ int init_sec2_setup_hw1(struct gk20a *g,
339 353
340 gk20a_dbg_fn(""); 354 gk20a_dbg_fn("");
341 355
342 nvgpu_mutex_acquire(&pmu->isr_mutex); 356 gp106_sec2_reset(g);
343 g->ops.pmu.reset(g);
344 pmu->isr_enabled = true;
345 nvgpu_mutex_release(&pmu->isr_mutex);
346 357
347 data = gk20a_readl(g, psec_fbif_ctl_r()); 358 data = gk20a_readl(g, psec_fbif_ctl_r());
348 data |= psec_fbif_ctl_allow_phys_no_ctx_allow_f(); 359 data |= psec_fbif_ctl_allow_phys_no_ctx_allow_f();
@@ -370,11 +381,7 @@ int init_sec2_setup_hw1(struct gk20a *g,
370 psec_fbif_transcfg_target_noncoherent_sysmem_f()); 381 psec_fbif_transcfg_target_noncoherent_sysmem_f());
371 382
372 /*disable irqs for hs falcon booting as we will poll for halt*/ 383 /*disable irqs for hs falcon booting as we will poll for halt*/
373 nvgpu_mutex_acquire(&pmu->isr_mutex);
374 pmu_enable_irq(pmu, false);
375 sec_enable_irq(pmu, false); 384 sec_enable_irq(pmu, false);
376 pmu->isr_enabled = false;
377 nvgpu_mutex_release(&pmu->isr_mutex);
378 err = bl_bootstrap_sec2(pmu, desc, bl_sz); 385 err = bl_bootstrap_sec2(pmu, desc, bl_sz);
379 if (err) 386 if (err)
380 return err; 387 return err;