Message ID | 20220303100815.25605-1-tangmeng@uniontech.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 43ff0d76f23571e8cfc60bf08af4f89ef78f20f0 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | bcm63xx_enet: Use platform_get_irq() to get the interrupt | expand |
Hello: This patch was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Thu, 3 Mar 2022 18:08:15 +0800 you wrote: > platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on > static allocation of IRQ resources in DT core code, this > causes an issue when using hierarchical interrupt domains > using "interrupts" property in the node as this bypassed > the hierarchical setup and messed up the irq chaining. > > In preparation for removal of static setup of IRQ resource > from DT core code use platform_get_irq(). > > [...] Here is the summary with links: - bcm63xx_enet: Use platform_get_irq() to get the interrupt https://git.kernel.org/netdev/net-next/c/43ff0d76f235 You are awesome, thank you!
diff --git a/drivers/net/ethernet/broadcom/bcm63xx_enet.c b/drivers/net/ethernet/broadcom/bcm63xx_enet.c index b04e423c446a..c1b97e8c55ef 100644 --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c @@ -1716,17 +1716,17 @@ static int bcm_enet_probe(struct platform_device *pdev) struct bcm_enet_priv *priv; struct net_device *dev; struct bcm63xx_enet_platform_data *pd; - struct resource *res_irq, *res_irq_rx, *res_irq_tx; + int irq, irq_rx, irq_tx; struct mii_bus *bus; int i, ret; if (!bcm_enet_shared_base[0]) return -EPROBE_DEFER; - res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); - res_irq_rx = platform_get_resource(pdev, IORESOURCE_IRQ, 1); - res_irq_tx = platform_get_resource(pdev, IORESOURCE_IRQ, 2); - if (!res_irq || !res_irq_rx || !res_irq_tx) + irq = platform_get_irq(pdev, 0); + irq_rx = platform_get_irq(pdev, 1); + irq_tx = platform_get_irq(pdev, 2); + if (irq < 0 || irq_rx < 0 || irq_tx < 0) return -ENODEV; dev = alloc_etherdev(sizeof(*priv)); @@ -1748,9 +1748,9 @@ static int bcm_enet_probe(struct platform_device *pdev) goto out; } - dev->irq = priv->irq = res_irq->start; - priv->irq_rx = res_irq_rx->start; - priv->irq_tx = res_irq_tx->start; + dev->irq = priv->irq = irq; + priv->irq_rx = irq_rx; + priv->irq_tx = irq_tx; priv->mac_clk = devm_clk_get(&pdev->dev, "enet"); if (IS_ERR(priv->mac_clk)) {
platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypassed the hierarchical setup and messed up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq(). Signed-off-by: Meng Tang <tangmeng@uniontech.com> --- drivers/net/ethernet/broadcom/bcm63xx_enet.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)