From nobody Thu Oct 9 06:51:11 2025 Received: from mxout4.routing.net (mxout4.routing.net [134.0.28.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5817B24BBFC; Thu, 19 Jun 2025 13:21:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=134.0.28.9 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339304; cv=none; b=ehHOesrYsPGFOnQ1TcjXKT2KKZ/w0SgqPRV0Vnet2OEaYBs4pU0isaih6tt3l3I/GHgSdIXxggrr9lK8tJ0CGIK3d4Koeq1Jzalbv/9StFXygIYBFc2vXsJ4g40yy9eVi9k/VdrIg3IG47ZTJwPlyaWtbfUm+eFRv9xfU4JHOIQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339304; c=relaxed/simple; bh=BWG7vmJnWNo7yijQKcbCHKcWSJkqta2GdiPL/0mkoNo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cAjoZqzxwym5fksQodviD05DDW1SdmvqfpzzfIgc8ZE8QYs5vZp1ZrsHS3yxxtUmGQtsWFTNPuJuHgBbSERqOXEc8fdSgFxp6Mqul8X14O8/W3php+EmB+LBQGe6TFg5Lt16PAYZlsTSTxGGfONA/N/UrY600LiybLxLgZhrqc4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de; spf=pass smtp.mailfrom=fw-web.de; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b=U6InJxZ2; arc=none smtp.client-ip=134.0.28.9 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fw-web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b="U6InJxZ2" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout4.routing.net (Postfix) with ESMTP id A54E110094F; Thu, 19 Jun 2025 13:21:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750339294; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=yYV5OhX7IqnBNWpRHDSoVk4uEaTxigiqwKGaEqQ6CRo=; b=U6InJxZ22XRbyJmdpYQxg+bC6FC/Ixlv5drcdcPUZdcu36lpi8OwNmD6W5QzxhHLAQEXMp 1HnwG1Hsbr3zXSmrZZFHmbxsZ2I9LvOtL8TZJW7U7MdfWAb27nuvp9Gy5jj3ReybRhp6jj 9zcaTcRaGHj23oDu1K0BklkUrTxHsdE= Received: from frank-u24.. (fttx-pool-80.245.76.73.bambit.de [80.245.76.73]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id 65D05122703; Thu, 19 Jun 2025 13:21:34 +0000 (UTC) From: Frank Wunderlich To: Felix Fietkau , Sean Wang , Lorenzo Bianconi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno Cc: Frank Wunderlich , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Simon Horman , Daniel Golle , arinc.unal@arinc9.com Subject: [net-next v6 1/4] net: ethernet: mtk_eth_soc: support named IRQs Date: Thu, 19 Jun 2025 15:21:21 +0200 Message-ID: <20250619132125.78368-2-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250619132125.78368-1-linux@fw-web.de> References: <20250619132125.78368-1-linux@fw-web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Frank Wunderlich Add named interrupts and keep index based fallback for existing devicetrees. Currently only rx and tx IRQs are defined to be used with mt7988, but later extended with RSS/LRO support. Signed-off-by: Frank Wunderlich Reviewed-by: Simon Horman --- v6: - change irq names from tx/rx to fe1/fe2 because reserved irqs are usable and not bound to specific function - dropped Simons RB because of this v5: - fix typo in description - add comments from previous patch #3 with changes suggested by simon v2: - move irqs loading part into own helper function - reduce indentation - place mtk_get_irqs helper before the irq_handler (note for simon) net: mtk_eth_soc: change irq name back to fe1 + fe2 --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 46 ++++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.c index b38e4f2de674..c5deb8183afe 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3336,6 +3336,37 @@ static void mtk_tx_timeout(struct net_device *dev, u= nsigned int txqueue) schedule_work(ð->pending_work); } =20 +static int mtk_get_irqs(struct platform_device *pdev, struct mtk_eth *eth) +{ + int i; + + /* future SoCs beginning with MT7988 should use named IRQs in dts */ + eth->irq[1] =3D platform_get_irq_byname(pdev, "fe1"); + eth->irq[2] =3D platform_get_irq_byname(pdev, "fe2"); + if (eth->irq[1] >=3D 0 && eth->irq[2] >=3D 0) + return 0; + + /* legacy way: + * On MTK_SHARED_INT SoCs (MT7621 + MT7628) the first IRQ is taken + * from devicetree and used for both RX and TX - it is shared. + * On SoCs with non-shared IRQs the first entry is not used, + * the second is for TX, and the third is for RX. + */ + for (i =3D 0; i < 3; i++) { + if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) + eth->irq[i] =3D eth->irq[0]; + else + eth->irq[i] =3D platform_get_irq(pdev, i); + + if (eth->irq[i] < 0) { + dev_err(&pdev->dev, "no IRQ%d resource found\n", i); + return -ENXIO; + } + } + + return 0; +} + static irqreturn_t mtk_handle_irq_rx(int irq, void *_eth) { struct mtk_eth *eth =3D _eth; @@ -5105,17 +5136,10 @@ static int mtk_probe(struct platform_device *pdev) } } =20 - for (i =3D 0; i < 3; i++) { - if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) - eth->irq[i] =3D eth->irq[0]; - else - eth->irq[i] =3D platform_get_irq(pdev, i); - if (eth->irq[i] < 0) { - dev_err(&pdev->dev, "no IRQ%d resource found\n", i); - err =3D -ENXIO; - goto err_wed_exit; - } - } + err =3D mtk_get_irqs(pdev, eth); + if (err) + goto err_wed_exit; + for (i =3D 0; i < ARRAY_SIZE(eth->clks); i++) { eth->clks[i] =3D devm_clk_get(eth->dev, mtk_clks_source_name[i]); --=20 2.43.0 From nobody Thu Oct 9 06:51:11 2025 Received: from mxout1.routing.net (mxout1.routing.net [134.0.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4569125771; Thu, 19 Jun 2025 13:21:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=134.0.28.11 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339300; cv=none; b=e3Z8fZqhuyWAONgVJMA32/L+6P6KFjlcXT9K00e4PiZyBwb0g4URiX+P/okytnhotShZ9bAj02POsQ2g0YF7OX4ykxR5lKyBWvqFak+XPQqLjkq4G6GXzFMTfzC/EBe6w5RBWU1XmODmbYSrnl7UZIDq/m9cmkNqoyP0X3SYQIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339300; c=relaxed/simple; bh=yxthBGa2kWCaTKfIRuHlpNNysFTQodWfy0JsB152u/8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JOLFGG2NfGqq4kyTkFCEzHsWAzk4hUHzEAUAamHUj1otq2MjRIKHR76oo7zpRe4aAYlorP5Rsa/HuUp7oIICB6DJ/7UE1xrfHUrojWsYxC/t7Sdy2hxhyq0EH6TubFtVyqioPwFAb6MAuHYxPuo6QYnbVSuZBgNsg4bau81zE20= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de; spf=pass smtp.mailfrom=fw-web.de; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b=Swo6EbCT; arc=none smtp.client-ip=134.0.28.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fw-web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b="Swo6EbCT" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout1.routing.net (Postfix) with ESMTP id E246D3FD38; Thu, 19 Jun 2025 13:21:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750339295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=y2r8lo6RJvLluKg4KIZxEwc9bRBev7HH1fZd4pPyLJ4=; b=Swo6EbCTkmGPSfjbgZm9hWHRt2vQ2x0oa968ia9OGzruIclnOlLddRZzzecYYyFxSyreLn ukuh7uOuCjzW/heQExis61VIf8xJWzE+pEJdu1T28YNeKg9imuaq8mKkAFvXLWFFELvZ5V 53riNFQ8myJK6L1R6jHz+VACdezutoY= Received: from frank-u24.. (fttx-pool-80.245.76.73.bambit.de [80.245.76.73]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id A5C7F1226AA; Thu, 19 Jun 2025 13:21:34 +0000 (UTC) From: Frank Wunderlich To: Felix Fietkau , Sean Wang , Lorenzo Bianconi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno Cc: Frank Wunderlich , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Simon Horman , Daniel Golle , arinc.unal@arinc9.com Subject: [net-next v6 2/4] net: ethernet: mtk_eth_soc: add consts for irq index Date: Thu, 19 Jun 2025 15:21:22 +0200 Message-ID: <20250619132125.78368-3-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250619132125.78368-1-linux@fw-web.de> References: <20250619132125.78368-1-linux@fw-web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Frank Wunderlich Use consts instead of fixed integers for accessing IRQ array. Signed-off-by: Frank Wunderlich Reviewed-by: Simon Horman Reviewed-by: Daniel Golle --- v5: - rename consts to be compatible with upcoming RSS/LRO changes MTK_ETH_IRQ_SHARED =3D> MTK_FE_IRQ_SHARED MTK_ETH_IRQ_TX =3D> MTK_FE_IRQ_TX MTK_ETH_IRQ_RX =3D> MTK_FE_IRQ_RX MTK_ETH_IRQ_MAX =3D> MTK_FE_IRQ_NUM v4: - calculate max from last (rx) irq index and use it for array size too --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 22 ++++++++++----------- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 7 ++++++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.c index c5deb8183afe..efffdd7e131e 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3341,9 +3341,9 @@ static int mtk_get_irqs(struct platform_device *pdev,= struct mtk_eth *eth) int i; =20 /* future SoCs beginning with MT7988 should use named IRQs in dts */ - eth->irq[1] =3D platform_get_irq_byname(pdev, "fe1"); - eth->irq[2] =3D platform_get_irq_byname(pdev, "fe2"); - if (eth->irq[1] >=3D 0 && eth->irq[2] >=3D 0) + eth->irq[MTK_FE_IRQ_TX] =3D platform_get_irq_byname(pdev, "fe1"); + eth->irq[MTK_FE_IRQ_RX] =3D platform_get_irq_byname(pdev, "fe2"); + if (eth->irq[MTK_FE_IRQ_TX] >=3D 0 && eth->irq[MTK_FE_IRQ_RX] >=3D 0) return 0; =20 /* legacy way: @@ -3352,9 +3352,9 @@ static int mtk_get_irqs(struct platform_device *pdev,= struct mtk_eth *eth) * On SoCs with non-shared IRQs the first entry is not used, * the second is for TX, and the third is for RX. */ - for (i =3D 0; i < 3; i++) { + for (i =3D 0; i < MTK_FE_IRQ_NUM; i++) { if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) - eth->irq[i] =3D eth->irq[0]; + eth->irq[i] =3D eth->irq[MTK_FE_IRQ_SHARED]; else eth->irq[i] =3D platform_get_irq(pdev, i); =20 @@ -3420,7 +3420,7 @@ static void mtk_poll_controller(struct net_device *de= v) =20 mtk_tx_irq_disable(eth, MTK_TX_DONE_INT); mtk_rx_irq_disable(eth, eth->soc->rx.irq_done_mask); - mtk_handle_irq_rx(eth->irq[2], dev); + mtk_handle_irq_rx(eth->irq[MTK_FE_IRQ_RX], dev); mtk_tx_irq_enable(eth, MTK_TX_DONE_INT); mtk_rx_irq_enable(eth, eth->soc->rx.irq_done_mask); } @@ -4906,7 +4906,7 @@ static int mtk_add_mac(struct mtk_eth *eth, struct de= vice_node *np) eth->netdev[id]->features |=3D eth->soc->hw_features; eth->netdev[id]->ethtool_ops =3D &mtk_ethtool_ops; =20 - eth->netdev[id]->irq =3D eth->irq[0]; + eth->netdev[id]->irq =3D eth->irq[MTK_FE_IRQ_SHARED]; eth->netdev[id]->dev.of_node =3D np; =20 if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) @@ -5183,17 +5183,17 @@ static int mtk_probe(struct platform_device *pdev) } =20 if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) { - err =3D devm_request_irq(eth->dev, eth->irq[0], + err =3D devm_request_irq(eth->dev, eth->irq[MTK_FE_IRQ_SHARED], mtk_handle_irq, 0, dev_name(eth->dev), eth); } else { - err =3D devm_request_irq(eth->dev, eth->irq[1], + err =3D devm_request_irq(eth->dev, eth->irq[MTK_FE_IRQ_TX], mtk_handle_irq_tx, 0, dev_name(eth->dev), eth); if (err) goto err_free_dev; =20 - err =3D devm_request_irq(eth->dev, eth->irq[2], + err =3D devm_request_irq(eth->dev, eth->irq[MTK_FE_IRQ_RX], mtk_handle_irq_rx, 0, dev_name(eth->dev), eth); } @@ -5239,7 +5239,7 @@ static int mtk_probe(struct platform_device *pdev) } else netif_info(eth, probe, eth->netdev[i], "mediatek frame engine at 0x%08lx, irq %d\n", - eth->netdev[i]->base_addr, eth->irq[0]); + eth->netdev[i]->base_addr, eth->irq[MTK_FE_IRQ_SHARED]); } =20 /* we run 2 devices on the same DMA ring so we need a dummy device diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.h index 6f72a8c8ae1e..8cdf1317dff5 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -642,6 +642,11 @@ =20 #define MTK_MAC_FSM(x) (0x1010C + ((x) * 0x100)) =20 +#define MTK_FE_IRQ_SHARED 0 +#define MTK_FE_IRQ_TX 1 +#define MTK_FE_IRQ_RX 2 +#define MTK_FE_IRQ_NUM (MTK_FE_IRQ_RX + 1) + struct mtk_rx_dma { unsigned int rxd1; unsigned int rxd2; @@ -1292,7 +1297,7 @@ struct mtk_eth { struct net_device *dummy_dev; struct net_device *netdev[MTK_MAX_DEVS]; struct mtk_mac *mac[MTK_MAX_DEVS]; - int irq[3]; + int irq[MTK_FE_IRQ_NUM]; u32 msg_enable; unsigned long sysclk; struct regmap *ethsys; --=20 2.43.0 From nobody Thu Oct 9 06:51:11 2025 Received: from mxout2.routing.net (mxout2.routing.net [134.0.28.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CBB524DCF6; Thu, 19 Jun 2025 13:21:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=134.0.28.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339305; cv=none; b=Ps2tkiFvkkXD5HEfLeMJHQsA03z7yxeLVSVi+1fzEbxJfqv4rffyjNpFo0xrUrAoy6SgWYHqKulwZhnqe5/gxWWEYARRBNBussXt8q++OIpkGVzep5+ggD7UR4x6NoO0Ur+uKEiFMXfLd+lzYH+R0gpmrQsz97Lm+x1OfHP2SPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339305; c=relaxed/simple; bh=oKulFATTRQQZBNnM1v+cHfttUexHr0J5m9zujzySsQI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LijoQGN3Qu5JIYVTikBVgJZp++npCuHYfH7Jv3CQIzK9lW3XBEy1+HMqDyLjAE+bdkzTa4xUzxvR1vC7rQAeOnqnp4T/3487OBkEAWMDWtA9ZCJBRhlyparig8JvMJi1On56I305a5pLpX2Css5DAoGnFXJLbdEQ3fCOY1kJvck= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de; spf=pass smtp.mailfrom=fw-web.de; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b=xHaiROar; arc=none smtp.client-ip=134.0.28.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fw-web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b="xHaiROar" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout2.routing.net (Postfix) with ESMTP id 3150D603E2; Thu, 19 Jun 2025 13:21:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750339295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/TJe0GtibYNSR3TlB4zrDfpZgRHLE4jCl9Gxezu9Oew=; b=xHaiROarPd6WYyhOgV1oAn9fe8HfGC0vZhhuiQ/bfA7DQDhjGGFRwlqnVTke8GSfNuMX9B ZaQvX+xp5uV5Ppcm8mfNOetNsDVtMnxNioem29dwd44C/MAWGmE1WqHEV6klYiU9rbGmok ipPGXglbjHy43h98B3ne2it90Q/IOjI= Received: from frank-u24.. (fttx-pool-80.245.76.73.bambit.de [80.245.76.73]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id E95351226B5; Thu, 19 Jun 2025 13:21:34 +0000 (UTC) From: Frank Wunderlich To: Felix Fietkau , Sean Wang , Lorenzo Bianconi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno Cc: Frank Wunderlich , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Simon Horman , Daniel Golle , arinc.unal@arinc9.com Subject: [net-next v6 3/4] net: ethernet: mtk_eth_soc: skip first IRQ if not used Date: Thu, 19 Jun 2025 15:21:23 +0200 Message-ID: <20250619132125.78368-4-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250619132125.78368-1-linux@fw-web.de> References: <20250619132125.78368-1-linux@fw-web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Frank Wunderlich 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 Reviewed-by: Daniel Golle Reviewed-by: Simon Horman --- v6: - changed commit description a bit - use MTK_FE_IRQ_SHARED instead of 0 v5: - change commit title and description v4: - drop >2 condition as max is already 2 and drop the else continue - update comment to explain which IRQs are taken in legacy way --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 12 ++++++++---- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.c index efffdd7e131e..67ba8927be46 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3353,10 +3353,14 @@ static int mtk_get_irqs(struct platform_device *pde= v, struct mtk_eth *eth) * the second is for TX, and the third is for RX. */ for (i =3D 0; i < MTK_FE_IRQ_NUM; i++) { - if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) - eth->irq[i] =3D eth->irq[MTK_FE_IRQ_SHARED]; - else - eth->irq[i] =3D platform_get_irq(pdev, i); + if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT)) { + if (i =3D=3D MTK_FE_IRQ_SHARED) + eth->irq[MTK_FE_IRQ_SHARED] =3D platform_get_irq(pdev, i); + else + eth->irq[i] =3D eth->irq[MTK_FE_IRQ_SHARED]; + } else { + eth->irq[i] =3D platform_get_irq(pdev, i + 1); + } =20 if (eth->irq[i] < 0) { dev_err(&pdev->dev, "no IRQ%d resource found\n", i); diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.h index 8cdf1317dff5..9261c0e13b59 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -643,8 +643,8 @@ #define MTK_MAC_FSM(x) (0x1010C + ((x) * 0x100)) =20 #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) =20 struct mtk_rx_dma { --=20 2.43.0 From nobody Thu Oct 9 06:51:11 2025 Received: from mxout3.routing.net (mxout3.routing.net [134.0.28.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F7C324DCF7; Thu, 19 Jun 2025 13:21:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=134.0.28.8 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339305; cv=none; b=HbYvr5nFZEVcxkPhEXx0ue20fw0dW19+1BDaV291TF9vRcCCoX91tfT0BCSMuHtT7JEBoTxxuEYdjKs1qYRJSJV8qb85jcBZvkYrmd3A+i3smDIoefPlm38tnnMNCY6alv4QqglFTIWQpQlyyTUzVxxkDsDrmjb4kobP5pbxSnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750339305; c=relaxed/simple; bh=tiLqnmjKL1xeScp1HZ8XPoZ3v5bsYgRhdhmsWJvgaWo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jTJ+HzKCdJUFB8f1Wpxl0M7mnNVx6KljeNsr47sqEuL9QGXl5sa+mhA/dU9fbLILiHZa0cUboxw6AOKTO/dabXHYr/tWxXMU6Mf8qitpaA17Vt/DbAg7COwjstZMZ29wM5M97/YHJk8pEd6L8eEuqPj+DCKQhwOgN9eQ73ywho0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de; spf=pass smtp.mailfrom=fw-web.de; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b=IiGc5phL; arc=none smtp.client-ip=134.0.28.8 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fw-web.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b="IiGc5phL" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout3.routing.net (Postfix) with ESMTP id 7241361634; Thu, 19 Jun 2025 13:21:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750339295; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HS2lUJltRvHPUIa4JQpyFGxD+jJplBBokp6RSnTT/O0=; b=IiGc5phLz6zEsG8qlLtRtYkeD0bxYWoox9fQ+43vKyLGjgVxaEeH1iHA5zfIgBSd1ZCEk4 V1ubV+Y3pQfoZx2RbzOsF54ca/gKjmr8j71jJEn7E1xN1FSAhgAMzMdGx+CInY0Za374fU jCekEa0SyjdgSt9Tu9DYJrfkR0itzcU= Received: from frank-u24.. (fttx-pool-80.245.76.73.bambit.de [80.245.76.73]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id 395D21226AA; Thu, 19 Jun 2025 13:21:35 +0000 (UTC) From: Frank Wunderlich To: Felix Fietkau , Sean Wang , Lorenzo Bianconi , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno Cc: Frank Wunderlich , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Simon Horman , Daniel Golle , arinc.unal@arinc9.com Subject: [net-next v6 4/4] net: ethernet: mtk_eth_soc: only use legacy mode on missing IRQ name Date: Thu, 19 Jun 2025 15:21:24 +0200 Message-ID: <20250619132125.78368-5-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250619132125.78368-1-linux@fw-web.de> References: <20250619132125.78368-1-linux@fw-web.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Frank Wunderlich If platform_get_irq_byname returns -ENXIO fall back to legacy (index based) mode, but on other errors function should return this error. Suggested-by: Daniel Golle Signed-off-by: Frank Wunderlich Reviewed-by: Simon Horman --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethe= rnet/mediatek/mtk_eth_soc.c index 67ba8927be46..f8a907747db4 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3346,6 +3346,13 @@ static int mtk_get_irqs(struct platform_device *pdev= , struct mtk_eth *eth) if (eth->irq[MTK_FE_IRQ_TX] >=3D 0 && eth->irq[MTK_FE_IRQ_RX] >=3D 0) return 0; =20 + /* only use legacy mode if platform_get_irq_byname returned -ENXIO */ + if (eth->irq[MTK_FE_IRQ_TX] !=3D -ENXIO) + return eth->irq[MTK_FE_IRQ_TX]; + + if (eth->irq[MTK_FE_IRQ_RX] !=3D -ENXIO) + return eth->irq[MTK_FE_IRQ_RX]; + /* legacy way: * On MTK_SHARED_INT SoCs (MT7621 + MT7628) the first IRQ is taken * from devicetree and used for both RX and TX - it is shared. --=20 2.43.0