* @fifo_size: size of the embedded fifo in bytes
  * @cur_midi: master inter-data idleness in ns
  * @cur_speed: speed configured in Hz
+ * @cur_half_period: time of a half bit in us
  * @cur_bpw: number of bits in a single SPI data frame
  * @cur_fthlv: fifo threshold level (data frames in a single data packet)
  * @cur_comm: SPI communication mode
 
        unsigned int cur_midi;
        unsigned int cur_speed;
+       unsigned int cur_half_period;
        unsigned int cur_bpw;
        unsigned int cur_fthlv;
        unsigned int cur_comm;
 
        spi->cur_speed = spi->clk_rate / (1 << mbrdiv);
 
+       spi->cur_half_period = DIV_ROUND_CLOSEST(USEC_PER_SEC, 2 * spi->cur_speed);
+
        return mbrdiv - 1;
 }
 
                return;
        }
 
+       /* Add a delay to make sure that transmission is ended. */
+       if (spi->cur_half_period)
+               udelay(spi->cur_half_period);
+
        if (spi->cur_usedma && spi->dma_tx)
                dmaengine_terminate_async(spi->dma_tx);
        if (spi->cur_usedma && spi->dma_rx)