struct clk              *clk;
        struct platform_device  *pdev;
        u32                     pending;
+       u32                     mr;
        struct completion       cmd_completion;
 };
 
        icr = QSPI_ICR_INST(op->cmd.opcode);
        ifr = QSPI_IFR_INSTEN;
 
-       qspi_writel(aq, QSPI_MR, QSPI_MR_SMM);
+       /*
+        * If the QSPI controller is set in regular SPI mode, set it in
+        * Serial Memory Mode (SMM).
+        */
+       if (aq->mr != QSPI_MR_SMM) {
+               qspi_writel(aq, QSPI_MR, QSPI_MR_SMM);
+               aq->mr = QSPI_MR_SMM;
+       }
 
        mode = find_mode(op);
        if (mode < 0)
        /* Reset the QSPI controller */
        qspi_writel(aq, QSPI_CR, QSPI_CR_SWRST);
 
+       /* Set the QSPI controller by default in Serial Memory Mode */
+       qspi_writel(aq, QSPI_MR, QSPI_MR_SMM);
+       aq->mr = QSPI_MR_SMM;
+
        /* Enable the QSPI controller */
        qspi_writel(aq, QSPI_CR, QSPI_CR_QSPIEN);