aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dma/at_hdmac.c16
1 files changed, 0 insertions, 16 deletions
diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
index 2c6bc3aa3dd0..3134003eec8b 100644
--- a/drivers/dma/at_hdmac.c
+++ b/drivers/dma/at_hdmac.c
@@ -933,25 +933,9 @@ static int atc_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
933 dev_vdbg(chan2dev(chan), "atc_control (%d)\n", cmd); 933 dev_vdbg(chan2dev(chan), "atc_control (%d)\n", cmd);
934 934
935 if (cmd == DMA_PAUSE) { 935 if (cmd == DMA_PAUSE) {
936 int pause_timeout = 1000;
937
938 spin_lock_bh(&atchan->lock); 936 spin_lock_bh(&atchan->lock);
939 937
940 dma_writel(atdma, CHER, AT_DMA_SUSP(chan_id)); 938 dma_writel(atdma, CHER, AT_DMA_SUSP(chan_id));
941
942 /* wait for FIFO to be empty */
943 while (!(dma_readl(atdma, CHSR) & AT_DMA_EMPT(chan_id))) {
944 if (pause_timeout-- > 0) {
945 /* the FIFO can only drain if the peripheral
946 * is still requesting data:
947 * -> timeout if it is not the case. */
948 dma_writel(atdma, CHDR, AT_DMA_RES(chan_id));
949 spin_unlock_bh(&atchan->lock);
950 return -ETIMEDOUT;
951 }
952 cpu_relax();
953 }
954
955 set_bit(ATC_IS_PAUSED, &atchan->status); 939 set_bit(ATC_IS_PAUSED, &atchan->status);
956 940
957 spin_unlock_bh(&atchan->lock); 941 spin_unlock_bh(&atchan->lock);