diff options
author | Robert Richter <robert.richter@amd.com> | 2009-06-10 21:47:10 +0200 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2009-06-10 21:47:10 +0200 |
commit | 0886751c5d8b19fcee2e65d34ae21c9111e652a9 (patch) | |
tree | 015e8c2b3d44d46e9e8fccd016340c51bc876d3b /arch/arm/plat-omap/dma.c | |
parent | 7e4e0bd50e80df2fe5501f48f872448376cdd997 (diff) | |
parent | 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (diff) | |
download | linux-0886751c5d8b19fcee2e65d34ae21c9111e652a9.tar.gz linux-0886751c5d8b19fcee2e65d34ae21c9111e652a9.tar.bz2 linux-0886751c5d8b19fcee2e65d34ae21c9111e652a9.zip |
Merge commit 'v2.6.30' into oprofile/master
Diffstat (limited to 'arch/arm/plat-omap/dma.c')
-rw-r--r-- | arch/arm/plat-omap/dma.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 21cc0142b97a..7fc8c045ad5d 100644 --- 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); |