sh: Fixup TEI IRQ requests in request_dma().
authorPaul Mundt <lethal@linux-sh.org>
Wed, 27 Sep 2006 07:55:24 +0000 (16:55 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 27 Sep 2006 07:55:24 +0000 (16:55 +0900)
If a channel is not TEI capable, don't try to request_irq()..

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/drivers/dma/dma-sh.c

index 4428ee809651521a09c9fbd3d610855a4ab8f3c5..40a480d20aaf1c9f0cb8bdb226d4ed96c6436dd0 100644 (file)
@@ -82,6 +82,9 @@ static int sh_dmac_request_dma(struct dma_channel *chan)
 {
        char name[32];
 
+       if (unlikely(!chan->flags & DMA_TEI_CAPABLE))
+               return 0;
+
        snprintf(name, sizeof(name), "DMAC Transfer End (Channel %d)",
                 chan->chan);
 
@@ -255,7 +258,7 @@ static int __init sh_dmac_init(void)
 #ifdef CONFIG_CPU_SH4
        make_ipr_irq(DMAE_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
        i = request_irq(DMAE_IRQ, dma_err, IRQF_DISABLED, "DMAC Address Error", 0);
-       if (i < 0)
+       if (unlikely(i < 0))
                return i;
 #endif
 
@@ -270,7 +273,7 @@ static int __init sh_dmac_init(void)
         * been set.
         */
        i = dmaor_reset();
-       if (i < 0)
+       if (unlikely(i != 0))
                return i;
 
        return register_dmac(info);