|
@@ -760,19 +760,12 @@ void omap_free_dma(int lch)
|
|
{
|
|
{
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
|
|
- spin_lock_irqsave(&dma_chan_lock, flags);
|
|
|
|
if (dma_chan[lch].dev_id == -1) {
|
|
if (dma_chan[lch].dev_id == -1) {
|
|
pr_err("omap_dma: trying to free unallocated DMA channel %d\n",
|
|
pr_err("omap_dma: trying to free unallocated DMA channel %d\n",
|
|
lch);
|
|
lch);
|
|
- spin_unlock_irqrestore(&dma_chan_lock, flags);
|
|
|
|
return;
|
|
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()) {
|
|
if (cpu_class_is_omap1()) {
|
|
/* Disable all DMA interrupts for the channel. */
|
|
/* Disable all DMA interrupts for the channel. */
|
|
dma_write(0, CICR(lch));
|
|
dma_write(0, CICR(lch));
|
|
@@ -798,6 +791,12 @@ void omap_free_dma(int lch)
|
|
dma_write(0, CCR(lch));
|
|
dma_write(0, CCR(lch));
|
|
omap_clear_dma(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);
|
|
EXPORT_SYMBOL(omap_free_dma);
|
|
|
|
|