void serial8250_rx_dma_flush(struct uart_8250_port *p) { struct uart_8250_dma *dma = p->dma; if (dma->rx_running) { dmaengine_pause(dma->rxchan); __dma_rx_complete(p); dmaengine_terminate_async(dma->rxchan); } }
static void bcm2835_spi_dma_done(void *data) { struct spi_master *master = data; struct bcm2835_spi *bs = spi_master_get_devdata(master); /* reset fifo and HW */ bcm2835_spi_reset_hw(master); /* and terminate tx-dma as we do not have an irq for it * because when the rx dma will terminate and this callback * is called the tx-dma must have finished - can't get to this * situation otherwise... */ if (cmpxchg(&bs->dma_pending, true, false)) { dmaengine_terminate_async(master->dma_tx); bcm2835_spi_undo_prologue(bs); } /* and mark as completed */; complete(&master->xfer_completion); }
static void stm32_spdifrx_dma_ctrl_stop(struct stm32_spdifrx_data *spdifrx) { dmaengine_terminate_async(spdifrx->ctrl_chan); }