diff options
author | Jassi Brar <jassi.brar@samsung.com> | 2009-11-04 23:44:39 -0500 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2009-11-09 18:51:19 -0500 |
commit | 336b1a3181d81db85c0af3d0c18fe0a04b4d5126 (patch) | |
tree | 2483475f8c9bacec45fc79ff168e4443486c3dc7 /arch/arm/plat-s3c64xx | |
parent | 9b08284bf22f438baa2d6b68015ff17ddb431a61 (diff) |
ARM: S3C64XX: DMA: Free node for non-circular queues
We need to free the buff and lli nodes if the buffer queue is
not CIRCULAR.
Signed-off-by: Jassi Brar <jassi.brar@samsung.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'arch/arm/plat-s3c64xx')
-rw-r--r-- | arch/arm/plat-s3c64xx/dma.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/arm/plat-s3c64xx/dma.c b/arch/arm/plat-s3c64xx/dma.c index 7d12eb8fa58d..d554b936fcfb 100644 --- a/arch/arm/plat-s3c64xx/dma.c +++ b/arch/arm/plat-s3c64xx/dma.c | |||
@@ -610,6 +610,12 @@ static irqreturn_t s3c64xx_dma_irq(int irq, void *pw) | |||
610 | 610 | ||
611 | s3c64xx_dma_bufffdone(chan, buff, res); | 611 | s3c64xx_dma_bufffdone(chan, buff, res); |
612 | 612 | ||
613 | /* Free the node and update curr, if non-circular queue */ | ||
614 | if (!(chan->flags & S3C2410_DMAF_CIRCULAR)) { | ||
615 | chan->curr = buff->next; | ||
616 | s3c64xx_dma_freebuff(buff); | ||
617 | } | ||
618 | |||
613 | /* Update 'next' */ | 619 | /* Update 'next' */ |
614 | buff = chan->next; | 620 | buff = chan->next; |
615 | if (chan->next == chan->end) { | 621 | if (chan->next == chan->end) { |