From: Rosen Penev <rosenp@gmail.com>
To: netdev@vger.kernel.org
Cc: Marc Kleine-Budde <mkl@pengutronix.de>,
Vincent Mailhol <mailhol.vincent@wanadoo.fr>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Vladimir Oltean <olteanv@gmail.com>, Chen-Yu Tsai <wens@csie.org>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Samuel Holland <samuel@sholland.org>,
Pantelis Antoniou <pantelis.antoniou@gmail.com>,
Marcin Wojtas <marcin.s.wojtas@gmail.com>,
Byungho An <bh74.an@samsung.com>,
Kevin Brace <kevinbrace@bracecomputerlab.com>,
Francois Romieu <romieu@fr.zoreil.com>,
Michal Simek <michal.simek@amd.com>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
Zhao Qiang <qiang.zhao@nxp.com>,
linux-can@vger.kernel.org (open list:CAN NETWORK DRIVERS),
linux-kernel@vger.kernel.org (open list),
linux-arm-kernel@lists.infradead.org (moderated
list:ARM/Allwinner sunXi SoC support),
linux-sunxi@lists.linux.dev (open list:ARM/Allwinner sunXi SoC
support),
linuxppc-dev@lists.ozlabs.org (open list:FREESCALE SOC FS_ENET
DRIVER)
Subject: [PATCHv3 net-next] net: modernize IRQ resource acquisition
Date: Tue, 12 Nov 2024 13:14:42 -0800 [thread overview]
Message-ID: <20241112211442.7205-1-rosenp@gmail.com> (raw)
In probe, np == pdev->dev.of_node. It's easier to pass pdev directly.
Replace irq_of_parse_and_map() by platform_get_irq() to do so. Requires
removing the error message as well as fixing the return type.
Replace of_address_to_resource() with platform_get_resource() for the
same reason.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
(for CAN)
Reviewed-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
v3: fix coccinelle bad return and error message checks. Also reword
commit title and message
v2: fixed compilation errors. Also removed non devm transformations.
drivers/net/can/grcan.c | 5 ++--
drivers/net/can/mscan/mpc5xxx_can.c | 5 ++--
drivers/net/dsa/bcm_sf2.c | 4 ++--
drivers/net/ethernet/allwinner/sun4i-emac.c | 5 ++--
drivers/net/ethernet/freescale/fec_mpc52xx.c | 4 ++--
.../net/ethernet/freescale/fs_enet/mac-fcc.c | 4 ++--
.../net/ethernet/freescale/fs_enet/mac-fec.c | 4 ++--
.../net/ethernet/freescale/fs_enet/mac-scc.c | 4 ++--
drivers/net/ethernet/freescale/ucc_geth.c | 12 +++++-----
drivers/net/ethernet/marvell/mvneta.c | 4 ++--
drivers/net/ethernet/moxa/moxart_ether.c | 6 ++---
.../ethernet/samsung/sxgbe/sxgbe_platform.c | 24 +++++++------------
drivers/net/ethernet/via/via-rhine.c | 4 ++--
drivers/net/ethernet/via/via-velocity.c | 4 ++--
drivers/net/ethernet/xilinx/ll_temac_mdio.c | 6 ++---
drivers/net/mdio/mdio-mux-mmioreg.c | 16 +++++++------
drivers/net/wan/fsl_ucc_hdlc.c | 10 ++++----
17 files changed, 55 insertions(+), 66 deletions(-)
diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c
index cdf0ec9fa7f3..48e93c3445e7 100644
--- a/drivers/net/can/grcan.c
+++ b/drivers/net/can/grcan.c
@@ -1673,9 +1673,8 @@ static int grcan_probe(struct platform_device *ofdev)
goto exit_error;
}
- irq = irq_of_parse_and_map(np, GRCAN_IRQIX_IRQ);
- if (!irq) {
- dev_err(&ofdev->dev, "no irq found\n");
+ irq = platform_get_irq(ofdev, GRCAN_IRQIX_IRQ);
+ if (irq < 0) {
err = -ENODEV;
goto exit_error;
}
diff --git a/drivers/net/can/mscan/mpc5xxx_can.c b/drivers/net/can/mscan/mpc5xxx_can.c
index 0080c39ee182..c916c9ab912a 100644
--- a/drivers/net/can/mscan/mpc5xxx_can.c
+++ b/drivers/net/can/mscan/mpc5xxx_can.c
@@ -300,9 +300,8 @@ static int mpc5xxx_can_probe(struct platform_device *ofdev)
if (!base)
return dev_err_probe(&ofdev->dev, err, "couldn't ioremap\n");
- irq = irq_of_parse_and_map(np, 0);
- if (!irq) {
- dev_err(&ofdev->dev, "no irq found\n");
+ irq = platform_get_irq(ofdev, 0);
+ if (irq < 0) {
err = -ENODEV;
goto exit_unmap_mem;
}
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index 43bde1f583ff..9229582efd05 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -1443,8 +1443,8 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)
of_node_put(ports);
}
- priv->irq0 = irq_of_parse_and_map(dn, 0);
- priv->irq1 = irq_of_parse_and_map(dn, 1);
+ priv->irq0 = platform_get_irq(pdev, 0);
+ priv->irq1 = platform_get_irq(pdev, 1);
base = &priv->core;
for (i = 0; i < BCM_SF2_REGS_NUM; i++) {
diff --git a/drivers/net/ethernet/allwinner/sun4i-emac.c b/drivers/net/ethernet/allwinner/sun4i-emac.c
index 2f516b950f4e..353ebec76c92 100644
--- a/drivers/net/ethernet/allwinner/sun4i-emac.c
+++ b/drivers/net/ethernet/allwinner/sun4i-emac.c
@@ -995,9 +995,8 @@ static int emac_probe(struct platform_device *pdev)
/* fill in parameters for net-dev structure */
ndev->base_addr = (unsigned long)db->membase;
- ndev->irq = irq_of_parse_and_map(np, 0);
- if (ndev->irq == -ENXIO) {
- netdev_err(ndev, "No irq resource\n");
+ ndev->irq = platform_get_irq(pdev, 0);
+ if (ndev->irq < 0) {
ret = ndev->irq;
goto out_iounmap;
}
diff --git a/drivers/net/ethernet/freescale/fec_mpc52xx.c b/drivers/net/ethernet/freescale/fec_mpc52xx.c
index 5d7769b38ae4..b0849a448c6d 100644
--- a/drivers/net/ethernet/freescale/fec_mpc52xx.c
+++ b/drivers/net/ethernet/freescale/fec_mpc52xx.c
@@ -859,9 +859,9 @@ static int mpc52xx_fec_probe(struct platform_device *op)
/* Get the IRQ we need one by one */
/* Control */
- ndev->irq = irq_of_parse_and_map(np, 0);
+ ndev->irq = platform_get_irq(op, 0);
- /* RX */
+ /* RX */
priv->r_irq = bcom_get_task_irq(priv->rx_dmatsk);
/* TX */
diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-fcc.c b/drivers/net/ethernet/freescale/fs_enet/mac-fcc.c
index be63293511d9..9006137e3a55 100644
--- a/drivers/net/ethernet/freescale/fs_enet/mac-fcc.c
+++ b/drivers/net/ethernet/freescale/fs_enet/mac-fcc.c
@@ -83,8 +83,8 @@ static int do_pd_setup(struct fs_enet_private *fep)
struct fs_platform_info *fpi = fep->fpi;
int ret = -EINVAL;
- fep->interrupt = irq_of_parse_and_map(ofdev->dev.of_node, 0);
- if (!fep->interrupt)
+ fep->interrupt = platform_get_irq(ofdev, 0);
+ if (fep->interrupt < 0)
goto out;
fep->fcc.fccp = of_iomap(ofdev->dev.of_node, 0);
diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
index f2ecd20027cf..f8ae38e37feb 100644
--- a/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
+++ b/drivers/net/ethernet/freescale/fs_enet/mac-fec.c
@@ -88,8 +88,8 @@ static int do_pd_setup(struct fs_enet_private *fep)
{
struct platform_device *ofdev = to_platform_device(fep->dev);
- fep->interrupt = irq_of_parse_and_map(ofdev->dev.of_node, 0);
- if (!fep->interrupt)
+ fep->interrupt = platform_get_irq(ofdev, 0);
+ if (fep->interrupt < 0)
return -EINVAL;
fep->fec.fecp = of_iomap(ofdev->dev.of_node, 0);
diff --git a/drivers/net/ethernet/freescale/fs_enet/mac-scc.c b/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
index 6c97191649de..2e817bc5c512 100644
--- a/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
+++ b/drivers/net/ethernet/freescale/fs_enet/mac-scc.c
@@ -87,8 +87,8 @@ static int do_pd_setup(struct fs_enet_private *fep)
{
struct platform_device *ofdev = to_platform_device(fep->dev);
- fep->interrupt = irq_of_parse_and_map(ofdev->dev.of_node, 0);
- if (!fep->interrupt)
+ fep->interrupt = platform_get_irq(ofdev, 0);
+ if (fep->interrupt < 0)
return -EINVAL;
fep->scc.sccp = of_iomap(ofdev->dev.of_node, 0);
diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
index 6663c1768089..dbc00f759212 100644
--- a/drivers/net/ethernet/freescale/ucc_geth.c
+++ b/drivers/net/ethernet/freescale/ucc_geth.c
@@ -3560,7 +3560,7 @@ static int ucc_geth_probe(struct platform_device* ofdev)
struct net_device *dev = NULL;
struct ucc_geth_private *ugeth = NULL;
struct ucc_geth_info *ug_info;
- struct resource res;
+ struct resource *res;
int err, ucc_num, max_speed = 0;
const unsigned int *prop;
phy_interface_t phy_interface;
@@ -3605,12 +3605,12 @@ static int ucc_geth_probe(struct platform_device* ofdev)
if (err)
return err;
- err = of_address_to_resource(np, 0, &res);
- if (err)
- return err;
+ res = platform_get_resource(ofdev, 0, IORESOURCE_MEM);
+ if (!res)
+ return -ENODEV;
- ug_info->uf_info.regs = res.start;
- ug_info->uf_info.irq = irq_of_parse_and_map(np, 0);
+ ug_info->uf_info.regs = res->start;
+ ug_info->uf_info.irq = platform_get_irq(ofdev, 0);
ug_info->phy_node = of_parse_phandle(np, "phy-handle", 0);
if (!ug_info->phy_node && of_phy_is_fixed_link(np)) {
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index 7bb781fb93b5..8ef9c73735c2 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -5511,8 +5511,8 @@ static int mvneta_probe(struct platform_device *pdev)
pp->neta_ac5 = true;
}
- dev->irq = irq_of_parse_and_map(dn, 0);
- if (dev->irq == 0)
+ dev->irq = platform_get_irq(pdev, 0);
+ if (dev->irq < 0)
return -EINVAL;
pp->clk = devm_clk_get(&pdev->dev, "core");
diff --git a/drivers/net/ethernet/moxa/moxart_ether.c b/drivers/net/ethernet/moxa/moxart_ether.c
index 8bd60168624a..7fca8a05f755 100644
--- a/drivers/net/ethernet/moxa/moxart_ether.c
+++ b/drivers/net/ethernet/moxa/moxart_ether.c
@@ -454,7 +454,6 @@ static const struct net_device_ops moxart_netdev_ops = {
static int moxart_mac_probe(struct platform_device *pdev)
{
struct device *p_dev = &pdev->dev;
- struct device_node *node = p_dev->of_node;
struct net_device *ndev;
struct moxart_mac_priv_t *priv;
struct resource *res;
@@ -465,9 +464,8 @@ static int moxart_mac_probe(struct platform_device *pdev)
if (!ndev)
return -ENOMEM;
- irq = irq_of_parse_and_map(node, 0);
- if (irq <= 0) {
- netdev_err(ndev, "irq_of_parse_and_map failed\n");
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0) {
ret = -EINVAL;
goto irq_map_fail;
}
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_platform.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_platform.c
index 2eccc7617507..54faa01f4e31 100644
--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_platform.c
+++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_platform.c
@@ -111,37 +111,29 @@ static int sxgbe_platform_probe(struct platform_device *pdev)
}
/* Get the SXGBE common INT information */
- priv->irq = irq_of_parse_and_map(node, 0);
- if (priv->irq <= 0) {
- dev_err(dev, "sxgbe common irq parsing failed\n");
+ priv->irq = platform_get_irq(pdev, 0);
+ if (priv->irq < 0)
goto err_drv_remove;
- }
/* Get MAC address if available (DT) */
of_get_ethdev_address(node, priv->dev);
/* Get the TX/RX IRQ numbers */
for (i = 0, chan = 1; i < SXGBE_TX_QUEUES; i++) {
- priv->txq[i]->irq_no = irq_of_parse_and_map(node, chan++);
- if (priv->txq[i]->irq_no <= 0) {
- dev_err(dev, "sxgbe tx irq parsing failed\n");
+ priv->txq[i]->irq_no = platform_get_irq(pdev, chan++);
+ if (priv->txq[i]->irq_no < 0)
goto err_tx_irq_unmap;
- }
}
for (i = 0; i < SXGBE_RX_QUEUES; i++) {
- priv->rxq[i]->irq_no = irq_of_parse_and_map(node, chan++);
- if (priv->rxq[i]->irq_no <= 0) {
- dev_err(dev, "sxgbe rx irq parsing failed\n");
+ priv->rxq[i]->irq_no = platform_get_irq(pdev, chan++);
+ if (priv->rxq[i]->irq_no < 0)
goto err_rx_irq_unmap;
- }
}
- priv->lpi_irq = irq_of_parse_and_map(node, chan);
- if (priv->lpi_irq <= 0) {
- dev_err(dev, "sxgbe lpi irq parsing failed\n");
+ priv->lpi_irq = platform_get_irq(pdev, chan);
+ if (priv->lpi_irq < 0)
goto err_rx_irq_unmap;
- }
platform_set_drvdata(pdev, priv->dev);
diff --git a/drivers/net/ethernet/via/via-rhine.c b/drivers/net/ethernet/via/via-rhine.c
index 894911f3d560..95e5437b16b4 100644
--- a/drivers/net/ethernet/via/via-rhine.c
+++ b/drivers/net/ethernet/via/via-rhine.c
@@ -1127,8 +1127,8 @@ static int rhine_init_one_platform(struct platform_device *pdev)
if (IS_ERR(ioaddr))
return PTR_ERR(ioaddr);
- irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
- if (!irq)
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0)
return -EINVAL;
return rhine_init_one_common(&pdev->dev, *quirks,
diff --git a/drivers/net/ethernet/via/via-velocity.c b/drivers/net/ethernet/via/via-velocity.c
index 72271a51d0e7..16cf7db41c54 100644
--- a/drivers/net/ethernet/via/via-velocity.c
+++ b/drivers/net/ethernet/via/via-velocity.c
@@ -2950,8 +2950,8 @@ static int velocity_platform_probe(struct platform_device *pdev)
if (!info)
return -EINVAL;
- irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
- if (!irq)
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0)
return -EINVAL;
return velocity_probe(&pdev->dev, irq, info, BUS_PLATFORM);
diff --git a/drivers/net/ethernet/xilinx/ll_temac_mdio.c b/drivers/net/ethernet/xilinx/ll_temac_mdio.c
index 07a9fb49eda1..4bc5d47ecb7e 100644
--- a/drivers/net/ethernet/xilinx/ll_temac_mdio.c
+++ b/drivers/net/ethernet/xilinx/ll_temac_mdio.c
@@ -69,7 +69,7 @@ int temac_mdio_setup(struct temac_local *lp, struct platform_device *pdev)
u32 bus_hz;
int clk_div;
int rc;
- struct resource res;
+ struct resource *res;
/* Get MDIO bus frequency (if specified) */
bus_hz = 0;
@@ -98,9 +98,9 @@ int temac_mdio_setup(struct temac_local *lp, struct platform_device *pdev)
return -ENOMEM;
if (np) {
- of_address_to_resource(np, 0, &res);
+ res = platform_get_resource(pdev, 0, IORESOURCE_MEM);
snprintf(bus->id, MII_BUS_ID_SIZE, "%.8llx",
- (unsigned long long)res.start);
+ (unsigned long long)res->start);
} else if (pdata) {
snprintf(bus->id, MII_BUS_ID_SIZE, "%.8llx",
pdata->mdio_bus_id);
diff --git a/drivers/net/mdio/mdio-mux-mmioreg.c b/drivers/net/mdio/mdio-mux-mmioreg.c
index 9c4b1efd0d53..b5a65a1ab406 100644
--- a/drivers/net/mdio/mdio-mux-mmioreg.c
+++ b/drivers/net/mdio/mdio-mux-mmioreg.c
@@ -98,7 +98,7 @@ static int mdio_mux_mmioreg_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
struct mdio_mux_mmioreg_state *s;
- struct resource res;
+ struct resource *res;
const __be32 *iprop;
int len, ret;
@@ -108,13 +108,15 @@ static int mdio_mux_mmioreg_probe(struct platform_device *pdev)
if (!s)
return -ENOMEM;
- ret = of_address_to_resource(np, 0, &res);
- if (ret)
- return dev_err_probe(&pdev->dev, ret,
- "could not obtain memory map for node %pOF\n", np);
- s->phys = res.start;
+ res = platform_get_resource(pdev, 0, IORESOURCE_MEM);
+ if (!res) {
+ dev_err(&pdev->dev,
+ "could not obtain memory map for node %pOF\n", np);
+ return -ENODEV;
+ }
+ s->phys = res->start;
- s->iosize = resource_size(&res);
+ s->iosize = resource_size(res);
if (s->iosize != sizeof(uint8_t) &&
s->iosize != sizeof(uint16_t) &&
s->iosize != sizeof(uint32_t))
diff --git a/drivers/net/wan/fsl_ucc_hdlc.c b/drivers/net/wan/fsl_ucc_hdlc.c
index f999798a5612..414a9d22da5e 100644
--- a/drivers/net/wan/fsl_ucc_hdlc.c
+++ b/drivers/net/wan/fsl_ucc_hdlc.c
@@ -1118,7 +1118,7 @@ static int ucc_hdlc_probe(struct platform_device *pdev)
struct ucc_hdlc_private *uhdlc_priv = NULL;
struct ucc_tdm_info *ut_info;
struct ucc_tdm *utdm = NULL;
- struct resource res;
+ struct resource *res;
struct net_device *dev;
hdlc_device *hdlc;
int ucc_num;
@@ -1170,12 +1170,12 @@ static int ucc_hdlc_probe(struct platform_device *pdev)
return -EINVAL;
}
- ret = of_address_to_resource(np, 0, &res);
- if (ret)
+ res = platform_get_resource(pdev, 0, IORESOURCE_MEM);
+ if (!res)
return -EINVAL;
- ut_info->uf_info.regs = res.start;
- ut_info->uf_info.irq = irq_of_parse_and_map(np, 0);
+ ut_info->uf_info.regs = res->start;
+ ut_info->uf_info.irq = platform_get_irq(pdev, 0);
uhdlc_priv = kzalloc(sizeof(*uhdlc_priv), GFP_KERNEL);
if (!uhdlc_priv)
--
2.47.0
next reply other threads:[~2024-11-12 21:16 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-12 21:14 Rosen Penev [this message]
2024-11-12 21:42 ` [PATCHv3 net-next] net: modernize IRQ resource acquisition Florian Fainelli
2024-11-13 1:23 ` Jakub Kicinski
2024-11-13 7:14 ` Marc Kleine-Budde
2024-11-13 9:48 ` Julian Calaby
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241112211442.7205-1-rosenp@gmail.com \
--to=rosenp@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=bh74.an@samsung.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=hkallweit1@gmail.com \
--cc=jernej.skrabec@gmail.com \
--cc=kevinbrace@bracecomputerlab.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sunxi@lists.linux.dev \
--cc=linux@armlinux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mailhol.vincent@wanadoo.fr \
--cc=marcin.s.wojtas@gmail.com \
--cc=michal.simek@amd.com \
--cc=mkl@pengutronix.de \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=pantelis.antoniou@gmail.com \
--cc=qiang.zhao@nxp.com \
--cc=romieu@fr.zoreil.com \
--cc=samuel@sholland.org \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.