]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'omap-fixes'
authorTony Lindgren <tony@atomide.com>
Tue, 7 Apr 2009 18:05:35 +0000 (11:05 -0700)
committerTony Lindgren <tony@atomide.com>
Tue, 7 Apr 2009 18:05:35 +0000 (11:05 -0700)
arch/arm/plat-omap/dma.c

index 3fd0e77bb9f8409d2ab9cfc701e9abd1d8d8ee5c..609301860c50c6544d9cf795b4e069dbb785e428 100755 (executable)
@@ -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);