Message ID | 20220314024144.2112308-1-chi.minghao@zte.com.cn (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [V3] net: mv643xx_eth: use platform_get_irq() instead of platform_get_resource() | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Guessing tree name failed - patch did not apply |
> - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); > - BUG_ON(!res); > - dev->irq = res->start; > + irq = platform_get_irq(pdev, 0); > + if (WARN_ON(irq < 0)) { > + if (!IS_ERR(mp->clk)) > + clk_disable_unprepare(mp->clk); > + free_netdev(dev); > + return irq; > + } Why not goto out; ? And FYI: You can pass an error code to clk_disable_unprepare() and it will not care and do the right thing. So if you were to keep this code, which you should not, you don't need the if !IS_ERR(mp->clk)) Andrew
On Mon, 14 Mar 2022 02:41:44 +0000 cgel.zte@gmail.com wrote: > From: Minghao Chi <chi.minghao@zte.com.cn> > > It is not recommened to use platform_get_resource(pdev, IORESOURCE_IRQ) > for requesting IRQ's resources any more, as they can be not ready yet in > case of DT-booting. > > platform_get_irq() instead is a recommended way for getting IRQ even if > it was not retrieved earlier. > > It also makes code simpler because we're getting "int" value right away > and no conversion from resource to int is required. > > Reported-by: Zeal Robot <zealci@zte.com.cn> > Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn> Your previous patch was applied, you must send a incremental fix on top of this tree: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c index c31cbbae0eca..d75cf9097c7a 100644 --- a/drivers/net/ethernet/marvell/mv643xx_eth.c +++ b/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -3092,8 +3092,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev) struct mv643xx_eth_private *mp; struct net_device *dev; struct phy_device *phydev = NULL; - struct resource *res; - int err; + int err, irq; pd = dev_get_platdata(&pdev->dev); if (pd == NULL) { @@ -3189,9 +3188,14 @@ static int mv643xx_eth_probe(struct platform_device *pdev) timer_setup(&mp->rx_oom, oom_timer_wrapper, 0); - res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - BUG_ON(!res); - dev->irq = res->start; + irq = platform_get_irq(pdev, 0); + if (WARN_ON(irq < 0)) { + if (!IS_ERR(mp->clk)) + clk_disable_unprepare(mp->clk); + free_netdev(dev); + return irq; + } + dev->irq = irq; dev->netdev_ops = &mv643xx_eth_netdev_ops;