summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm206/bios_gm206.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-10-25 13:06:07 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-05 16:49:21 -0500
commit37d4b649d43e1024859d56becfaaa25a0a41868c (patch)
treed2b3071f843299414dd7fe3df6bf94c0468bcf62 /drivers/gpu/nvgpu/gm206/bios_gm206.c
parent89e707d2b4f492f01a566844d01b1da555709c24 (diff)
gpu: nvgpu: Wait for full UDE completion
devinit signals completion even before the full UDE script has been executed. Wait for both devinit complete & PMU halt to make sure UDE is fully completed. Bug 200244445 Change-Id: Iaec27d9fc312f282a778aabbbe8b75d85e7a0a87 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1242253 (cherry picked from commit a013029e48fcc83f670bfd0e82da035fa41d6030) (cherry picked from commit e742842eb4fbcefdc5bb88b2f7b3055a1a60652b) Reviewed-on: http://git-master/r/1263293 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gm206/bios_gm206.c')
-rw-r--r--drivers/gpu/nvgpu/gm206/bios_gm206.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gm206/bios_gm206.c b/drivers/gpu/nvgpu/gm206/bios_gm206.c
index 1f3de0b7..304de68e 100644
--- a/drivers/gpu/nvgpu/gm206/bios_gm206.c
+++ b/drivers/gpu/nvgpu/gm206/bios_gm206.c
@@ -704,7 +704,7 @@ static int gm206_bios_devinit(struct gk20a *g)
704{ 704{
705 int retries = PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT; 705 int retries = PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT;
706 int err = 0; 706 int err = 0;
707 int val; 707 int devinit_completed;
708 708
709 gk20a_dbg_fn(""); 709 gk20a_dbg_fn("");
710 g->ops.pmu.reset(g); 710 g->ops.pmu.reset(g);
@@ -752,10 +752,12 @@ static int gm206_bios_devinit(struct gk20a *g)
752 752
753 retries = PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT; 753 retries = PMU_BOOT_TIMEOUT_MAX / PMU_BOOT_TIMEOUT_DEFAULT;
754 do { 754 do {
755 val = top_scratch1_devinit_completed_v( 755 devinit_completed = pwr_falcon_cpuctl_halt_intr_v(
756 gk20a_readl(g, pwr_falcon_cpuctl_r())) &&
757 top_scratch1_devinit_completed_v(
756 gk20a_readl(g, top_scratch1_r())); 758 gk20a_readl(g, top_scratch1_r()));
757 udelay(PMU_BOOT_TIMEOUT_DEFAULT); 759 udelay(PMU_BOOT_TIMEOUT_DEFAULT);
758 } while (!val && retries--); 760 } while (!devinit_completed && retries--);
759 761
760 gk20a_writel(g, pwr_falcon_irqsclr_r(), 762 gk20a_writel(g, pwr_falcon_irqsclr_r(),
761 pwr_falcon_irqstat_halt_true_f()); 763 pwr_falcon_irqstat_halt_true_f());