From: Mike Frysinger Date: Wed, 7 Jan 2009 15:14:39 +0000 (+0800) Subject: Blackfin arch: set_dma_callback: do not store .irq X-Git-Tag: v2.6.29-rc1~189^2~55 X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=8f1cc233881cd5335327ef84baa6ba1c83b379b4;p=linux-2.6-omap-h63xx.git Blackfin arch: set_dma_callback: do not store .irq set_dma_callback: do not store .irq if request_irq() failed so we dont turn around and attempt to free_irq() it later on in free_dma() Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu --- diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index bdebab41419..ed7d2859a62 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c @@ -157,18 +157,16 @@ int set_dma_callback(unsigned int channel, irq_handler_t callback, void *data) && channel < MAX_DMA_CHANNELS)); if (callback != NULL) { - int ret_val; - dma_ch[channel].irq = channel2irq(channel); - dma_ch[channel].data = data; + int ret; + unsigned int irq = channel2irq(channel); - ret_val = - request_irq(dma_ch[channel].irq, callback, IRQF_DISABLED, - dma_ch[channel].device_id, data); - if (ret_val) { - printk(KERN_NOTICE - "Request irq in DMA engine failed.\n"); - return -EPERM; - } + ret = request_irq(irq, callback, IRQF_DISABLED, + dma_ch[channel].device_id, data); + if (ret) + return ret; + + dma_ch[channel].irq = irq; + dma_ch[channel].data = data; } return 0; }