summaryrefslogtreecommitdiff
path: root/common/i2cs_tpm.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/i2cs_tpm.c')
-rw-r--r--common/i2cs_tpm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/common/i2cs_tpm.c b/common/i2cs_tpm.c
index b9ab003b16..7700fd8373 100644
--- a/common/i2cs_tpm.c
+++ b/common/i2cs_tpm.c
@@ -9,6 +9,7 @@
#include "hooks.h"
#include "i2cs.h"
#include "registers.h"
+#include "system.h"
#include "tpm_registers.h"
/*
@@ -129,6 +130,14 @@ static void process_read_access(uint16_t reg_size,
tpm_register_get(tpm_reg, data, reg_size);
/* Transfer TPM fifo data to the I2CS HW fifo */
i2cs_post_read_fill_fifo(data, reg_size);
+
+ /*
+ * Could be the end of a TPM trasaction. Set sleep to be reenabled in 1
+ * second. If this is not the end of a TPM response, then sleep will be
+ * disabled again in the next I2CS interrupt.
+ */
+ delay_sleep_by(1 * SECOND);
+ enable_sleep(SLEEP_MASK_I2C_SLAVE);
}
static void process_write_access(uint16_t reg_size, uint16_t tpm_reg,