From nobody Fri Oct 10 04:02:06 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 79E9D2116EE; Mon, 16 Jun 2025 08:07:48 +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=1750061271; cv=none; b=L2Kd54WAsnIiisBqrznMCUBjSRFOb8/UrHlNvZKfEhp/zKqWBQwwv0NZBQFlw4ZexHt5/xOqR912dUlGH3+n02eaRCw2Uh18hB+8MBE+gwju3KnEETxpDzRLu9cWTMVT6kMWbYjD5cX4j/5b9mZm7K2Hj0y5auRG9VbVbc+kMrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750061271; c=relaxed/simple; bh=AftlQEL6Khk/DC4qbPUaIfYSZ4Qv4tGnW7qwvZaILKc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TRhIIoAvREVpJ/Z3qCm6/gytqBFRm52NNUpi7BVFTqxX7d5prqw+BY2BvW8ftul3c28E/zDe5a0iwtNkG7bfH5qYyuP92vRFHGl7jQkBznfjDjLzjDydpp+5QxSJQDMVVoUPwD93MpX7Uxmm8LENGvZecsgT1j1JIGD+zAAWbiQ= 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=iRrvfIMX; 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="iRrvfIMX" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout1.routing.net (Postfix) with ESMTP id 737353FDD4; Mon, 16 Jun 2025 08:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750061266; 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=O65L2t9W8ZXWygRCA4KnSeEpTHiZlvT4O3mUer1lJck=; b=iRrvfIMXUMPEHmbttE1A3Q194fTpN00corjw0Y4kfRKOuOm+YbRSKyCK9SQgb+ShY+dusM txJ00iOENvqSrJGwASwgSJrUjX4bwYQ8BVwqw43oh3XY7DBZew/pNvjyFuFgip2RposViz geXtErzbL1IUpnn6FnYDvgkwSjjiVK8= Received: from frank-u24.. (fttx-pool-194.15.87.210.bambit.de [194.15.87.210]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id 39BB8122704; Mon, 16 Jun 2025 08:07:46 +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 v4 1/3] net: ethernet: mtk_eth_soc: support named IRQs Date: Mon, 16 Jun 2025 10:07:34 +0200 Message-ID: <20250616080738.117993-2-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250616080738.117993-1-linux@fw-web.de> References: <20250616080738.117993-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 exiting 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 --- v2: - move irqs loading part into own helper function - reduce indentation - place mtk_get_irqs helper before the irq_handler (note for simon) --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 39 +++++++++++++++------ 1 file changed, 28 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 b76d35069887..81ae8a6fe838 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3337,6 +3337,30 @@ 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; + + eth->irq[1] =3D platform_get_irq_byname(pdev, "tx"); + eth->irq[2] =3D platform_get_irq_byname(pdev, "rx"); + if (eth->irq[1] >=3D 0 && eth->irq[2] >=3D 0) + return 0; + + 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; @@ -5106,17 +5130,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 Fri Oct 10 04:02:06 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 D581B2116F6; Mon, 16 Jun 2025 08:07:48 +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=1750061271; cv=none; b=ri9un2z8V0zFTFatvktpaBOwsExwSWplrjoeCObWtuiorkPFAEuGhryOhS9652hTSuRkWvZOgYCG7FwJgG8oImq2Exq9T1YmDIcmpZKXxZPskJzF8mVqJ78AnY6YBVs2nXG4TMB0N6FHEZry99c+Eykpj91mDO5Ai4gW7fyjSF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750061271; c=relaxed/simple; bh=3lU+7FBXtk5WVaObG4t5tMM+F+TbxbNIbPpUIntrcC4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dmUyjawWhMhuvWbw5AwE1K8wyAZffa8QlXmKtH03TjhVYZpu/tvF5xpLgjat7RqwclvJU4ByWcYDfTJkXe+RhLC+P20d7MVHc7KSxCBnhL4t6EzVWcFn5VDJ2b0h9UgcDGF7jSdVvNU+AbITM5egVD1MZQ/R6QpoK20VQH6f5P4= 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=gDvpQIX5; 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="gDvpQIX5" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout4.routing.net (Postfix) with ESMTP id B0281100877; Mon, 16 Jun 2025 08:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750061266; 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=NNSm585GJd6bICuICGpn4tPxcvkiDJTHzsEVK8Iy8kc=; b=gDvpQIX5WyvCe80fqTpMlwrF6y1KFQ8cmrFWWswaz4lr3tRDpJWbS3qUyfLAb9XMsDsVl7 N1wGp4ARPqkm5VTQVohvEVfivjdLOcCiAGwkwe3mfpYUCcE06sriUMo3nwPnnH9D6MKys9 KT9cVN4Bsqkd2JtpqR8a+iNH0rUzqlc= Received: from frank-u24.. (fttx-pool-194.15.87.210.bambit.de [194.15.87.210]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id 76E8B1226D6; Mon, 16 Jun 2025 08:07:46 +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 v4 2/3] net: ethernet: mtk_eth_soc: add consts for irq index Date: Mon, 16 Jun 2025 10:07:35 +0200 Message-ID: <20250616080738.117993-3-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250616080738.117993-1-linux@fw-web.de> References: <20250616080738.117993-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 --- 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 81ae8a6fe838..3ecb399dcf81 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3341,14 +3341,14 @@ static int mtk_get_irqs(struct platform_device *pde= v, struct mtk_eth *eth) { int i; =20 - eth->irq[1] =3D platform_get_irq_byname(pdev, "tx"); - eth->irq[2] =3D platform_get_irq_byname(pdev, "rx"); - if (eth->irq[1] >=3D 0 && eth->irq[2] >=3D 0) + eth->irq[MTK_ETH_IRQ_TX] =3D platform_get_irq_byname(pdev, "tx"); + eth->irq[MTK_ETH_IRQ_RX] =3D platform_get_irq_byname(pdev, "rx"); + if (eth->irq[MTK_ETH_IRQ_TX] >=3D 0 && eth->irq[MTK_ETH_IRQ_RX] >=3D 0) return 0; =20 - for (i =3D 0; i < 3; i++) { + for (i =3D 0; i < MTK_ETH_IRQ_MAX; 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_ETH_IRQ_SHARED]; else eth->irq[i] =3D platform_get_irq(pdev, i); =20 @@ -3414,7 +3414,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_ETH_IRQ_RX], dev); mtk_tx_irq_enable(eth, MTK_TX_DONE_INT); mtk_rx_irq_enable(eth, eth->soc->rx.irq_done_mask); } @@ -4900,7 +4900,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_ETH_IRQ_SHARED]; eth->netdev[id]->dev.of_node =3D np; =20 if (MTK_HAS_CAPS(eth->soc->caps, MTK_SOC_MT7628)) @@ -5177,17 +5177,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_ETH_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_ETH_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_ETH_IRQ_RX], mtk_handle_irq_rx, 0, dev_name(eth->dev), eth); } @@ -5233,7 +5233,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_ETH_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..96b724dca0e2 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_ETH_IRQ_SHARED 0 +#define MTK_ETH_IRQ_TX 1 +#define MTK_ETH_IRQ_RX 2 +#define MTK_ETH_IRQ_MAX (MTK_ETH_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_ETH_IRQ_MAX]; u32 msg_enable; unsigned long sysclk; struct regmap *ethsys; --=20 2.43.0 From nobody Fri Oct 10 04:02:06 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 EF7DF211711; Mon, 16 Jun 2025 08:07:48 +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=1750061271; cv=none; b=ElAeH65fn7ScdonQ9c0ZXytImU3Pu2GR97X1PmUToadfqtLalouBiOeAm5kjJoVwhL0/CdiLdOnH/MZlKyOwq4+W1skTJ/rQbilKBIq/GaAkdHhb9Ppose4Ej1jb4j1yPzFNhrPYYa7dkIwwP9EM/YgVHZk4xlIHlpMAmb7cGbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750061271; c=relaxed/simple; bh=unkrt1I1aycK0USQscjU+zwYRYC1x0EAJV22XRofaLM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ugwchjti/Lu0ImfJok9AK0jxYE0OgiXWRAldPShP1wrbIQa9j9V9oTDSdprdfBwipf1OcbmUaqbt15UFeN8r9TVBTClTo344OnCSD2ZChLSK6XthcW5Wr6uE8e/F18vr1D89feLKb0d7rtDA74HCc1y+XI72+SXd+GcjhEe8MZo= 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=YRVYaOMf; 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="YRVYaOMf" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout1.routing.net (Postfix) with ESMTP id F19A93FC53; Mon, 16 Jun 2025 08:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1750061267; 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=r8f/+FnkJmV80G4mQhBXvToxseQ3gyhJ12ujdf6hNPk=; b=YRVYaOMfzd+7prWkj42utAH6tzBV6u3ONURP+xaN3/DFVbAsj5qIV9Sl+/aAtzJk1+YF4E xpK902rB8xQYxVHDyB1XBmFs8LjkMCEB/pQq298HcNEU1ZERLkL4YWUXnYUIuXwApbios2 d6HXxv8tNdhmIkUnEo5VCfYh7FNvngs= Received: from frank-u24.. (fttx-pool-194.15.87.210.bambit.de [194.15.87.210]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id B7F19122704; Mon, 16 Jun 2025 08:07:46 +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 v4 3/3] net: ethernet: mtk_eth_soc: change code to skip first IRQ completely Date: Mon, 16 Jun 2025 10:07:36 +0200 Message-ID: <20250616080738.117993-4-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250616080738.117993-1-linux@fw-web.de> References: <20250616080738.117993-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 without MTK_SHARED_INT capability (mt7621 + mt7628) the first IRQ (eth->irq[0]) was read but never used. Do not read it and reduce the IRQ-count to 2 because of skipped index 0. Signed-off-by: Frank Wunderlich --- 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 | 20 ++++++++++++++++---- drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++-- 2 files changed, 18 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 3ecb399dcf81..f3fcbb00822c 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -3341,16 +3341,28 @@ static int mtk_get_irqs(struct platform_device *pde= v, struct mtk_eth *eth) { int i; =20 + /* future SoCs beginning with MT7988 should use named IRQs in dts */ eth->irq[MTK_ETH_IRQ_TX] =3D platform_get_irq_byname(pdev, "tx"); eth->irq[MTK_ETH_IRQ_RX] =3D platform_get_irq_byname(pdev, "rx"); if (eth->irq[MTK_ETH_IRQ_TX] >=3D 0 && eth->irq[MTK_ETH_IRQ_RX] >=3D 0) return 0; =20 + /* legacy way: + * On MTK_SHARED_INT SoCs (MT7621 + MT7628) the first IRQ is taken from + * devicetree and used for rx+tx. + * On SoCs with non-shared IRQ the first was not used, second entry is + * TX and third is RX. + */ + for (i =3D 0; i < MTK_ETH_IRQ_MAX; i++) { - if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) - eth->irq[i] =3D eth->irq[MTK_ETH_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 0) + eth->irq[MTK_ETH_IRQ_SHARED] =3D platform_get_irq(pdev, i); + else + eth->irq[i] =3D eth->irq[MTK_ETH_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 96b724dca0e2..9d91fe721ad0 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_ETH_IRQ_SHARED 0 -#define MTK_ETH_IRQ_TX 1 -#define MTK_ETH_IRQ_RX 2 +#define MTK_ETH_IRQ_TX 0 +#define MTK_ETH_IRQ_RX 1 #define MTK_ETH_IRQ_MAX (MTK_ETH_IRQ_RX + 1) =20 struct mtk_rx_dma { --=20 2.43.0