diff options
Diffstat (limited to 'drivers/dma/at_hdmac.c')
| -rw-r--r-- | drivers/dma/at_hdmac.c | 29 | 
1 files changed, 2 insertions, 27 deletions
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c index c787f38a186..c13a3bb0f59 100644 --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c @@ -344,31 +344,7 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc)  	/* move myself to free_list */  	list_move(&desc->desc_node, &atchan->free_list); -	/* unmap dma addresses (not on slave channels) */ -	if (!atchan->chan_common.private) { -		struct device *parent = chan2parent(&atchan->chan_common); -		if (!(txd->flags & DMA_COMPL_SKIP_DEST_UNMAP)) { -			if (txd->flags & DMA_COMPL_DEST_UNMAP_SINGLE) -				dma_unmap_single(parent, -						desc->lli.daddr, -						desc->len, DMA_FROM_DEVICE); -			else -				dma_unmap_page(parent, -						desc->lli.daddr, -						desc->len, DMA_FROM_DEVICE); -		} -		if (!(txd->flags & DMA_COMPL_SKIP_SRC_UNMAP)) { -			if (txd->flags & DMA_COMPL_SRC_UNMAP_SINGLE) -				dma_unmap_single(parent, -						desc->lli.saddr, -						desc->len, DMA_TO_DEVICE); -			else -				dma_unmap_page(parent, -						desc->lli.saddr, -						desc->len, DMA_TO_DEVICE); -		} -	} - +	dma_descriptor_unmap(txd);  	/* for cyclic transfers,  	 * no need to replay callback function while stopping */  	if (!atc_chan_is_cyclic(atchan)) { @@ -1102,7 +1078,7 @@ atc_tx_status(struct dma_chan *chan,  	int bytes = 0;  	ret = dma_cookie_status(chan, cookie, txstate); -	if (ret == DMA_SUCCESS) +	if (ret == DMA_COMPLETE)  		return ret;  	/*  	 * There's no point calculating the residue if there's @@ -1593,7 +1569,6 @@ static int at_dma_remove(struct platform_device *pdev)  		/* Disable interrupts */  		atc_disable_chan_irq(atdma, chan->chan_id); -		tasklet_disable(&atchan->tasklet);  		tasklet_kill(&atchan->tasklet);  		list_del(&chan->device_node);  | 
