From: Tony Lindgren Date: Tue, 7 Apr 2009 18:05:35 +0000 (-0700) Subject: Merge branch 'omap-fixes' X-Git-Url: http://pilppa.org/gitweb/?a=commitdiff_plain;h=a01c39f66dd61c735219c35e107a809b98834570;hp=e75343a207ef24490176abe3503743d7a006e299;p=linux-2.6-omap-h63xx.git Merge branch 'omap-fixes' --- diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 3fd0e77bb9f..609301860c5 100755 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -760,19 +760,12 @@ void omap_free_dma(int lch) { unsigned long flags; - spin_lock_irqsave(&dma_chan_lock, flags); if (dma_chan[lch].dev_id == -1) { pr_err("omap_dma: trying to free unallocated DMA channel %d\n", lch); - spin_unlock_irqrestore(&dma_chan_lock, flags); return; } - dma_chan[lch].dev_id = -1; - dma_chan[lch].next_lch = -1; - dma_chan[lch].callback = NULL; - spin_unlock_irqrestore(&dma_chan_lock, flags); - if (cpu_class_is_omap1()) { /* Disable all DMA interrupts for the channel. */ dma_write(0, CICR(lch)); @@ -798,6 +791,12 @@ void omap_free_dma(int lch) dma_write(0, CCR(lch)); omap_clear_dma(lch); } + + spin_lock_irqsave(&dma_chan_lock, flags); + dma_chan[lch].dev_id = -1; + dma_chan[lch].next_lch = -1; + dma_chan[lch].callback = NULL; + spin_unlock_irqrestore(&dma_chan_lock, flags); } EXPORT_SYMBOL(omap_free_dma);