summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2019-04-24 11:20:51 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-04-27 01:36:40 -0700
commit0f25f85e44362e7feb15ce59974f0423abab0b5f (patch)
treef353615b1486127e9e83adac0725b28ec9474fef /common
parentb9bf62a7aea6e71e3faec26894e9f75c3d435afa (diff)
downloadchrome-ec-0f25f85e44362e7feb15ce59974f0423abab0b5f.tar.gz
ccd: delay sleep while opening ccd
Cr50 may enter deep sleep while wiping the TPM. This change adds a sleep delay before opening ccd. BUG=b:130646257 BRANCH=cr50 TEST=manual dut-control cold_reset:on run ccd open make sure ccd is open even after entering deep sleep Change-Id: Id44b608702b664621bd2441f62a03ba6428135cf Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1585606 Reviewed-by: Namyoon Woo <namyoon@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/ccd_config.c6
-rw-r--r--common/factory_mode.c21
2 files changed, 11 insertions, 16 deletions
diff --git a/common/ccd_config.c b/common/ccd_config.c
index 9c37ca41d7..d51c4eed45 100644
--- a/common/ccd_config.c
+++ b/common/ccd_config.c
@@ -564,6 +564,12 @@ static void ccd_open_done(int sync)
{
int rv;
+ /*
+ * Wiping the TPM may take a while. Delay sleep long enough for the
+ * open process to finish.
+ */
+ delay_sleep_by(DISABLE_SLEEP_TIME_TPM_WIPE);
+
if (!ccd_is_cap_enabled(CCD_CAP_OPEN_WITHOUT_TPM_WIPE)) {
/* Can't open unless wipe succeeds */
if (sync)
diff --git a/common/factory_mode.c b/common/factory_mode.c
index be6c532304..9198cc936c 100644
--- a/common/factory_mode.c
+++ b/common/factory_mode.c
@@ -48,21 +48,6 @@ static void force_system_reset(void)
}
DECLARE_DEFERRED(force_system_reset);
-/* The below time constants are way longer than should be required in practice:
- *
- * Time it takes to finish processing TPM command
- */
-#define TPM_PROCESSING_TIME (1 * SECOND)
-
-/*
- * Time it takse TPM reset function to wipe out the NVMEM and reboot the
- * device.
- */
-#define TPM_RESET_TIME (10 * SECOND)
-
-/* Total time deep sleep should not be allowed. */
-#define DISABLE_SLEEP_TIME (TPM_PROCESSING_TIME + TPM_RESET_TIME)
-
static void factory_enable_deferred(void)
{
int rv;
@@ -90,7 +75,11 @@ DECLARE_DEFERRED(factory_enable_deferred);
void enable_ccd_factory_mode(int reset_required)
{
- delay_sleep_by(DISABLE_SLEEP_TIME);
+ /*
+ * Wiping the TPM may take a while. Delay sleep long enough for the
+ * factory enable process to finish.
+ */
+ delay_sleep_by(DISABLE_SLEEP_TIME_TPM_WIPE);
reset_required_ |= !!reset_required;
hook_call_deferred(&factory_enable_deferred_data,