dmaengine: pxa_dma: use platform_get_irq_optional
authorDoug Brown <doug@schmorgal.com>
Tue, 6 Sep 2022 00:07:09 +0000 (17:07 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Nov 2022 08:58:19 +0000 (09:58 +0100)
[ Upstream commit b3d726cb8497c6b12106fd617d46eef11763ea86 ]

The first IRQ is required, but IRQs 1 through (nb_phy_chans - 1) are
optional, because on some platforms (e.g. PXA168) there is a single IRQ
shared between all channels.

This change inhibits a flood of "IRQ index # not found" messages at
startup. Tested on a PXA168-based device.

Fixes: 7723f4c5ecdb ("driver core: platform: Add an error message to platform_get_irq*()")
Signed-off-by: Doug Brown <doug@schmorgal.com>
Link: https://lore.kernel.org/r/20220906000709.52705-1-doug@schmorgal.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/dma/pxa_dma.c

index aa6e552..e613ace 100644 (file)
@@ -1248,14 +1248,14 @@ static int pxad_init_phys(struct platform_device *op,
                return -ENOMEM;
 
        for (i = 0; i < nb_phy_chans; i++)
-               if (platform_get_irq(op, i) > 0)
+               if (platform_get_irq_optional(op, i) > 0)
                        nr_irq++;
 
        for (i = 0; i < nb_phy_chans; i++) {
                phy = &pdev->phys[i];
                phy->base = pdev->base;
                phy->idx = i;
-               irq = platform_get_irq(op, i);
+               irq = platform_get_irq_optional(op, i);
                if ((nr_irq > 1) && (irq > 0))
                        ret = devm_request_irq(&op->dev, irq,
                                               pxad_chan_handler,