@@ -1580,19 +1580,19 @@ static int spi_imx_dma_transfer(struct spi_imx_data *spi_imx,
15801580
15811581 spi_imx -> devtype_data -> trigger (spi_imx );
15821582
1583- if (wait_for_completion_interruptible (& spi_imx -> dma_tx_completion ) ||
1583+ if (wait_for_completion_interruptible (& spi_imx -> dma_rx_completion ) ||
15841584 spi_imx -> target_aborted ) {
15851585 dev_dbg (spi_imx -> dev ,
1586- "I/O Error in DMA TX interrupted\n" );
1586+ "I/O Error in DMA RX interrupted\n" );
15871587 dmaengine_terminate_all (controller -> dma_tx );
15881588 dmaengine_terminate_all (controller -> dma_rx );
15891589 return - EINTR ;
15901590 }
15911591
1592- if (wait_for_completion_interruptible (& spi_imx -> dma_rx_completion ) ||
1592+ if (wait_for_completion_interruptible (& spi_imx -> dma_tx_completion ) ||
15931593 spi_imx -> target_aborted ) {
15941594 dev_dbg (spi_imx -> dev ,
1595- "I/O Error in DMA RX interrupted\n" );
1595+ "I/O Error in DMA TX interrupted\n" );
15961596 dmaengine_terminate_all (controller -> dma_tx );
15971597 dmaengine_terminate_all (controller -> dma_rx );
15981598 return - EINTR ;
@@ -1834,7 +1834,26 @@ static int spi_imx_target_abort(struct spi_controller *controller)
18341834 struct spi_imx_data * spi_imx = spi_controller_get_devdata (controller );
18351835
18361836 spi_imx -> target_aborted = true;
1837- complete (& spi_imx -> xfer_done );
1837+
1838+ if (spi_imx -> target_mode && spi_imx -> usedma ) {
1839+ if (!completion_done (& spi_imx -> dma_rx_completion ))
1840+ complete (& spi_imx -> dma_rx_completion );
1841+
1842+ if (controller -> dma_rx ) {
1843+ dmaengine_terminate_all (controller -> dma_rx );
1844+ dmaengine_synchronize (controller -> dma_rx );
1845+ }
1846+
1847+ if (!completion_done (& spi_imx -> dma_tx_completion ))
1848+ complete (& spi_imx -> dma_tx_completion );
1849+
1850+ if (controller -> dma_tx ) {
1851+ dmaengine_terminate_all (controller -> dma_tx );
1852+ dmaengine_synchronize (controller -> dma_tx );
1853+ }
1854+ } else {
1855+ complete (& spi_imx -> xfer_done );
1856+ }
18381857
18391858 return 0 ;
18401859}
0 commit comments