summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/sec2_gp106.c
diff options
context:
space:
mode:
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;