Pārlūkot izejas kodu

sh: Fixup TEI IRQ requests in request_dma().

If a channel is not TEI capable, don't try to request_irq()..

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt 18 gadi atpakaļ
vecāks
revīzija
9e3043c091
1 mainītis faili ar 5 papildinājumiem un 2 dzēšanām
  1. 5 2
      arch/sh/drivers/dma/dma-sh.c

+ 5 - 2
arch/sh/drivers/dma/dma-sh.c

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