From f2e7b37c52cac5e7825d0e01b3c45c1506e99253 Mon Sep 17 00:00:00 2001 From: Shelley Chen Date: Fri, 15 Dec 2017 15:25:08 -0800 Subject: spi/tpm: Clear pending irqs during tpm2_init Seeing some instances were cr50 spi driver is starting a new transaction without getting a ready interrupt from cr50, which means that there are pending interrupts. Clearing these to be sure there are not any stale irqs for the next transaction. BUG=b:69567837 BRANCH=None TEST=run FAFT and see if any 0x2b recovery boots occur Change-Id: Ie099da9f2b3c4da417648ae10a5ba356b7a093ff Signed-off-by: Shelley Chen Reviewed-on: https://review.coreboot.org/22909 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Furquan Shaikh --- src/drivers/spi/tpm/tpm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/drivers/spi') diff --git a/src/drivers/spi/tpm/tpm.c b/src/drivers/spi/tpm/tpm.c index e1fec28a41..ceec0b0bc6 100644 --- a/src/drivers/spi/tpm/tpm.c +++ b/src/drivers/spi/tpm/tpm.c @@ -429,6 +429,9 @@ int tpm2_init(struct spi_slave *spi_if) memcpy(spi_slave, spi_if, sizeof(*spi_if)); + /* clear any pending irqs */ + tis_plat_irq_status(); + /* * 150 ms should be enough to synchronize with the TPM even under the * worst nested reset request conditions. In vast majority of cases -- cgit v1.2.3