static void davinci_reinit_chan(struct mmc_davinci_host *host) { davinci_stop_dma(host->dma_tx_event); davinci_clean_channel(host->dma_tx_event); davinci_stop_dma(host->dma_rx_event); davinci_clean_channel(host->dma_rx_event); }
static void davinci_abort_dma(struct mmc_davinci_host *host) { int sync_dev = 0; if (host->data_dir == DAVINCI_MMC_DATADIR_READ) sync_dev = host->dma_tx_event; else sync_dev = host->dma_rx_event; davinci_stop_dma(sync_dev); davinci_clean_channel(sync_dev); }
static void davinci_spi_dma_tx_callback(int lch, u16 ch_status, void *data) { struct spi_device *spi = (struct spi_device *)data; struct davinci_spi *davinci_spi; struct davinci_spi_dma *davinci_spi_dma; davinci_spi = spi_master_get_devdata(spi->master); davinci_spi_dma = &(davinci_spi->dma_channels[spi->chip_select]); if (ch_status == DMA_COMPLETE) davinci_stop_dma(davinci_spi_dma->dma_tx_channel); else davinci_clean_channel(davinci_spi_dma->dma_tx_channel); complete(&davinci_spi_dma->dma_tx_completion); /* We must disable the DMA TX request */ davinci_spi_set_dma_req(spi, 0); }