Message ID | 20241203221644.136104-2-rosenp@gmail.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | simplify with devm | expand |
On 03.12.2024 23:16, Rosen Penev wrote: > There's no need to get the of_node explicitly. platform_get_resource > already does this. > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > --- > drivers/net/mdio/mdio-ipq8064.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c > index 6253a9ab8b69..e3d311ce3810 100644 > --- a/drivers/net/mdio/mdio-ipq8064.c > +++ b/drivers/net/mdio/mdio-ipq8064.c > @@ -111,15 +111,16 @@ ipq8064_mdio_probe(struct platform_device *pdev) > { > struct device_node *np = pdev->dev.of_node; > struct ipq8064_mdio *priv; > - struct resource res; > + struct resource *res; > struct mii_bus *bus; > void __iomem *base; > int ret; > > - if (of_address_to_resource(np, 0, &res)) > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!res) > return -ENOMEM; > > - base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); > + base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); > if (!base) > return -ENOMEM; > Why not directly switching to devm_platform_get_and_ioremap_resource()?
On Tue, Dec 3, 2024 at 2:27 PM Heiner Kallweit <hkallweit1@gmail.com> wrote: > > On 03.12.2024 23:16, Rosen Penev wrote: > > There's no need to get the of_node explicitly. platform_get_resource > > already does this. > > > > Signed-off-by: Rosen Penev <rosenp@gmail.com> > > --- > > drivers/net/mdio/mdio-ipq8064.c | 7 ++++--- > > 1 file changed, 4 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c > > index 6253a9ab8b69..e3d311ce3810 100644 > > --- a/drivers/net/mdio/mdio-ipq8064.c > > +++ b/drivers/net/mdio/mdio-ipq8064.c > > @@ -111,15 +111,16 @@ ipq8064_mdio_probe(struct platform_device *pdev) > > { > > struct device_node *np = pdev->dev.of_node; > > struct ipq8064_mdio *priv; > > - struct resource res; > > + struct resource *res; > > struct mii_bus *bus; > > void __iomem *base; > > int ret; > > > > - if (of_address_to_resource(np, 0, &res)) > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > + if (!res) > > return -ENOMEM; > > > > - base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); > > + base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); > > if (!base) > > return -ENOMEM; > > > > Why not directly switching to devm_platform_get_and_ioremap_resource()? Because that is not the same. devm_platform_get_and_ioremap_resource is platform_get_resource + request_memory_region + ioremap The issue here is the second. This driver (well, platform really) uses overlapping memory regions and so request_memory_region will fail.
diff --git a/drivers/net/mdio/mdio-ipq8064.c b/drivers/net/mdio/mdio-ipq8064.c index 6253a9ab8b69..e3d311ce3810 100644 --- a/drivers/net/mdio/mdio-ipq8064.c +++ b/drivers/net/mdio/mdio-ipq8064.c @@ -111,15 +111,16 @@ ipq8064_mdio_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct ipq8064_mdio *priv; - struct resource res; + struct resource *res; struct mii_bus *bus; void __iomem *base; int ret; - if (of_address_to_resource(np, 0, &res)) + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) return -ENOMEM; - base = devm_ioremap(&pdev->dev, res.start, resource_size(&res)); + base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); if (!base) return -ENOMEM;
There's no need to get the of_node explicitly. platform_get_resource already does this. Signed-off-by: Rosen Penev <rosenp@gmail.com> --- drivers/net/mdio/mdio-ipq8064.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)