diff options
author | Mahantesh Kumbar <mkumbar@nvidia.com> | 2017-06-23 07:40:13 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-06-29 16:29:52 -0400 |
commit | 268721975c6c72418e2282126e7f594f62e6e118 (patch) | |
tree | 62c64561775f42513a9dda74244f613dc5a59543 /drivers/gpu/nvgpu/gp106/sec2_gp106.c | |
parent | 97aea977e25c17ecb44448eb19dc15e740036958 (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.c | 23 |
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 | ||
333 | static 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 | |||
333 | int init_sec2_setup_hw1(struct gk20a *g, | 347 | int 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; |