aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/common/block/fast_spi/fast_spi_flash.c12
-rw-r--r--src/soc/intel/common/block/include/intelblocks/fast_spi.h2
2 files changed, 14 insertions, 0 deletions
diff --git a/src/soc/intel/common/block/fast_spi/fast_spi_flash.c b/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
index 269db634e0..2bc7cf1759 100644
--- a/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
+++ b/src/soc/intel/common/block/fast_spi/fast_spi_flash.c
@@ -161,6 +161,18 @@ static int exec_sync_hwseq_xfer(struct fast_spi_flash_ctx *ctx,
return wait_for_hwseq_xfer(ctx, flash_addr);
}
+int fast_spi_cycle_in_progress(void)
+{
+ BOILERPLATE_CREATE_CTX(ctx);
+
+ int ret = wait_for_hwseq_spi_cycle_complete(ctx);
+ if (ret != SUCCESS)
+ printk(BIOS_ERR, "SPI Transaction Timeout (Exceeded %d ms) due to prior"
+ " operation is pending\n", SPIBAR_HWSEQ_XFER_TIMEOUT_MS);
+
+ return ret;
+}
+
/*
* Ensure read/write xfer len is not greater than SPIBAR_FDATA_FIFO_SIZE and
* that the operation does not cross page boundary.
diff --git a/src/soc/intel/common/block/include/intelblocks/fast_spi.h b/src/soc/intel/common/block/include/intelblocks/fast_spi.h
index a903ea839e..eb3f2aabb6 100644
--- a/src/soc/intel/common/block/include/intelblocks/fast_spi.h
+++ b/src/soc/intel/common/block/include/intelblocks/fast_spi.h
@@ -5,6 +5,8 @@
#include <types.h>
+/* Check if SPI transaction is pending */
+int fast_spi_cycle_in_progress(void);
/*
* Disable the BIOS write protect and Enable Prefetching and Caching.
*/