diff options
| author | Jonas Aaberg <jonas.aberg@stericsson.com> | 2010-08-09 08:09:12 -0400 |
|---|---|---|
| committer | Dan Williams <dan.j.williams@intel.com> | 2010-09-22 17:53:47 -0400 |
| commit | 3ac012af3b1b3a6b373f3a9f19c5362974856c2c (patch) | |
| tree | 6f71960819e88c98a4d61a0f52ad3dc9d9957385 | |
| parent | 8f6fd7f50f7059e5725a36885af52e54b9df96b2 (diff) | |
DMAENGINE: ste_dma40: don't pause/resume non-executing channels
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>
| -rw-r--r-- | drivers/dma/ste_dma40.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c index c9f485e3baeb..05d0a9937617 100644 --- a/drivers/dma/ste_dma40.c +++ b/drivers/dma/ste_dma40.c | |||
| @@ -768,6 +768,9 @@ static int d40_pause(struct dma_chan *chan) | |||
| 768 | int res = 0; | 768 | int res = 0; |
| 769 | unsigned long flags; | 769 | unsigned long flags; |
| 770 | 770 | ||
| 771 | if (!d40c->busy) | ||
| 772 | return 0; | ||
| 773 | |||
| 771 | spin_lock_irqsave(&d40c->lock, flags); | 774 | spin_lock_irqsave(&d40c->lock, flags); |
| 772 | 775 | ||
| 773 | res = d40_channel_execute_command(d40c, D40_DMA_SUSPEND_REQ); | 776 | res = d40_channel_execute_command(d40c, D40_DMA_SUSPEND_REQ); |
| @@ -792,6 +795,9 @@ static int d40_resume(struct dma_chan *chan) | |||
| 792 | int res = 0; | 795 | int res = 0; |
| 793 | unsigned long flags; | 796 | unsigned long flags; |
| 794 | 797 | ||
| 798 | if (!d40c->busy) | ||
| 799 | return 0; | ||
| 800 | |||
| 795 | spin_lock_irqsave(&d40c->lock, flags); | 801 | spin_lock_irqsave(&d40c->lock, flags); |
| 796 | 802 | ||
| 797 | if (d40c->base->rev == 0) | 803 | if (d40c->base->rev == 0) |
