]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: ethernet: mtk_eth_soc: skip first IRQ if not used
authorFrank Wunderlich <frank-w@public-files.de>
Thu, 19 Jun 2025 13:21:23 +0000 (15:21 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 Jun 2025 01:14:00 +0000 (18:14 -0700)
On SoCs with dedicated RX and TX interrupts (all except MT7621 and
MT7628) platform_get_irq() is called for the first IRQ (eth->irq[0])
but it is never used.
Skip the first IRQ and reduce the IRQ-count to 2.

Signed-off-by: Frank Wunderlich <frank-w@public-files.de>
Reviewed-by: Daniel Golle <daniel@makrotopia.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250619132125.78368-4-linux@fw-web.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mediatek/mtk_eth_soc.c
drivers/net/ethernet/mediatek/mtk_eth_soc.h

index efffdd7e131ecafcb7512e7382a5a6f153eb9948..67ba8927be4689c78055a45f1592fcc8e7c883ba 100644 (file)
@@ -3353,10 +3353,14 @@ static int mtk_get_irqs(struct platform_device *pdev, struct mtk_eth *eth)
         * the second is for TX, and the third is for RX.
         */
        for (i = 0; i < MTK_FE_IRQ_NUM; i++) {
-               if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0)
-                       eth->irq[i] = eth->irq[MTK_FE_IRQ_SHARED];
-               else
-                       eth->irq[i] = platform_get_irq(pdev, i);
+               if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) {
+                       if (i == MTK_FE_IRQ_SHARED)
+                               eth->irq[MTK_FE_IRQ_SHARED] = platform_get_irq(pdev, i);
+                       else
+                               eth->irq[i] = eth->irq[MTK_FE_IRQ_SHARED];
+               } else {
+                       eth->irq[i] = platform_get_irq(pdev, i + 1);
+               }
 
                if (eth->irq[i] < 0) {
                        dev_err(&pdev->dev, "no IRQ%d resource found\n", i);
index 8cdf1317dff557a793d2eb6cdc4ea39b532ff106..9261c0e13b592a5feaddb2fd9f40e9df53d9d748 100644 (file)
 #define MTK_MAC_FSM(x)         (0x1010C + ((x) * 0x100))
 
 #define MTK_FE_IRQ_SHARED      0
-#define MTK_FE_IRQ_TX          1
-#define MTK_FE_IRQ_RX          2
+#define MTK_FE_IRQ_TX          0
+#define MTK_FE_IRQ_RX          1
 #define MTK_FE_IRQ_NUM         (MTK_FE_IRQ_RX + 1)
 
 struct mtk_rx_dma {