diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-10-25 13:06:07 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-12-05 16:49:21 -0500 |
commit | 37d4b649d43e1024859d56becfaaa25a0a41868c (patch) | |
tree | d2b3071f843299414dd7fe3df6bf94c0468bcf62 /drivers | |
parent | 89e707d2b4f492f01a566844d01b1da555709c24 (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')
-rw-r--r-- | drivers/gpu/nvgpu/gm206/bios_gm206.c | 8 |
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()); |