[coreboot-gerrit] New patch to review for coreboot: drivers/i2c/tpm/cr50: Increase IRQ timeout
Duncan Laurie (dlaurie@chromium.org)
gerrit at coreboot.org
Tue Nov 1 23:05:11 CET 2016
Duncan Laurie (dlaurie at chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17204
-gerrit
commit 08eff339f107bf68efbf435c7c20f6c88f6372e2
Author: Duncan Laurie <dlaurie at chromium.org>
Date: Tue Nov 1 15:03:13 2016 -0700
drivers/i2c/tpm/cr50: Increase IRQ timeout
Increase the IRQ timeout to prevent issues if there is a delay
in the TPM responding to a command.
BUG=chrome-os-partner:59191
TEST=suspend/resume testing on eve board
Change-Id: I1ea7859bc7a056a450b2b0ee32153ae43ee8699f
Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
---
src/drivers/i2c/tpm/cr50.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/drivers/i2c/tpm/cr50.c b/src/drivers/i2c/tpm/cr50.c
index f7e667b..4b1f03b 100644
--- a/src/drivers/i2c/tpm/cr50.c
+++ b/src/drivers/i2c/tpm/cr50.c
@@ -48,6 +48,7 @@
#define CR50_MAX_BUFSIZE 63
#define CR50_TIMEOUT_LONG_MS 2000 /* Long timeout while waiting for TPM */
#define CR50_TIMEOUT_SHORT_MS 2 /* Short timeout during transactions */
+#define CR50_TIMEOUT_IRQ_MS 50 /* Timeout waiting for TPM ready */
#define CR50_DID_VID 0x00281ae0L
struct tpm_inf_dev {
@@ -65,11 +66,11 @@ static int cr50_i2c_wait_tpm_ready(struct tpm_chip *chip)
if (!chip->vendor.irq_status) {
/* Fixed delay if interrupt not supported */
- mdelay(CR50_TIMEOUT_SHORT_MS);
+ mdelay(CR50_TIMEOUT_IRQ_MS);
return 0;
}
- stopwatch_init_msecs_expire(&sw, 5 * CR50_TIMEOUT_SHORT_MS);
+ stopwatch_init_msecs_expire(&sw, CR50_TIMEOUT_IRQ_MS);
while (!chip->vendor.irq_status(chip->vendor.irq))
if (stopwatch_expired(&sw))
@@ -429,6 +430,11 @@ static void cr50_vendor_init(struct tpm_chip *chip)
chip->vendor.irq = -1;
#endif
}
+
+ if (chip->vendor.irq <= 0)
+ printk(BIOS_WARNING,
+ "%s: No IRQ, will use %ums delay for TPM ready\n",
+ __func__, CR50_TIMEOUT_IRQ_MS);
}
int tpm_vendor_probe(unsigned bus, uint32_t addr)
More information about the coreboot-gerrit
mailing list