diff --git a/arch/blackfin/include/asm/dma.h b/arch/blackfin/include/asm/dma.h
index 6509733..9befcba 100644
--- a/arch/blackfin/include/asm/dma.h
+++ b/arch/blackfin/include/asm/dma.h
@@ -140,6 +140,7 @@
 	struct dma_register *regs;
 	struct dmasg *sg;		/* large mode descriptor */
 	unsigned int ctrl_num;	/* controller number */
+	unsigned int irq;
 	dma_interrupt_t irq_callback;
 	void *data;
 	unsigned int dma_enable_flag;
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index ca3a26a..add58d2 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -139,19 +139,16 @@
 
 int set_dma_callback(unsigned int channel, dma_interrupt_t callback, void *data)
 {
-	int ret_irq = 0;
-
 	BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
 	       && channel < MAX_BLACKFIN_DMA_CHANNEL));
 
 	if (callback != NULL) {
 		int ret_val;
-		ret_irq = channel2irq(channel);
-
+		dma_ch[channel].irq = channel2irq(channel);
 		dma_ch[channel].data = data;
 
 		ret_val =
-		    request_irq(ret_irq, (void *)callback, IRQF_DISABLED,
+		    request_irq(dma_ch[channel].irq, callback, IRQF_DISABLED,
 				dma_ch[channel].device_id, data);
 		if (ret_val) {
 			printk(KERN_NOTICE
@@ -166,7 +163,6 @@
 
 void free_dma(unsigned int channel)
 {
-	int ret_irq;
 
 	pr_debug("freedma() : BEGIN \n");
 	BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
@@ -176,10 +172,8 @@
 	disable_dma(channel);
 	clear_dma_buffer(channel);
 
-	if (dma_ch[channel].irq_callback != NULL) {
-		ret_irq = channel2irq(channel);
-		free_irq(ret_irq, dma_ch[channel].data);
-	}
+	if (dma_ch[channel].irq_callback != NULL)
+		free_irq(dma_ch[channel].irq, dma_ch[channel].data);
 
 	/* Clear the DMA Variable in the Channel */
 	mutex_lock(&(dma_ch[channel].dmalock));
@@ -192,27 +186,21 @@
 
 void dma_enable_irq(unsigned int channel)
 {
-	int ret_irq;
-
 	pr_debug("dma_enable_irq() : BEGIN \n");
 	BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
 	       && channel < MAX_BLACKFIN_DMA_CHANNEL));
 
-	ret_irq = channel2irq(channel);
-	enable_irq(ret_irq);
+	enable_irq(dma_ch[channel].irq);
 }
 EXPORT_SYMBOL(dma_enable_irq);
 
 void dma_disable_irq(unsigned int channel)
 {
-	int ret_irq;
-
 	pr_debug("dma_disable_irq() : BEGIN \n");
 	BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
 	       && channel < MAX_BLACKFIN_DMA_CHANNEL));
 
-	ret_irq = channel2irq(channel);
-	disable_irq(ret_irq);
+	disable_irq(dma_ch[channel].irq);
 }
 EXPORT_SYMBOL(dma_disable_irq);
 
