video: tegra: host: gk20a: reorder free_irq

Free IRQs before the various subunits are suspended. This is to prevent
potential races between the IRQ thread and the suspend routine.

Bug 1437749

Change-Id: Iffef918feecae0b256be96efd02b01b2677c225d
Signed-off-by: Prashant Malani <pmalani@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
Prashant Malani
2014-01-24 12:08:05 -08:00
committed by Dan Willemsen
parent ef4ed26f8b
commit 9727cf87bc

View File

@@ -755,14 +755,6 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
if (!g->power_on) if (!g->power_on)
return 0; return 0;
ret |= gk20a_channel_suspend(g);
/* disable elpg before gr or fifo suspend */
ret |= gk20a_pmu_destroy(g);
ret |= gk20a_gr_suspend(g);
ret |= gk20a_mm_suspend(g);
ret |= gk20a_fifo_suspend(g);
/* /*
* After this point, gk20a interrupts should not get * After this point, gk20a interrupts should not get
* serviced. * serviced.
@@ -773,6 +765,14 @@ static int gk20a_pm_prepare_poweroff(struct device *_dev)
g->irq_requested = false; g->irq_requested = false;
} }
ret |= gk20a_channel_suspend(g);
/* disable elpg before gr or fifo suspend */
ret |= gk20a_pmu_destroy(g);
ret |= gk20a_gr_suspend(g);
ret |= gk20a_mm_suspend(g);
ret |= gk20a_fifo_suspend(g);
/* Disable GPCPLL */ /* Disable GPCPLL */
ret |= gk20a_suspend_clk_support(g); ret |= gk20a_suspend_clk_support(g);
g->power_on = false; g->power_on = false;