/* Turn off SPI unit prior changing mode */
        mpc8xxx_spi_write_reg(mode, cs->hw_mode & ~SPMODE_ENABLE);
-       mpc8xxx_spi_write_reg(mode, cs->hw_mode);
 
        /* When in CPM mode, we need to reinit tx and rx. */
        if (mspi->flags & SPI_CPM_MODE) {
                        }
                }
        }
-
+       mpc8xxx_spi_write_reg(mode, cs->hw_mode);
        local_irq_restore(flags);
 }
 
                        dev_err(dev, "unable to map tx dma\n");
                        return -ENOMEM;
                }
-       } else {
+       } else if (t->tx_buf) {
                mspi->tx_dma = t->tx_dma;
        }
 
                        dev_err(dev, "unable to map rx dma\n");
                        goto err_rx_dma;
                }
-       } else {
+       } else if (t->rx_buf) {
                mspi->rx_dma = t->rx_dma;
        }