DMAENGINE: ste_dma40: don't pause/resume non-executing channels
Jonas Aaberg [Mon, 9 Aug 2010 12:09:12 +0000 (12:09 +0000)]
There is no point in pausing what isn't running.

Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>

drivers/dma/ste_dma40.c

index c9f485e..05d0a99 100644 (file)
@@ -768,6 +768,9 @@ static int d40_pause(struct dma_chan *chan)
        int res = 0;
        unsigned long flags;
 
+       if (!d40c->busy)
+               return 0;
+
        spin_lock_irqsave(&d40c->lock, flags);
 
        res = d40_channel_execute_command(d40c, D40_DMA_SUSPEND_REQ);
@@ -792,6 +795,9 @@ static int d40_resume(struct dma_chan *chan)
        int res = 0;
        unsigned long flags;
 
+       if (!d40c->busy)
+               return 0;
+
        spin_lock_irqsave(&d40c->lock, flags);
 
        if (d40c->base->rev == 0)