smaug: Fix TPM failure causing system entering recovery mode

Based on SLB9645 4.7, it is more safe to send first command to TPM 150 ms
after the deassertion of the RESET# signal.

The failed unit tested with this patch can no long reproduce the issue
after 1000+ cycles reboot test.

BUG=chrome-os-partner:46039
BRANCH=firmware-smaug-7132.B
TEST=reboot test

Signed-off-by: Jimmy Zhang <jimmzhang@nvidia.com>

Change-Id: I7f8b159d872936ac41c477cdb38cbb1f73cb8d1b
Reviewed-on: https://chromium-review.googlesource.com/313138
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Tested-by: Jimmy Zhang <jimmzhang@nvidia.com>
Reviewed-by: Tom Warren <twarren@nvidia.com>
Tested-by: Joseph Lo <yushun.lo@gmail.com>
Commit-Queue: Jimmy Zhang <jimmzhang@nvidia.com>
diff --git a/src/soc/nvidia/tegra210/verstage.c b/src/soc/nvidia/tegra210/verstage.c
index 1117db4..7e3ba3e 100644
--- a/src/soc/nvidia/tegra210/verstage.c
+++ b/src/soc/nvidia/tegra210/verstage.c
@@ -22,6 +22,7 @@
 #include <arch/hlt.h>
 #include <arch/stages.h>
 #include <console/console.h>
+#include <delay.h>
 #include <soc/verstage.h>
 #include <timestamp.h>
 #include <vendorcode/google/chromeos/chromeos.h>
@@ -38,6 +39,13 @@
 	timestamp_add_now(TS_START_VBOOT);
 	verstage_mainboard_init();
 
+	/*
+	 * SLB9645 implies TPM requires 150 ms power-on tests.
+	 * add +5 ms margin
+	 */
+	while (timestamp_get() < (uint64_t)155000)
+		mdelay(1);
+
 	entry = vboot2_verify_firmware();
 	if (entry != (void *)-1)
 		stage_exit(entry);