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, &regs->mcr,
 		     QSPI_MCR_CLR_RXF_MASK | QSPI_MCR_CLR_TXF_MASK |