aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/stm32/qspi.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ports/stm32/qspi.c b/ports/stm32/qspi.c
index 282759967..ec744bfb2 100644
--- a/ports/stm32/qspi.c
+++ b/ports/stm32/qspi.c
@@ -139,6 +139,16 @@ STATIC int qspi_ioctl(void *self_in, uint32_t cmd) {
case MP_QSPI_IOCTL_INIT:
qspi_init();
break;
+ case MP_QSPI_IOCTL_BUS_ACQUIRE:
+ // Disable memory-mapped region during bus access
+ qspi_mpu_disable_all();
+ // Abort any ongoing transfer if peripheral is busy
+ if (QUADSPI->SR & QUADSPI_SR_BUSY) {
+ QUADSPI->CR |= QUADSPI_CR_ABORT;
+ while (QUADSPI->CR & QUADSPI_CR_ABORT) {
+ }
+ }
+ break;
case MP_QSPI_IOCTL_BUS_RELEASE:
// Switch to memory-map mode when bus is idle
qspi_memory_map();