[PATCH net-next] net: mdio: mscc-miim: Use devm_platform_get_and_ioremap_resource()

Subsystems: ethernet phy library, networking drivers, the rest

STALE1891d

4 messages, 2 authors, 2021-06-11 · open the first message on its own page

[PATCH net-next] net: mdio: mscc-miim: Use devm_platform_get_and_ioremap_resource()

From: Yang Yingliang <hidden>
Date: 2021-06-10 09:07:58

Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <redacted>
---
 drivers/net/mdio/mdio-mscc-miim.c | 17 +++++------------
 1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/drivers/net/mdio/mdio-mscc-miim.c b/drivers/net/mdio/mdio-mscc-miim.c
index b36e5ea04ddf..b8491efbd330 100644
--- a/drivers/net/mdio/mdio-mscc-miim.c
+++ b/drivers/net/mdio/mdio-mscc-miim.c
@@ -139,10 +139,6 @@ static int mscc_miim_probe(struct platform_device *pdev)
 	struct mscc_miim_dev *dev;
 	int ret;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res)
-		return -ENODEV;
-
 	bus = devm_mdiobus_alloc_size(&pdev->dev, sizeof(*dev));
 	if (!bus)
 		return -ENOMEM;
@@ -155,19 +151,16 @@ static int mscc_miim_probe(struct platform_device *pdev)
 	bus->parent = &pdev->dev;
 
 	dev = bus->priv;
-	dev->regs = devm_ioremap_resource(&pdev->dev, res);
+	dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
 	if (IS_ERR(dev->regs)) {
 		dev_err(&pdev->dev, "Unable to map MIIM registers\n");
 		return PTR_ERR(dev->regs);
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (res) {
-		dev->phy_regs = devm_ioremap_resource(&pdev->dev, res);
-		if (IS_ERR(dev->phy_regs)) {
-			dev_err(&pdev->dev, "Unable to map internal phy registers\n");
-			return PTR_ERR(dev->phy_regs);
-		}
+	dev->phy_regs = devm_platform_get_and_ioremap_resource(pdev, 1, &res);
+	if (res && IS_ERR(dev->phy_regs)) {
+		dev_err(&pdev->dev, "Unable to map internal phy registers\n");
+		return PTR_ERR(dev->phy_regs);
 	}
 
 	ret = of_mdiobus_register(bus, pdev->dev.of_node);
-- 
2.25.1

Re: [PATCH net-next] net: mdio: mscc-miim: Use devm_platform_get_and_ioremap_resource()

From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-06-10 16:01:34

-	dev->regs = devm_ioremap_resource(&pdev->dev, res);
+	dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
 	if (IS_ERR(dev->regs)) {
Here, only dev->regs is considered.
 		dev_err(&pdev->dev, "Unable to map MIIM registers\n");
 		return PTR_ERR(dev->regs);
 	}

+	dev->phy_regs = devm_platform_get_and_ioremap_resource(pdev, 1, &res);
+	if (res && IS_ERR(dev->phy_regs)) {
Here you look at both res and dev->phy_regs.

This seems inconsistent. Can devm_platform_get_and_ioremap_resource()
return success despite res being NULL?

       Andrew

Re: [PATCH net-next] net: mdio: mscc-miim: Use devm_platform_get_and_ioremap_resource()

From: Yang Yingliang <hidden>
Date: 2021-06-11 01:35:13

Hi,

On 2021/6/11 0:01, Andrew Lunn wrote:
quoted
-	dev->regs = devm_ioremap_resource(&pdev->dev, res);
+	dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
  	if (IS_ERR(dev->regs)) {
Here, only dev->regs is considered.
quoted
  		dev_err(&pdev->dev, "Unable to map MIIM registers\n");
  		return PTR_ERR(dev->regs);
  	}
quoted
+	dev->phy_regs = devm_platform_get_and_ioremap_resource(pdev, 1, &res);
+	if (res && IS_ERR(dev->phy_regs)) {
Here you look at both res and dev->phy_regs.

This seems inconsistent. Can devm_platform_get_and_ioremap_resource()
return success despite res being NULL?
No, if res is NULL, devm_platform_get_and_ioremap_resource() returns failed.
But, before this patch, if the internal phy res is NULL, it doesn't 
return error
code, so I checked the res to make sure it doesn't change the origin 
code logic.

Thanks,
Yang
        Andrew
.

Re: [PATCH net-next] net: mdio: mscc-miim: Use devm_platform_get_and_ioremap_resource()

From: Andrew Lunn <andrew@lunn.ch>
Date: 2021-06-11 03:35:27

On Fri, Jun 11, 2021 at 09:35:04AM +0800, Yang Yingliang wrote:
Hi,

On 2021/6/11 0:01, Andrew Lunn wrote:
quoted
quoted
-	dev->regs = devm_ioremap_resource(&pdev->dev, res);
+	dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
  	if (IS_ERR(dev->regs)) {
Here, only dev->regs is considered.
quoted
  		dev_err(&pdev->dev, "Unable to map MIIM registers\n");
  		return PTR_ERR(dev->regs);
  	}
quoted
+	dev->phy_regs = devm_platform_get_and_ioremap_resource(pdev, 1, &res);
+	if (res && IS_ERR(dev->phy_regs)) {
Here you look at both res and dev->phy_regs.

This seems inconsistent. Can devm_platform_get_and_ioremap_resource()
return success despite res being NULL?
No, if res is NULL, devm_platform_get_and_ioremap_resource() returns failed.
But, before this patch, if the internal phy res is NULL, it doesn't return
error
code, so I checked the res to make sure it doesn't change the origin code
logic.
O.K, so IORESOURCE_MEM, 1 is optional. By making this change, i think
you have made this less clear. So i would say it is O.K. to change the
first platform_get_resource(pdev, IORESOURCE_MEM, 0) and
devm_ioremap_resource(&pdev->dev, res) to one call, but i would leave
the second pair alone.

    Andrew
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help