From nobody Fri Oct 10 09:39:02 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 7AD1ED530; Sun, 15 Jun 2025 08:46:23 +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=1749977186; cv=none; b=C2jtKXQW+V5khkR6omuIIqzV/2ICmCdZ0ou0WaT7VN2lo/vsu6xwyi7ouA0bZwcUywzMBWxXf1E+uunElLhxEelFkUb3ykPIkNHt1zVeUd08sLmcLg6DlDF+RqvuizOWXzDBLgeGDWLpS8Kr6MXE4QeujTVU0jz2aSiyPLtuik8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749977186; c=relaxed/simple; bh=AftlQEL6Khk/DC4qbPUaIfYSZ4Qv4tGnW7qwvZaILKc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=YjUQyvqefFhBgP0uREGZUN9x4VqGGfwWyK1peyGtCMGr6Z4j+NdYSG6UonUaFILdHAQFAyHDylClxI9U0di5BUwT6M8RH7wQAjZxsRJD0WHwCsPiOpzowmMAoI+8E9uDBZy72MwJNJSaqufP28T/UryNeIohCMUusy92yXVRZCI= 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=imNgtVcC; 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="imNgtVcC" Received: from mxbulk.masterlogin.de (unknown [192.168.10.85]) by mxout4.routing.net (Postfix) with ESMTP id B7DF910075B; Sun, 15 Jun 2025 08:46:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1749977174; 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; bh=O65L2t9W8ZXWygRCA4KnSeEpTHiZlvT4O3mUer1lJck=; b=imNgtVcCO4Vp3y3WVt/v3OiKo0YQxYEuqOKRxNtOhTHIOLUPCoANNKaLdPJI0L7zlXnbt0 gAD0C5S5iLdnKXnsoVBnS2O1/8XR657NZhREwQ+foJURHJrKir4TbK5lAQFHU4sNu82qtY lZ534FVtYZdVs9GuLROpILnABI0YeUs= Received: from frank-u24.. (fttx-pool-217.61.157.124.bambit.de [217.61.157.124]) by mxbulk.masterlogin.de (Postfix) with ESMTPSA id 772AF1226B2; Sun, 15 Jun 2025 08:46:14 +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 Subject: [PATCH v2] net: ethernet: mtk_eth_soc: support named IRQs Date: Sun, 15 Jun 2025 10:45:19 +0200 Message-ID: <20250615084521.32329-1-linux@fw-web.de> X-Mailer: git-send-email 2.43.0 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