diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 6313b9d5..2456c784 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -3333,12 +3333,16 @@ int pmu_wait_message_cond(struct pmu_gk20a *pmu, u32 timeout, | |||
3333 | struct gk20a *g = gk20a_from_pmu(pmu); | 3333 | struct gk20a *g = gk20a_from_pmu(pmu); |
3334 | unsigned long end_jiffies = jiffies + msecs_to_jiffies(timeout); | 3334 | unsigned long end_jiffies = jiffies + msecs_to_jiffies(timeout); |
3335 | unsigned long delay = GR_IDLE_CHECK_DEFAULT; | 3335 | unsigned long delay = GR_IDLE_CHECK_DEFAULT; |
3336 | u32 servicedpmuint; | ||
3336 | 3337 | ||
3338 | servicedpmuint = pwr_falcon_irqstat_halt_true_f() | | ||
3339 | pwr_falcon_irqstat_exterr_true_f() | | ||
3340 | pwr_falcon_irqstat_swgen0_true_f(); | ||
3337 | do { | 3341 | do { |
3338 | if (*var == val) | 3342 | if (*var == val) |
3339 | return 0; | 3343 | return 0; |
3340 | 3344 | ||
3341 | if (gk20a_readl(g, pwr_falcon_irqstat_r())) | 3345 | if (gk20a_readl(g, pwr_falcon_irqstat_r()) & servicedpmuint) |
3342 | gk20a_pmu_isr(g); | 3346 | gk20a_pmu_isr(g); |
3343 | 3347 | ||
3344 | usleep_range(delay, delay * 2); | 3348 | usleep_range(delay, delay * 2); |
@@ -4042,8 +4046,6 @@ int gk20a_pmu_destroy(struct gk20a *g) | |||
4042 | pmu->zbc_ready = false; | 4046 | pmu->zbc_ready = false; |
4043 | g->ops.pmu.lspmuwprinitdone = false; | 4047 | g->ops.pmu.lspmuwprinitdone = false; |
4044 | g->ops.pmu.fecsbootstrapdone = false; | 4048 | g->ops.pmu.fecsbootstrapdone = false; |
4045 | g->ops.pmu.fecsrecoveryinprogress = 0; | ||
4046 | |||
4047 | 4049 | ||
4048 | gk20a_dbg_fn("done"); | 4050 | gk20a_dbg_fn("done"); |
4049 | return 0; | 4051 | return 0; |