|
@@ -150,7 +150,7 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
|
|
|
&dws->tx_sgl,
|
|
|
1,
|
|
|
DMA_MEM_TO_DEV,
|
|
|
- DMA_PREP_INTERRUPT);
|
|
|
+ DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
|
|
txdesc->callback = dw_spi_dma_done;
|
|
|
txdesc->callback_param = dws;
|
|
|
|
|
@@ -172,13 +172,17 @@ static int mid_spi_dma_transfer(struct dw_spi *dws, int cs_change)
|
|
|
&dws->rx_sgl,
|
|
|
1,
|
|
|
DMA_DEV_TO_MEM,
|
|
|
- DMA_PREP_INTERRUPT);
|
|
|
+ DMA_PREP_INTERRUPT | DMA_CTRL_ACK);
|
|
|
rxdesc->callback = dw_spi_dma_done;
|
|
|
rxdesc->callback_param = dws;
|
|
|
|
|
|
/* rx must be started before tx due to spi instinct */
|
|
|
dmaengine_submit(rxdesc);
|
|
|
+ dma_async_issue_pending(dws->rxchan);
|
|
|
+
|
|
|
dmaengine_submit(txdesc);
|
|
|
+ dma_async_issue_pending(dws->txchan);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|