diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c index 69e9fbf4a78d20dfea3478b36161e56929a04572..2e63215c7e2afe20c849973fd77502bb8c2dc5e7 100644 --- a/drivers/spi/fsl_qspi.c +++ b/drivers/spi/fsl_qspi.c @@ -684,6 +684,12 @@ static void qspi_op_write(struct fsl_qspi_priv *priv, u8 *txbuf, u32 len) seqid = SEQID_BRWR; else if (priv->cur_cmd == QSPI_CMD_WREAR) seqid = SEQID_WREAR; + + do { + qspi_start_transaction(priv, SEQID_WREN, 0); + status_reg = wait_for_idle(priv); + /* Try until write is enabled */ + } while (!(status_reg & FLASH_STATUS_WEL)); #else if (priv->cur_cmd == QSPI_CMD_SST_AAI_WP) { seqid = priv->aai_mode ? SEQID_SST_AAI_WP_CONT : SEQID_SST_AAI_WP; @@ -691,7 +697,6 @@ static void qspi_op_write(struct fsl_qspi_priv *priv, u8 *txbuf, u32 len) } else if (priv->cur_cmd == QSPI_CMD_WRITE_STATUS) { seqid = SEQID_WRITE_STATUS; } -#endif if ((seqid != SEQID_SST_AAI_WP_CONT)) { do { @@ -700,6 +705,7 @@ static void qspi_op_write(struct fsl_qspi_priv *priv, u8 *txbuf, u32 len) /* Try until write is enabled */ } while (!(status_reg & FLASH_STATUS_WEL)); } +#endif qspi_write32(priv->flags, ®s->mcr, QSPI_MCR_CLR_RXF_MASK | QSPI_MCR_CLR_TXF_MASK |