diff --git a/drivers/st/spi/stm32_qspi.c b/drivers/st/spi/stm32_qspi.c index d3c26d94d..28e071907 100644 --- a/drivers/st/spi/stm32_qspi.c +++ b/drivers/st/spi/stm32_qspi.c @@ -1,13 +1,10 @@ /* - * Copyright (c) 2019-2021, STMicroelectronics - All Rights Reserved + * Copyright (c) 2019-2022, STMicroelectronics - All Rights Reserved * * SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */ #include -#include - -#include #include #include @@ -19,6 +16,9 @@ #include #include #include +#include + +#include /* Timeout for device interface reset */ #define TIMEOUT_US_1_MS 1000U @@ -139,10 +139,6 @@ static int stm32_qspi_wait_cmd(const struct spi_mem_op *op) int ret = 0; uint64_t timeout; - if (op->data.nbytes == 0U) { - return stm32_qspi_wait_for_not_busy(); - } - timeout = timeout_init_us(QSPI_CMD_TIMEOUT_US); while ((mmio_read_32(qspi_base() + QSPI_SR) & QSPI_SR_TCF) == 0U) { if (timeout_elapsed(timeout)) { @@ -163,6 +159,10 @@ static int stm32_qspi_wait_cmd(const struct spi_mem_op *op) /* Clear flags */ mmio_write_32(qspi_base() + QSPI_FCR, QSPI_FCR_CTCF | QSPI_FCR_CTEF); + if (ret == 0) { + ret = stm32_qspi_wait_for_not_busy(); + } + return ret; }