diff options
Diffstat (limited to 'src/soc/intel')
-rw-r--r-- | src/soc/intel/common/block/fast_spi/fast_spi_flash.c | 12 | ||||
-rw-r--r-- | src/soc/intel/common/block/include/intelblocks/fast_spi.h | 2 |
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. */ |