net: simplify resource acquisition + ioremap
authorRosen Penev <rosenp@gmail.com>
Tue, 3 Dec 2024 23:13:37 +0000 (15:13 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 7 Dec 2024 01:28:34 +0000 (17:28 -0800)
get resource + request_mem_region + ioremap can all be done by a single
function.

Replace them with devm_platform_get_and_ioremap_resource or\
devm_platform_ioremap_resource where res is not used.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> # sja1000_platform.c
Link: https://patch.msgid.link/20241203231337.182391-1-rosenp@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/can/sja1000/sja1000_platform.c
drivers/net/ethernet/freescale/fman/fman.c
drivers/net/ethernet/lantiq_etop.c
drivers/net/mdio/mdio-octeon.c

index c42ebe9da55abc780891c7b7cb37c7527b22b7e9..2d555f854008b355a7e89ad1b45efc65f94350b8 100644 (file)
@@ -230,18 +230,9 @@ static int sp_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res_mem)
-               return -ENODEV;
-
-       if (!devm_request_mem_region(&pdev->dev, res_mem->start,
-                                    resource_size(res_mem), DRV_NAME))
-               return -EBUSY;
-
-       addr = devm_ioremap(&pdev->dev, res_mem->start,
-                                   resource_size(res_mem));
-       if (!addr)
-               return -ENOMEM;
+       addr = devm_platform_get_and_ioremap_resource(pdev, 0, &res_mem);
+       if (IS_ERR(addr))
+               return PTR_ERR(addr);
 
        if (of) {
                irq = platform_get_irq(pdev, 0);
index fb416d60dcd7276a97b9e9b6193f886d3580195a..11887458f050cef082d5609d0ed13b99c86669c3 100644 (file)
@@ -2690,13 +2690,12 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
 {
        struct fman *fman;
        struct device_node *fm_node, *muram_node;
+       void __iomem *base_addr;
        struct resource *res;
        u32 val, range[2];
        int err, irq;
        struct clk *clk;
        u32 clk_rate;
-       phys_addr_t phys_base_addr;
-       resource_size_t mem_size;
 
        fman = kzalloc(sizeof(*fman), GFP_KERNEL);
        if (!fman)
@@ -2724,18 +2723,6 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
                goto fman_node_put;
        fman->dts_params.err_irq = err;
 
-       /* Get the FM address */
-       res = platform_get_resource(of_dev, IORESOURCE_MEM, 0);
-       if (!res) {
-               err = -EINVAL;
-               dev_err(&of_dev->dev, "%s: Can't get FMan memory resource\n",
-                       __func__);
-               goto fman_node_put;
-       }
-
-       phys_base_addr = res->start;
-       mem_size = resource_size(res);
-
        clk = of_clk_get(fm_node, 0);
        if (IS_ERR(clk)) {
                err = PTR_ERR(clk);
@@ -2803,24 +2790,16 @@ static struct fman *read_dts_node(struct platform_device *of_dev)
                }
        }
 
-       fman->dts_params.res =
-               devm_request_mem_region(&of_dev->dev, phys_base_addr,
-                                       mem_size, "fman");
-       if (!fman->dts_params.res) {
-               err = -EBUSY;
-               dev_err(&of_dev->dev, "%s: request_mem_region() failed\n",
-                       __func__);
-               goto fman_free;
-       }
-
-       fman->dts_params.base_addr =
-               devm_ioremap(&of_dev->dev, phys_base_addr, mem_size);
-       if (!fman->dts_params.base_addr) {
-               err = -ENOMEM;
+       base_addr = devm_platform_get_and_ioremap_resource(of_dev, 0, &res);
+       if (IS_ERR(base_addr)) {
+               err = PTR_ERR(base_addr);
                dev_err(&of_dev->dev, "%s: devm_ioremap() failed\n", __func__);
                goto fman_free;
        }
 
+       fman->dts_params.base_addr = base_addr;
+       fman->dts_params.res = res;
+
        fman->dev = &of_dev->dev;
 
        err = of_platform_populate(fm_node, NULL, NULL, &of_dev->dev);
index 660dff5426e7f04dff5e77f064b989752f5a9a4e..83ce3bfefa5c2e8c2cb0b78c911d47c6d561c2f1 100644 (file)
@@ -90,7 +90,6 @@ struct ltq_etop_priv {
        struct net_device *netdev;
        struct platform_device *pdev;
        struct ltq_eth_data *pldata;
-       struct resource *res;
 
        struct mii_bus *mii_bus;
 
@@ -643,31 +642,14 @@ ltq_etop_probe(struct platform_device *pdev)
 {
        struct net_device *dev;
        struct ltq_etop_priv *priv;
-       struct resource *res;
        int err;
        int i;
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(&pdev->dev, "failed to get etop resource\n");
-               err = -ENOENT;
-               goto err_out;
-       }
-
-       res = devm_request_mem_region(&pdev->dev, res->start,
-                                     resource_size(res), dev_name(&pdev->dev));
-       if (!res) {
-               dev_err(&pdev->dev, "failed to request etop resource\n");
-               err = -EBUSY;
-               goto err_out;
-       }
-
-       ltq_etop_membase = devm_ioremap(&pdev->dev, res->start,
-                                       resource_size(res));
-       if (!ltq_etop_membase) {
+       ltq_etop_membase = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(ltq_etop_membase)) {
                dev_err(&pdev->dev, "failed to remap etop engine %d\n",
                        pdev->id);
-               err = -ENOMEM;
+               err = PTR_ERR(ltq_etop_membase);
                goto err_out;
        }
 
@@ -679,7 +661,6 @@ ltq_etop_probe(struct platform_device *pdev)
        dev->netdev_ops = &ltq_eth_netdev_ops;
        dev->ethtool_ops = &ltq_etop_ethtool_ops;
        priv = netdev_priv(dev);
-       priv->res = res;
        priv->pdev = pdev;
        priv->pldata = dev_get_platdata(&pdev->dev);
        priv->netdev = dev;
index 2beb83154d39c76657ac9201115b5b587b4a8d82..cb53dccbde1a3cb61d7458eaa9e91e22a998a4c1 100644 (file)
@@ -17,37 +17,20 @@ static int octeon_mdiobus_probe(struct platform_device *pdev)
 {
        struct cavium_mdiobus *bus;
        struct mii_bus *mii_bus;
-       struct resource *res_mem;
-       resource_size_t mdio_phys;
-       resource_size_t regsize;
        union cvmx_smix_en smi_en;
-       int err = -ENOENT;
+       int err;
 
        mii_bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*bus));
        if (!mii_bus)
                return -ENOMEM;
 
-       res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (res_mem == NULL) {
-               dev_err(&pdev->dev, "found no memory resource\n");
-               return -ENXIO;
-       }
-
        bus = mii_bus->priv;
        bus->mii_bus = mii_bus;
-       mdio_phys = res_mem->start;
-       regsize = resource_size(res_mem);
 
-       if (!devm_request_mem_region(&pdev->dev, mdio_phys, regsize,
-                                    res_mem->name)) {
-               dev_err(&pdev->dev, "request_mem_region failed\n");
-               return -ENXIO;
-       }
-
-       bus->register_base = devm_ioremap(&pdev->dev, mdio_phys, regsize);
-       if (!bus->register_base) {
+       bus->register_base = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(bus->register_base)) {
                dev_err(&pdev->dev, "dev_ioremap failed\n");
-               return -ENOMEM;
+               return PTR_ERR(bus->register_base);
        }
 
        smi_en.u64 = 0;