{
        struct dw_spi *dws = arg;
  
-       if (test_and_clear_bit(TX_BUSY, &dws->dma_chan_busy) & BIT(RX_BUSY))
+       clear_bit(TX_BUSY, &dws->dma_chan_busy);
+       if (test_bit(RX_BUSY, &dws->dma_chan_busy))
                return;
 -      dw_spi_xfer_done(dws);
 +      spi_finalize_current_transfer(dws->master);
  }
  
  static struct dma_async_tx_descriptor *dw_spi_dma_prepare_tx(struct dw_spi *dws)
  {
        struct dw_spi *dws = arg;
  
-       if (test_and_clear_bit(RX_BUSY, &dws->dma_chan_busy) & BIT(TX_BUSY))
+       clear_bit(RX_BUSY, &dws->dma_chan_busy);
+       if (test_bit(TX_BUSY, &dws->dma_chan_busy))
                return;
 -      dw_spi_xfer_done(dws);
 +      spi_finalize_current_transfer(dws->master);
  }
  
  static struct dma_async_tx_descriptor *dw_spi_dma_prepare_rx(struct dw_spi *dws)