diff mbox series

[RESEND] dmaengine: mmp_tdma: share the IRQ line

Message ID 20200601192252.172773-1-lkundrak@v3.sk (mailing list archive)
State Accepted
Headers show
Series [RESEND] dmaengine: mmp_tdma: share the IRQ line | expand

Commit Message

Lubomir Rintel June 1, 2020, 7:22 p.m. UTC
On a MMP2, the DMA interrupt is shared by all channels of the peripheral
DMA controller and the audio DMA controller. Both drivers can identify
their interrupts, but only the PDMA driver marks the line shared:

  [    1.185782] mmp-pdma d4000000.dma: initialized 16 channels
  [    1.186808] mmp-tdma d42a0800.adma: IRQ index 1 not found
  [    1.194317] genirq: Flags mismatch irq 64. 00000000 (tdma) vs. 00000080 (pdma)
  [    1.197894] mmp-tdma: probe of d42a0800.adma failed with error -16

Let's turn on IRQF_SHARED in the ADMA driver as well.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
---
 drivers/dma/mmp_tdma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Vinod Koul June 16, 2020, 4:28 p.m. UTC | #1
On 01-06-20, 21:22, Lubomir Rintel wrote:
> On a MMP2, the DMA interrupt is shared by all channels of the peripheral
> DMA controller and the audio DMA controller. Both drivers can identify
> their interrupts, but only the PDMA driver marks the line shared:
> 
>   [    1.185782] mmp-pdma d4000000.dma: initialized 16 channels
>   [    1.186808] mmp-tdma d42a0800.adma: IRQ index 1 not found
>   [    1.194317] genirq: Flags mismatch irq 64. 00000000 (tdma) vs. 00000080 (pdma)
>   [    1.197894] mmp-tdma: probe of d42a0800.adma failed with error -16
> 
> Let's turn on IRQF_SHARED in the ADMA driver as well.

Applied, thanks
diff mbox series

Patch

diff --git a/drivers/dma/mmp_tdma.c b/drivers/dma/mmp_tdma.c
index 38f2298879881..e7eb3e83b00ed 100644
--- a/drivers/dma/mmp_tdma.c
+++ b/drivers/dma/mmp_tdma.c
@@ -696,7 +696,7 @@  static int mmp_tdma_probe(struct platform_device *pdev)
 	if (irq_num != chan_num) {
 		irq = platform_get_irq(pdev, 0);
 		ret = devm_request_irq(&pdev->dev, irq,
-			mmp_tdma_int_handler, 0, "tdma", tdev);
+			mmp_tdma_int_handler, IRQF_SHARED, "tdma", tdev);
 		if (ret)
 			return ret;
 	}