> 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 Hi Frank, I guess my comments on v1 apply even in v2. Can you please take a look? Regards, Lorenzo > --- > 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/ethernet/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, unsigned int txqueue) > schedule_work(ð->pending_work); > } > > +static int mtk_get_irqs(struct platform_device *pdev, struct mtk_eth *eth) > +{ > + int i; > + > + eth->irq[1] = platform_get_irq_byname(pdev, "tx"); > + eth->irq[2] = platform_get_irq_byname(pdev, "rx"); > + if (eth->irq[1] >= 0 && eth->irq[2] >= 0) > + return 0; > + > + for (i = 0; i < 3; i++) { > + if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) > + eth->irq[i] = eth->irq[0]; > + else > + eth->irq[i] = 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 = _eth; > @@ -5106,17 +5130,10 @@ static int mtk_probe(struct platform_device *pdev) > } > } > > - for (i = 0; i < 3; i++) { > - if (MTK_HAS_CAPS(eth->soc->caps, MTK_SHARED_INT) && i > 0) > - eth->irq[i] = eth->irq[0]; > - else > - eth->irq[i] = platform_get_irq(pdev, i); > - if (eth->irq[i] < 0) { > - dev_err(&pdev->dev, "no IRQ%d resource found\n", i); > - err = -ENXIO; > - goto err_wed_exit; > - } > - } > + err = mtk_get_irqs(pdev, eth); > + if (err) > + goto err_wed_exit; > + > for (i = 0; i < ARRAY_SIZE(eth->clks); i++) { > eth->clks[i] = devm_clk_get(eth->dev, > mtk_clks_source_name[i]); > -- > 2.43.0 >